From: "Darrick J. Wong" <djwong@kernel.org>
To: Andrey Albershteyn <aalbersh@redhat.com>
Cc: linux-xfs@vger.kernel.org, fstests@vger.kernel.org,
zlang@redhat.com, Andrey Albershteyn <aalbersh@kernel.org>
Subject: Re: [PATCH 3/3] generic/772: split this test into 772 and 773 for regular and special files
Date: Mon, 20 Oct 2025 09:45:31 -0700 [thread overview]
Message-ID: <20251020164531.GO6178@frogsfrogsfrogs> (raw)
In-Reply-To: <20251020135530.1391193-4-aalbersh@kernel.org>
On Mon, Oct 20, 2025 at 03:55:30PM +0200, Andrey Albershteyn wrote:
> 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>
Looks fine to me,
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
--D
> ---
> 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
>
>
prev parent reply other threads:[~2025-10-20 16:45 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 ` [PATCH 3/3] generic/772: split this test into 772 and 773 for regular and special files Andrey Albershteyn
2025-10-20 16:45 ` Darrick J. Wong [this message]
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=20251020164531.GO6178@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=aalbersh@kernel.org \
--cc=aalbersh@redhat.com \
--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