Re: [PATCH 2/2] open_by_handle: add a test for connectable file handles

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



On Wed, Apr 09, 2025 at 01:52:20PM +0200, Amir Goldstein wrote:
> This is a variant of generic/477 with connectable file handles.
> This test uses load and store of file handles from a temp file to test
> decoding connectable file handles after cycle mount and after renames.
> Decoding connectable file handles after being moved to a new parent
> is expected to fail.
> 
> Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx>
> ---

Hi Amir,

This test case fails on some filesystems, e.g. nfs [1] and tmpfs [2].
Is this as your expected?

Thanks,
Zorro

[1]
generic/777 fails on nfs:

--- /dev/fd/63	2025-05-07 02:44:24.150560533 -0400
+++ generic/777.out.bad	2025-05-07 02:44:23.999734558 -0400
@@ -1,7 +1,37 @@
 QA output created by 777
 test_file_handles after cycle mount
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000000) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000001) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000002) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000003) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000004) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000005) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000006) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000007) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000008) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000009) returned 116 incorrectly on a linked file!
 test_file_handles after rename parent
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000000) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000001) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000002) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000003) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000004) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000005) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000006) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000007) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000008) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000009) returned 116 incorrectly on a linked file!
 test_file_handles after rename grandparent
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000000) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000001) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000002) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000003) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000004) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000005) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000006) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000007) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000008) returned 116 incorrectly on a linked file!
+open_by_handle(/mnt/fstests/TEST_DIR/nfs-client/file000009) returned 116 incorrectly on a linked file!
 test_file_handles after move to new parent
 open_by_handle(TEST_DIR/file000000) returned 116 incorrectly on a linked file!
 open_by_handle(TEST_DIR/file000001) returned 116 incorrectly on a linked file!

[2]
generic/777 fails on tmpfs:

--- /dev/fd/63	2025-05-07 07:53:26.265453903 -0400
+++ generic/777.out.bad	2025-05-07 07:53:25.536434660 -0400
@@ -3,13 +3,3 @@
 test_file_handles after rename parent
 test_file_handles after rename grandparent
 test_file_handles after move to new parent
-open_by_handle(TEST_DIR/file000000) returned 116 incorrectly on a linked file!
-open_by_handle(TEST_DIR/file000001) returned 116 incorrectly on a linked file!
-open_by_handle(TEST_DIR/file000002) returned 116 incorrectly on a linked file!
-open_by_handle(TEST_DIR/file000003) returned 116 incorrectly on a linked file!
-open_by_handle(TEST_DIR/file000004) returned 116 incorrectly on a linked file!
-open_by_handle(TEST_DIR/file000005) returned 116 incorrectly on a linked file!
-open_by_handle(TEST_DIR/file000006) returned 116 incorrectly on a linked file!
-open_by_handle(TEST_DIR/file000007) returned 116 incorrectly on a linked file!
-open_by_handle(TEST_DIR/file000008) returned 116 incorrectly on a linked file!
-open_by_handle(TEST_DIR/file000009) returned 116 incorrectly on a linked file!


>  tests/generic/777     | 79 +++++++++++++++++++++++++++++++++++++++++++
>  tests/generic/777.out | 15 ++++++++
>  2 files changed, 94 insertions(+)
>  create mode 100755 tests/generic/777
>  create mode 100644 tests/generic/777.out
> 
> diff --git a/tests/generic/777 b/tests/generic/777
> new file mode 100755
> index 00000000..52a461c3
> --- /dev/null
> +++ b/tests/generic/777
> @@ -0,0 +1,79 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (C) 2018-2025 CTERA Networks. All Rights Reserved.
> +#
> +# FS QA Test No. 777
> +#
> +# Check open by connectable file handle after cycle mount.
> +#
> +# This is a variant of test 477 with connectable file handles.
> +# This test uses load and store of file handles from a temp file to test
> +# decoding file handles after cycle mount and after directory renames.
> +# Decoding connectable file handles after being moved to a new parent
> +# is expected to fail.
> +#
> +. ./common/preamble
> +_begin_fstest auto quick exportfs
> +
> +# Import common functions.
> +. ./common/filter
> +
> +
> +# Modify as appropriate.
> +_require_test
> +# Require connectable file handles support
> +_require_open_by_handle -N
> +
> +NUMFILES=10
> +testroot=$TEST_DIR/$seq-dir
> +testdir=$testroot/testdir
> +
> +# Create test dir and test files, encode connectable file handles and store to tmp file
> +create_test_files()
> +{
> +	rm -rf $testdir
> +	mkdir -p $testdir
> +	$here/src/open_by_handle -N -cwp -o $tmp.handles_file $testdir $NUMFILES
> +}
> +
> +# Decode connectable file handles loaded from tmp file
> +test_file_handles()
> +{
> +	local opt=$1
> +	local when=$2
> +
> +	echo test_file_handles after $when
> +	$here/src/open_by_handle $opt -i $tmp.handles_file $TEST_DIR $NUMFILES
> +}
> +
> +# Decode file handles of files/dir after cycle mount
> +create_test_files
> +_test_cycle_mount
> +test_file_handles -rp "cycle mount"
> +
> +# Decode file handles of files/dir after rename of parent and cycle mount
> +create_test_files $testdir
> +rm -rf $testdir.renamed
> +mv $testdir $testdir.renamed/
> +_test_cycle_mount
> +test_file_handles -rp "rename parent"
> +
> +# Decode file handles of files/dir after rename of grandparent and cycle mount
> +create_test_files $testdir
> +rm -rf $testroot.renamed
> +mv $testroot $testroot.renamed/
> +_test_cycle_mount
> +test_file_handles -rp "rename grandparent"
> +
> +# Decode file handles of files/dir after move to new parent and cycle mount
> +# This is expected to fail because the conectable file handle encodes the
> +# old parent.
> +create_test_files $testdir
> +rm -rf $testdir.new
> +mkdir -p $testdir.new
> +mv $testdir/* $testdir.new/
> +_test_cycle_mount
> +test_file_handles -r "move to new parent" | _filter_test_dir
> +
> +status=0
> +exit
> diff --git a/tests/generic/777.out b/tests/generic/777.out
> new file mode 100644
> index 00000000..648c480c
> --- /dev/null
> +++ b/tests/generic/777.out
> @@ -0,0 +1,15 @@
> +QA output created by 777
> +test_file_handles after cycle mount
> +test_file_handles after rename parent
> +test_file_handles after rename grandparent
> +test_file_handles after move to new parent
> +open_by_handle(TEST_DIR/file000000) returned 116 incorrectly on a linked file!
> +open_by_handle(TEST_DIR/file000001) returned 116 incorrectly on a linked file!
> +open_by_handle(TEST_DIR/file000002) returned 116 incorrectly on a linked file!
> +open_by_handle(TEST_DIR/file000003) returned 116 incorrectly on a linked file!
> +open_by_handle(TEST_DIR/file000004) returned 116 incorrectly on a linked file!
> +open_by_handle(TEST_DIR/file000005) returned 116 incorrectly on a linked file!
> +open_by_handle(TEST_DIR/file000006) returned 116 incorrectly on a linked file!
> +open_by_handle(TEST_DIR/file000007) returned 116 incorrectly on a linked file!
> +open_by_handle(TEST_DIR/file000008) returned 116 incorrectly on a linked file!
> +open_by_handle(TEST_DIR/file000009) returned 116 incorrectly on a linked file!
> -- 
> 2.34.1
> 





[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux