From: Andrey Albershteyn <aalbersh@redhat.com>
To: linux-xfs@vger.kernel.org, fstests@vger.kernel.org
Cc: djwong@kernel.org, zlang@redhat.com,
Andrey Albershteyn <aalbersh@kernel.org>
Subject: [PATCH 3/3] generic/772: split this test into 772 and 773 for regular and special files
Date: Mon, 20 Oct 2025 15:55:30 +0200 [thread overview]
Message-ID: <20251020135530.1391193-4-aalbersh@kernel.org> (raw)
In-Reply-To: <20251020135530.1391193-1-aalbersh@kernel.org>
Not all filesystem support setting file attributes on special files. The
syscalls would still work for regular files. Let's split this test into
two to make it obvious if only special files support is missing.
Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
---
tests/generic/772 | 38 +-------------------
tests/generic/772.out | 14 --------
tests/generic/773 | 84 +++++++++++++++++++++++++++++++++++++++++++
tests/generic/773.out | 20 +++++++++++
4 files changed, 105 insertions(+), 51 deletions(-)
create mode 100755 tests/generic/773
create mode 100644 tests/generic/773.out
diff --git a/tests/generic/772 b/tests/generic/772
index bdd55b10f310..0d5c4749b010 100755
--- a/tests/generic/772
+++ b/tests/generic/772
@@ -4,7 +4,7 @@
#
# FS QA Test No. 772
#
-# Test file_getattr/file_setattr syscalls
+# Test file_getattr() and file_setattr() syscalls on regular files
#
. ./common/preamble
_begin_fstest auto
@@ -13,7 +13,6 @@ _begin_fstest auto
# Modify as appropriate.
_require_scratch
-_require_test_program "af_unix"
_require_test_program "file_attr"
_require_symlinks
_require_mknod
@@ -21,29 +20,16 @@ _require_mknod
_scratch_mkfs >>$seqres.full 2>&1
_scratch_mount
_require_file_attr
-_require_file_attr_special
file_attr () {
$here/src/file_attr $*
}
-create_af_unix () {
- $here/src/af_unix $* || echo af_unix failed
-}
-
projectdir=$SCRATCH_MNT/prj
# Create normal files and special files
mkdir $projectdir
-mkfifo $projectdir/fifo
-mknod $projectdir/chardev c 1 1
-mknod $projectdir/blockdev b 1 1
-create_af_unix $projectdir/socket
touch $projectdir/foo
-ln -s $projectdir/foo $projectdir/symlink
-touch $projectdir/bar
-ln -s $projectdir/bar $projectdir/broken-symlink
-rm -f $projectdir/bar
echo "Error codes"
# wrong AT_ flags
@@ -59,37 +45,15 @@ file_attr --set --new-fsx-flag $projectdir ./foo
echo "Initial attributes state"
file_attr --get $projectdir | _filter_scratch | _filter_file_attributes ~d
-file_attr --get $projectdir ./fifo | _filter_file_attributes ~d
-file_attr --get $projectdir ./chardev | _filter_file_attributes ~d
-file_attr --get $projectdir ./blockdev | _filter_file_attributes ~d
-file_attr --get $projectdir ./socket | _filter_file_attributes ~d
file_attr --get $projectdir ./foo | _filter_file_attributes ~d
-file_attr --get $projectdir ./symlink | _filter_file_attributes ~d
echo "Set FS_XFLAG_NODUMP (d)"
file_attr --set --set-nodump $projectdir
-file_attr --set --set-nodump $projectdir ./fifo
-file_attr --set --set-nodump $projectdir ./chardev
-file_attr --set --set-nodump $projectdir ./blockdev
-file_attr --set --set-nodump $projectdir ./socket
file_attr --set --set-nodump $projectdir ./foo
-file_attr --set --set-nodump $projectdir ./symlink
echo "Read attributes"
file_attr --get $projectdir | _filter_scratch | _filter_file_attributes ~d
-file_attr --get $projectdir ./fifo | _filter_file_attributes ~d
-file_attr --get $projectdir ./chardev | _filter_file_attributes ~d
-file_attr --get $projectdir ./blockdev | _filter_file_attributes ~d
-file_attr --get $projectdir ./socket | _filter_file_attributes ~d
file_attr --get $projectdir ./foo | _filter_file_attributes ~d
-file_attr --get $projectdir ./symlink | _filter_file_attributes ~d
-
-echo "Set attribute on broken link with AT_SYMLINK_NOFOLLOW"
-file_attr --set --set-nodump $projectdir ./broken-symlink
-file_attr --get $projectdir ./broken-symlink
-
-file_attr --set --no-follow --set-nodump $projectdir ./broken-symlink
-file_attr --get --no-follow $projectdir ./broken-symlink | _filter_file_attributes ~d
cd $SCRATCH_MNT
touch ./foo2
diff --git a/tests/generic/772.out b/tests/generic/772.out
index f7c23d94da4a..c89dbcf5d630 100644
--- a/tests/generic/772.out
+++ b/tests/generic/772.out
@@ -9,25 +9,11 @@ Can not get fsxattr on ./foo: Invalid argument
Can not set fsxattr on ./foo: Invalid argument
Initial attributes state
----------------- SCRATCH_MNT/prj
------------------ ./fifo
------------------ ./chardev
------------------ ./blockdev
------------------ ./socket
----------------- ./foo
------------------ ./symlink
Set FS_XFLAG_NODUMP (d)
Read attributes
------d---------- SCRATCH_MNT/prj
-------d---------- ./fifo
-------d---------- ./chardev
-------d---------- ./blockdev
-------d---------- ./socket
------d---------- ./foo
-------d---------- ./symlink
-Set attribute on broken link with AT_SYMLINK_NOFOLLOW
-Can not get fsxattr on ./broken-symlink: No such file or directory
-Can not get fsxattr on ./broken-symlink: No such file or directory
-------d---------- ./broken-symlink
Initial state of foo2
----------------- ./foo2
Set attribute relative to AT_FDCWD
diff --git a/tests/generic/773 b/tests/generic/773
new file mode 100755
index 000000000000..f633706a1455
--- /dev/null
+++ b/tests/generic/773
@@ -0,0 +1,84 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2025 Red Hat. All Rights Reserved.
+#
+# FS QA Test 773
+#
+# Test file_getattr() and file_setattr() syscalls on special files (fifo,
+# socket, chardev...)
+#
+. ./common/preamble
+_begin_fstest quick
+
+# Import common functions.
+. ./common/filter
+
+# Modify as appropriate.
+_require_scratch
+_require_test_program "af_unix"
+_require_test_program "file_attr"
+_require_symlinks
+_require_mknod
+_scratch_mkfs >>$seqres.full 2>&1
+_scratch_mount
+_require_file_attr_special
+
+file_attr () {
+ $here/src/file_attr $*
+}
+
+create_af_unix () {
+ $here/src/af_unix $* || echo af_unix failed
+}
+
+projectdir=$SCRATCH_MNT/prj
+
+# Create normal files and special files
+mkdir $projectdir
+mkfifo $projectdir/fifo
+mknod $projectdir/chardev c 1 1
+mknod $projectdir/blockdev b 1 1
+create_af_unix $projectdir/socket
+touch $projectdir/foo
+ln -s $projectdir/foo $projectdir/symlink
+touch $projectdir/bar
+ln -s $projectdir/bar $projectdir/broken-symlink
+rm -f $projectdir/bar
+
+echo "Initial attributes state"
+file_attr --get $projectdir | _filter_scratch | _filter_file_attributes ~d
+file_attr --get $projectdir ./fifo | _filter_file_attributes ~d
+file_attr --get $projectdir ./chardev | _filter_file_attributes ~d
+file_attr --get $projectdir ./blockdev | _filter_file_attributes ~d
+file_attr --get $projectdir ./socket | _filter_file_attributes ~d
+file_attr --get $projectdir ./symlink | _filter_file_attributes ~d
+
+echo "Set FS_XFLAG_NODUMP (d)"
+file_attr --set --set-nodump $projectdir
+file_attr --set --set-nodump $projectdir ./fifo
+file_attr --set --set-nodump $projectdir ./chardev
+file_attr --set --set-nodump $projectdir ./blockdev
+file_attr --set --set-nodump $projectdir ./socket
+file_attr --set --set-nodump $projectdir ./symlink
+
+echo "Read attributes"
+file_attr --get $projectdir | _filter_scratch | _filter_file_attributes ~d
+file_attr --get $projectdir ./fifo | _filter_file_attributes ~d
+file_attr --get $projectdir ./chardev | _filter_file_attributes ~d
+file_attr --get $projectdir ./blockdev | _filter_file_attributes ~d
+file_attr --get $projectdir ./socket | _filter_file_attributes ~d
+file_attr --get $projectdir ./symlink | _filter_file_attributes ~d
+
+echo "Set attribute on broken link with AT_SYMLINK_NOFOLLOW"
+file_attr --set --set-nodump $projectdir ./broken-symlink
+file_attr --get $projectdir ./broken-symlink
+
+file_attr --set --no-follow --set-nodump $projectdir ./broken-symlink
+file_attr --get --no-follow $projectdir ./broken-symlink | _filter_file_attributes ~d
+
+# optional stuff if your test has verbose output to help resolve problems
+#echo
+#echo "If failure, check $seqres.full (this) and $seqres.full.ok (reference)"
+
+# success, all done
+_exit 0
diff --git a/tests/generic/773.out b/tests/generic/773.out
new file mode 100644
index 000000000000..46ea3baa66fd
--- /dev/null
+++ b/tests/generic/773.out
@@ -0,0 +1,20 @@
+QA output created by 773
+Initial attributes state
+----------------- SCRATCH_MNT/prj
+----------------- ./fifo
+----------------- ./chardev
+----------------- ./blockdev
+----------------- ./socket
+----------------- ./symlink
+Set FS_XFLAG_NODUMP (d)
+Read attributes
+------d---------- SCRATCH_MNT/prj
+------d---------- ./fifo
+------d---------- ./chardev
+------d---------- ./blockdev
+------d---------- ./socket
+------d---------- ./symlink
+Set attribute on broken link with AT_SYMLINK_NOFOLLOW
+Can not get fsxattr on ./broken-symlink: No such file or directory
+Can not get fsxattr on ./broken-symlink: No such file or directory
+------d---------- ./broken-symlink
--
2.50.1
next prev parent reply other threads:[~2025-10-20 13:56 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-20 13:55 [PATCH 0/3] generic/772: split and fix Andrey Albershteyn
2025-10-20 13:55 ` [PATCH 1/3] common/filter: add missing file attribute Andrey Albershteyn
2025-10-20 16:46 ` Darrick J. Wong
2025-10-21 9:42 ` Andrey Albershteyn
2025-10-20 13:55 ` [PATCH 2/3] generic/772: require filesystem to support file_[g|s]etattr Andrey Albershteyn
2025-10-20 16:45 ` Darrick J. Wong
2025-10-21 9:42 ` Andrey Albershteyn
2025-10-20 13:55 ` Andrey Albershteyn [this message]
2025-10-20 16:45 ` [PATCH 3/3] generic/772: split this test into 772 and 773 for regular and special files Darrick J. Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251020135530.1391193-4-aalbersh@kernel.org \
--to=aalbersh@redhat.com \
--cc=aalbersh@kernel.org \
--cc=djwong@kernel.org \
--cc=fstests@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=zlang@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox