[PATCH 5/8] generic/772: actually check for file_getattr special file support

Darrick J. Wong
2025-10-15T16:38:01Z

From: Darrick J. Wong <djwong@kernel.org>

On XFS in 6.17, this test fails with:

--- /run/fstests/bin/tests/generic/772.out 2025-10-06 08:27:10.834318149 -0700
+++ /var/tmp/fstests/generic/772.out.bad 2025-10-08 18:00:34.713388178 -0700
@@ -9,29 +9,34 @@ Can not get fsxattr on ./foo: Invalid ar
Can not set fsxattr on ./foo: Invalid argument
Initial attributes state
----------------- SCRATCH_MNT/prj
------------------ ./fifo
------------------ ./chardev
------------------ ./blockdev
------------------ ./socket
------------------ ./foo
------------------ ./symlink
+Can not get fsxattr on ./fifo: Inappropriate ioctl for device
+Can not get fsxattr on ./chardev: Inappropriate ioctl for device
+Can not get fsxattr on ./blockdev: Inappropriate ioctl for device
+Can not get fsxattr on ./socket: Inappropriate ioctl for device

This is a result of XFS' file_getattr implementation rejecting special
files prior to 6.18. Therefore, skip this new test on old kernels.

Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
tests/generic/772 | 3 +++
tests/xfs/648 | 3 +++
2 files changed, 6 insertions(+)

diff --git a/tests/generic/772 b/tests/generic/772
index cc1a1bb5bf655c..e68a6724654450 100755
--- a/tests/generic/772
+++ b/tests/generic/772
@@ -43,6 +43,9 @@ touch $projectdir/bar
ln -s $projectdir/bar $projectdir/broken-symlink
rm -f $projectdir/bar

+file_attr --get $projectdir ./fifo &>/dev/null || \
+ _notrun "file_getattr not supported on $FSTYP"
+
echo "Error codes"
# wrong AT_ flags
file_attr --get --invalid-at $projectdir ./foo
diff --git a/tests/xfs/648 b/tests/xfs/648
index 215c809887b609..e3c2fbe00b666a 100755
--- a/tests/xfs/648
+++ b/tests/xfs/648
@@ -47,6 +47,9 @@ touch $projectdir/bar
ln -s $projectdir/bar $projectdir/broken-symlink
rm -f $projectdir/bar

+$here/src/file_attr --get $projectdir ./fifo &>/dev/null || \
+ _notrun "file_getattr not supported on $FSTYP"
+
$XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \
-c "project -sp $projectdir $id" $SCRATCH_DEV | filter_quota
$XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \