[PATCH v3] generic/401: fix test in case of no filetype support

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



Xu Huan reported that this test fails on nfs in some setup.
Apparently, the assumptions made about xfs/ext* do not hold
for nfs.

Relax the verification of filetype not supported case to
allow either DT_UNKNOWN or actual file type on all files and
not only on special dir entires "." and "..".

Convert the unknown d_type replacement code from awk to bash
so it is a bit more readable and flexible.

Reported-by: Xu Huan <xuhuan.fnst@xxxxxxxxxxxxxx>
Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx>
---

Xu,

Please check if this patch fixes your problem.
I prefer to keep the test coverage of unsupported case.

I tested with xfs/ext4 with/without filetype support.

Thanks,
Amir.

 tests/generic/401 | 42 ++++++++++++++++++++----------------------
 1 file changed, 20 insertions(+), 22 deletions(-)

diff --git a/tests/generic/401 b/tests/generic/401
index 74f2bea..34ce76e 100755
--- a/tests/generic/401
+++ b/tests/generic/401
@@ -4,14 +4,13 @@
 # Test filetype feature
 #
 # This test does NOT require that file system support the d_type feature.
-# It verifies that either all file types are reported as DT_UNKNOWN
-# or all file types are reported correctly.
+# It verifies that file types are reported as either DT_UNKNOWN or as
+# the actual file type. For example, special dir entries . and .. MAY be
+# reported as DT_UNKNOWN IF filetype feature is disabled (ext4), but MAY
+# also be reported as DT_DIR in this case (xfs).
 #
 # For fs for which we know how to test the filetype feature (xfs|ext*)
 # verify getting DT_UNKNOWN IFF feature is disabled.
-# Special dir entries . and .. MAY be reported as DT_UNKNOWN IF filetype
-# feature is disabled (ext4), but MAY also be reported as DT_DIR in this
-# case (xfs).
 #
 #-----------------------------------------------------------------------
 #
@@ -73,23 +72,22 @@ mknod $testdir/c c 1 1
 mknod $testdir/b b 1 1
 mknod $testdir/p p
 
-# Test d_type of . and ..
-# it must be DT_DIR on fs with filetype support and it could be
-# either DR_DIR or DT_UNKNOWN on fs without filetype support
-src/t_dir_type $testdir d | grep -F '.' | sort
-
-# Test that either all file types are unknown or all are correct
-if _supports_filetype $SCRATCH_MNT; then
-	# print real file types
-	src/t_dir_type $testdir | grep -vF '.' | sort
-else
-	# print fake dir file type for . and .. if they are DT_UNKNOWN
-	src/t_dir_type $testdir u | grep -F '.' | \
-		awk '{ print $1, "d" }' | sort
-	# list unknown files and print filename as fake file type
-	src/t_dir_type $testdir u | grep -vF '.' | \
-		awk '{ print $1, $1 }' | sort
-fi
+# Test d_type of test files - it must be the actual file type on fs
+# with filetype support and it could be either the actual file type
+# or DT_UNKNOWN on fs without filetype support
+ftype=
+_supports_filetype $SCRATCH_MNT && ftype=1
+src/t_dir_type $testdir | \
+while read name type; do
+	if [ "$ftype" != 1 -a "$type" = u ]; then
+		if [ "$name" = "." -o "$name" = ".." ]; then
+			type=d
+		else
+			type=$name
+		fi
+	fi
+	echo $name $type
+done | sort
 
 status=0
 exit
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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