public inbox for fstests@vger.kernel.org
 help / color / mirror / Atom feed
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
> 
> 

      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