* [PATCHSET] fstests: more random fixes for v2025.10.05
@ 2025-10-15 16:36 Darrick J. Wong
2025-10-15 16:36 ` [PATCH 1/8] generic/427: try to ensure there's some free space before we do the aio test Darrick J. Wong
` (7 more replies)
0 siblings, 8 replies; 47+ messages in thread
From: Darrick J. Wong @ 2025-10-15 16:36 UTC (permalink / raw)
To: djwong, zlang; +Cc: fstests, fstests, linux-xfs
Hi all,
Here's the usual odd fixes for fstests.
If you're going to start using this code, I strongly recommend pulling
from my git trees, which are linked below.
With a bit of luck, this should all go splendidly.
Comments and questions are, as always, welcome.
--D
kernel git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=random-fixes
xfsprogs git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=random-fixes
fstests git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=random-fixes
---
Commits in this patchset:
* generic/427: try to ensure there's some free space before we do the aio test
* common/rc: fix _require_xfs_io_shutdown
* generic/742: avoid infinite loop if no fiemap results
* generic/{482,757}: skip test if there are no FUA writes
* generic/772: actually check for file_getattr special file support
* common/filter: fix _filter_file_attributes to handle xfs file flags
* common/attr: fix _require_noattr2
* common: fix _require_xfs_io_command pwrite -A for various blocksizes
---
common/attr | 4 ++++
common/filter | 3 ++-
common/rc | 21 +++++++++++++++++----
src/fiemap-fault.c | 14 +++++++++++++-
tests/generic/427 | 3 +++
tests/generic/482 | 2 +-
tests/generic/757 | 2 +-
tests/generic/772 | 3 +++
tests/xfs/648 | 3 +++
9 files changed, 47 insertions(+), 8 deletions(-)
^ permalink raw reply [flat|nested] 47+ messages in thread* [PATCH 1/8] generic/427: try to ensure there's some free space before we do the aio test 2025-10-15 16:36 [PATCHSET] fstests: more random fixes for v2025.10.05 Darrick J. Wong @ 2025-10-15 16:36 ` Darrick J. Wong 2025-10-17 4:18 ` Christoph Hellwig 2025-10-20 14:16 ` Zorro Lang 2025-10-15 16:37 ` [PATCH 2/8] common/rc: fix _require_xfs_io_shutdown Darrick J. Wong ` (6 subsequent siblings) 7 siblings, 2 replies; 47+ messages in thread From: Darrick J. Wong @ 2025-10-15 16:36 UTC (permalink / raw) To: djwong, zlang; +Cc: fstests, linux-xfs From: Darrick J. Wong <djwong@kernel.org> On a filesystem configured like this: MKFS_OPTIONS="-m metadir=1,autofsck=1,uquota,gquota,pquota -d rtinherit=1 -r zoned=1" This test fails like this: --- a/tests/generic/427.out 2025-04-30 16:20:44.584246582 -0700 +++ b/tests/generic/427.out.bad 2025-07-14 10:47:07.605377287 -0700 @@ -1,2 +1,2 @@ QA output created by 427 -Success, all done. +pwrite: No space left on device The pwrite failure comes from the aio-dio-eof-race.c program because the filesystem ran out of space. There are no speculative posteof preallocations on a zoned filesystem, so let's skip this test on those setups. Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> --- tests/generic/427 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/generic/427 b/tests/generic/427 index bddfdb8714e9a7..bb20d9f44a2b5a 100755 --- a/tests/generic/427 +++ b/tests/generic/427 @@ -28,6 +28,9 @@ _require_no_compress _scratch_mkfs_sized $((256 * 1024 * 1024)) >>$seqres.full 2>&1 _scratch_mount +# Zoned filesystems don't support speculative preallocations +_require_inplace_writes $SCRATCH_MNT + # try to write more bytes than filesystem size to fill the filesystem, # then remove all these data. If we still can find these stale data in # a file' eofblock, then it's a bug ^ permalink raw reply related [flat|nested] 47+ messages in thread
* Re: [PATCH 1/8] generic/427: try to ensure there's some free space before we do the aio test 2025-10-15 16:36 ` [PATCH 1/8] generic/427: try to ensure there's some free space before we do the aio test Darrick J. Wong @ 2025-10-17 4:18 ` Christoph Hellwig 2025-10-20 14:16 ` Zorro Lang 1 sibling, 0 replies; 47+ messages in thread From: Christoph Hellwig @ 2025-10-17 4:18 UTC (permalink / raw) To: Darrick J. Wong; +Cc: zlang, fstests, linux-xfs Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de> ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 1/8] generic/427: try to ensure there's some free space before we do the aio test 2025-10-15 16:36 ` [PATCH 1/8] generic/427: try to ensure there's some free space before we do the aio test Darrick J. Wong 2025-10-17 4:18 ` Christoph Hellwig @ 2025-10-20 14:16 ` Zorro Lang 2025-10-20 18:35 ` Darrick J. Wong 1 sibling, 1 reply; 47+ messages in thread From: Zorro Lang @ 2025-10-20 14:16 UTC (permalink / raw) To: Darrick J. Wong; +Cc: zlang, fstests, linux-xfs On Wed, Oct 15, 2025 at 09:36:58AM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > On a filesystem configured like this: > MKFS_OPTIONS="-m metadir=1,autofsck=1,uquota,gquota,pquota -d rtinherit=1 -r zoned=1" > > This test fails like this: > > --- a/tests/generic/427.out 2025-04-30 16:20:44.584246582 -0700 > +++ b/tests/generic/427.out.bad 2025-07-14 10:47:07.605377287 -0700 > @@ -1,2 +1,2 @@ > QA output created by 427 > -Success, all done. > +pwrite: No space left on device Hahah, I just felt weird, why g/427 failed as: QA output created by 427 -pwrite: No space left on device +Success, all done. then I found `git am` treats above commit log as part of the patch :-D Please add some blanks to above fail messages. BTW, I decided not to merge this patchset in today's release, due to I haven't gotten time to give it enough test. I'll try to merge it (or part of it) in next release . Sorry for the late. Thanks, Zorro > > The pwrite failure comes from the aio-dio-eof-race.c program because the > filesystem ran out of space. There are no speculative posteof > preallocations on a zoned filesystem, so let's skip this test on those > setups. > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > --- > tests/generic/427 | 3 +++ > 1 file changed, 3 insertions(+) > > > diff --git a/tests/generic/427 b/tests/generic/427 > index bddfdb8714e9a7..bb20d9f44a2b5a 100755 > --- a/tests/generic/427 > +++ b/tests/generic/427 > @@ -28,6 +28,9 @@ _require_no_compress > _scratch_mkfs_sized $((256 * 1024 * 1024)) >>$seqres.full 2>&1 > _scratch_mount > > +# Zoned filesystems don't support speculative preallocations > +_require_inplace_writes $SCRATCH_MNT > + > # try to write more bytes than filesystem size to fill the filesystem, > # then remove all these data. If we still can find these stale data in > # a file' eofblock, then it's a bug > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 1/8] generic/427: try to ensure there's some free space before we do the aio test 2025-10-20 14:16 ` Zorro Lang @ 2025-10-20 18:35 ` Darrick J. Wong 0 siblings, 0 replies; 47+ messages in thread From: Darrick J. Wong @ 2025-10-20 18:35 UTC (permalink / raw) To: Zorro Lang; +Cc: zlang, fstests, linux-xfs On Mon, Oct 20, 2025 at 10:16:39PM +0800, Zorro Lang wrote: > On Wed, Oct 15, 2025 at 09:36:58AM -0700, Darrick J. Wong wrote: > > From: Darrick J. Wong <djwong@kernel.org> > > > > On a filesystem configured like this: > > MKFS_OPTIONS="-m metadir=1,autofsck=1,uquota,gquota,pquota -d rtinherit=1 -r zoned=1" > > > > This test fails like this: > > > > --- a/tests/generic/427.out 2025-04-30 16:20:44.584246582 -0700 > > +++ b/tests/generic/427.out.bad 2025-07-14 10:47:07.605377287 -0700 > > @@ -1,2 +1,2 @@ > > QA output created by 427 > > -Success, all done. > > +pwrite: No space left on device > > Hahah, I just felt weird, why g/427 failed as: > > QA output created by 427 > -pwrite: No space left on device > +Success, all done. > > then I found `git am` treats above commit log as part of the patch :-D Please add > some blanks to above fail messages. > > BTW, I decided not to merge this patchset in today's release, due to I haven't gotten > time to give it enough test. I'll try to merge it (or part of it) in next release . > Sorry for the late. Will clean up and push out. Though now that there's an xfsprogs 6.17 release I guess I'll rerun everything with that and push out the bugfixes tomorrow instead of today. --D > Thanks, > Zorro > > > > > The pwrite failure comes from the aio-dio-eof-race.c program because the > > filesystem ran out of space. There are no speculative posteof > > preallocations on a zoned filesystem, so let's skip this test on those > > setups. > > > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > > --- > > tests/generic/427 | 3 +++ > > 1 file changed, 3 insertions(+) > > > > > > diff --git a/tests/generic/427 b/tests/generic/427 > > index bddfdb8714e9a7..bb20d9f44a2b5a 100755 > > --- a/tests/generic/427 > > +++ b/tests/generic/427 > > @@ -28,6 +28,9 @@ _require_no_compress > > _scratch_mkfs_sized $((256 * 1024 * 1024)) >>$seqres.full 2>&1 > > _scratch_mount > > > > +# Zoned filesystems don't support speculative preallocations > > +_require_inplace_writes $SCRATCH_MNT > > + > > # try to write more bytes than filesystem size to fill the filesystem, > > # then remove all these data. If we still can find these stale data in > > # a file' eofblock, then it's a bug > > > ^ permalink raw reply [flat|nested] 47+ messages in thread
* [PATCH 2/8] common/rc: fix _require_xfs_io_shutdown 2025-10-15 16:36 [PATCHSET] fstests: more random fixes for v2025.10.05 Darrick J. Wong 2025-10-15 16:36 ` [PATCH 1/8] generic/427: try to ensure there's some free space before we do the aio test Darrick J. Wong @ 2025-10-15 16:37 ` Darrick J. Wong 2025-10-17 4:18 ` Christoph Hellwig 2025-10-24 7:31 ` Nirjhar Roy (IBM) 2025-10-15 16:37 ` [PATCH 3/8] generic/742: avoid infinite loop if no fiemap results Darrick J. Wong ` (5 subsequent siblings) 7 siblings, 2 replies; 47+ messages in thread From: Darrick J. Wong @ 2025-10-15 16:37 UTC (permalink / raw) To: djwong, zlang; +Cc: fstests, fstests, linux-xfs From: Darrick J. Wong <djwong@kernel.org> Capturing the output of _scratch_shutdown_handle requires one to enclose the callsite with $(), otherwise you're comparing the literal string "_scratch_shutdown_handle" to $SCRATCH_MNT, which always fails. Also fix _require_xfs_io_command to handle testing the shutdown command correctly. Cc: <fstests@vger.kernel.org> # v2025.06.22 Fixes: 4b1cf3df009b22 ("fstests: add helper _require_xfs_io_shutdown") Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> --- common/rc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/common/rc b/common/rc index 1ec84263c917c0..1b78cd0c358bb9 100644 --- a/common/rc +++ b/common/rc @@ -619,7 +619,7 @@ _scratch_shutdown_and_syncfs() # requirement down to _require_scratch_shutdown. _require_xfs_io_shutdown() { - if [ _scratch_shutdown_handle != $SCRATCH_MNT ]; then + if [ $(_scratch_shutdown_handle) != $SCRATCH_MNT ]; then # Most likely overlayfs _notrun "xfs_io -c shutdown not supported on $FSTYP" fi @@ -3073,6 +3073,11 @@ _require_xfs_io_command() rm -f $testfile.1 param_checked="$param" ;; + "shutdown") + testio=$($XFS_IO_PROG -f -x -c "$command $param" $testfile 2>&1) + param_checked="$param" + _test_cycle_mount + ;; "utimes" ) testio=`$XFS_IO_PROG -f -c "utimes 0 0 0 0" $testfile 2>&1` ;; ^ permalink raw reply related [flat|nested] 47+ messages in thread
* Re: [PATCH 2/8] common/rc: fix _require_xfs_io_shutdown 2025-10-15 16:37 ` [PATCH 2/8] common/rc: fix _require_xfs_io_shutdown Darrick J. Wong @ 2025-10-17 4:18 ` Christoph Hellwig 2025-10-24 7:31 ` Nirjhar Roy (IBM) 1 sibling, 0 replies; 47+ messages in thread From: Christoph Hellwig @ 2025-10-17 4:18 UTC (permalink / raw) To: Darrick J. Wong; +Cc: zlang, fstests, linux-xfs Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de> ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 2/8] common/rc: fix _require_xfs_io_shutdown 2025-10-15 16:37 ` [PATCH 2/8] common/rc: fix _require_xfs_io_shutdown Darrick J. Wong 2025-10-17 4:18 ` Christoph Hellwig @ 2025-10-24 7:31 ` Nirjhar Roy (IBM) 2025-10-24 22:08 ` Darrick J. Wong 1 sibling, 1 reply; 47+ messages in thread From: Nirjhar Roy (IBM) @ 2025-10-24 7:31 UTC (permalink / raw) To: Darrick J. Wong, zlang; +Cc: fstests, linux-xfs On Wed, 2025-10-15 at 09:37 -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > Capturing the output of _scratch_shutdown_handle requires one to enclose > the callsite with $(), otherwise you're comparing the literal string > "_scratch_shutdown_handle" to $SCRATCH_MNT, which always fails. > > Also fix _require_xfs_io_command to handle testing the shutdown command > correctly. > > Cc: <fstests@vger.kernel.org> # v2025.06.22 > Fixes: 4b1cf3df009b22 ("fstests: add helper _require_xfs_io_shutdown") > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > --- > common/rc | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > > diff --git a/common/rc b/common/rc > index 1ec84263c917c0..1b78cd0c358bb9 100644 > --- a/common/rc > +++ b/common/rc > @@ -619,7 +619,7 @@ _scratch_shutdown_and_syncfs() > # requirement down to _require_scratch_shutdown. > _require_xfs_io_shutdown() > { > - if [ _scratch_shutdown_handle != $SCRATCH_MNT ]; then > + if [ $(_scratch_shutdown_handle) != $SCRATCH_MNT ]; then Yeah, right. _scratch_shutdown_handle is a function call and should be placed in a $() or ``. > # Most likely overlayfs > _notrun "xfs_io -c shutdown not supported on $FSTYP" > fi > @@ -3073,6 +3073,11 @@ _require_xfs_io_command() > rm -f $testfile.1 > param_checked="$param" > ;; > + "shutdown") > + testio=$($XFS_IO_PROG -f -x -c "$command $param" $testfile 2>&1) > + param_checked="$param" > + _test_cycle_mount > + ;; Looks good to me. Just curious, any reason why we are testing with TEST_DIR and not with SCRATCH_MNT? Reviewed-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com> > "utimes" ) > testio=`$XFS_IO_PROG -f -c "utimes 0 0 0 0" $testfile 2>&1` > ;; > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 2/8] common/rc: fix _require_xfs_io_shutdown 2025-10-24 7:31 ` Nirjhar Roy (IBM) @ 2025-10-24 22:08 ` Darrick J. Wong 2025-10-30 6:31 ` Nirjhar Roy (IBM) 0 siblings, 1 reply; 47+ messages in thread From: Darrick J. Wong @ 2025-10-24 22:08 UTC (permalink / raw) To: Nirjhar Roy (IBM); +Cc: zlang, fstests, linux-xfs On Fri, Oct 24, 2025 at 01:01:50PM +0530, Nirjhar Roy (IBM) wrote: > On Wed, 2025-10-15 at 09:37 -0700, Darrick J. Wong wrote: > > From: Darrick J. Wong <djwong@kernel.org> > > > > Capturing the output of _scratch_shutdown_handle requires one to enclose > > the callsite with $(), otherwise you're comparing the literal string > > "_scratch_shutdown_handle" to $SCRATCH_MNT, which always fails. > > > > Also fix _require_xfs_io_command to handle testing the shutdown command > > correctly. > > > > Cc: <fstests@vger.kernel.org> # v2025.06.22 > > Fixes: 4b1cf3df009b22 ("fstests: add helper _require_xfs_io_shutdown") > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > > --- > > common/rc | 7 ++++++- > > 1 file changed, 6 insertions(+), 1 deletion(-) > > > > > > diff --git a/common/rc b/common/rc > > index 1ec84263c917c0..1b78cd0c358bb9 100644 > > --- a/common/rc > > +++ b/common/rc > > @@ -619,7 +619,7 @@ _scratch_shutdown_and_syncfs() > > # requirement down to _require_scratch_shutdown. > > _require_xfs_io_shutdown() > > { > > - if [ _scratch_shutdown_handle != $SCRATCH_MNT ]; then > > + if [ $(_scratch_shutdown_handle) != $SCRATCH_MNT ]; then > Yeah, right. _scratch_shutdown_handle is a function call and should be placed in a $() or ``. > > # Most likely overlayfs > > _notrun "xfs_io -c shutdown not supported on $FSTYP" > > fi > > @@ -3073,6 +3073,11 @@ _require_xfs_io_command() > > rm -f $testfile.1 > > param_checked="$param" > > ;; > > + "shutdown") > > + testio=$($XFS_IO_PROG -f -x -c "$command $param" $testfile 2>&1) > > + param_checked="$param" > > + _test_cycle_mount > > + ;; > Looks good to me. Just curious, any reason why we are testing with TEST_DIR and not with > SCRATCH_MNT? $TEST_DIR is always available and mounted, whereas SCRATCH_* are optional. > Reviewed-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com> Thanks! --D > > "utimes" ) > > testio=`$XFS_IO_PROG -f -c "utimes 0 0 0 0" $testfile 2>&1` > > ;; > > > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 2/8] common/rc: fix _require_xfs_io_shutdown 2025-10-24 22:08 ` Darrick J. Wong @ 2025-10-30 6:31 ` Nirjhar Roy (IBM) 0 siblings, 0 replies; 47+ messages in thread From: Nirjhar Roy (IBM) @ 2025-10-30 6:31 UTC (permalink / raw) To: Darrick J. Wong; +Cc: zlang, fstests, linux-xfs On 10/25/25 03:38, Darrick J. Wong wrote: > On Fri, Oct 24, 2025 at 01:01:50PM +0530, Nirjhar Roy (IBM) wrote: >> On Wed, 2025-10-15 at 09:37 -0700, Darrick J. Wong wrote: >>> From: Darrick J. Wong <djwong@kernel.org> >>> >>> Capturing the output of _scratch_shutdown_handle requires one to enclose >>> the callsite with $(), otherwise you're comparing the literal string >>> "_scratch_shutdown_handle" to $SCRATCH_MNT, which always fails. >>> >>> Also fix _require_xfs_io_command to handle testing the shutdown command >>> correctly. >>> >>> Cc: <fstests@vger.kernel.org> # v2025.06.22 >>> Fixes: 4b1cf3df009b22 ("fstests: add helper _require_xfs_io_shutdown") >>> Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> >>> --- >>> common/rc | 7 ++++++- >>> 1 file changed, 6 insertions(+), 1 deletion(-) >>> >>> >>> diff --git a/common/rc b/common/rc >>> index 1ec84263c917c0..1b78cd0c358bb9 100644 >>> --- a/common/rc >>> +++ b/common/rc >>> @@ -619,7 +619,7 @@ _scratch_shutdown_and_syncfs() >>> # requirement down to _require_scratch_shutdown. >>> _require_xfs_io_shutdown() >>> { >>> - if [ _scratch_shutdown_handle != $SCRATCH_MNT ]; then >>> + if [ $(_scratch_shutdown_handle) != $SCRATCH_MNT ]; then >> Yeah, right. _scratch_shutdown_handle is a function call and should be placed in a $() or ``. >>> # Most likely overlayfs >>> _notrun "xfs_io -c shutdown not supported on $FSTYP" >>> fi >>> @@ -3073,6 +3073,11 @@ _require_xfs_io_command() >>> rm -f $testfile.1 >>> param_checked="$param" >>> ;; >>> + "shutdown") >>> + testio=$($XFS_IO_PROG -f -x -c "$command $param" $testfile 2>&1) >>> + param_checked="$param" >>> + _test_cycle_mount >>> + ;; >> Looks good to me. Just curious, any reason why we are testing with TEST_DIR and not with >> SCRATCH_MNT? > $TEST_DIR is always available and mounted, whereas SCRATCH_* are > optional. Okay, thank you. --NR > >> Reviewed-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com> > Thanks! > > --D > >>> "utimes" ) >>> testio=`$XFS_IO_PROG -f -c "utimes 0 0 0 0" $testfile 2>&1` >>> ;; >>> -- Nirjhar Roy Linux Kernel Developer IBM, Bangalore ^ permalink raw reply [flat|nested] 47+ messages in thread
* [PATCH 3/8] generic/742: avoid infinite loop if no fiemap results 2025-10-15 16:36 [PATCHSET] fstests: more random fixes for v2025.10.05 Darrick J. Wong 2025-10-15 16:36 ` [PATCH 1/8] generic/427: try to ensure there's some free space before we do the aio test Darrick J. Wong 2025-10-15 16:37 ` [PATCH 2/8] common/rc: fix _require_xfs_io_shutdown Darrick J. Wong @ 2025-10-15 16:37 ` Darrick J. Wong 2025-10-17 4:19 ` Christoph Hellwig 2025-10-15 16:37 ` [PATCH 4/8] generic/{482,757}: skip test if there are no FUA writes Darrick J. Wong ` (4 subsequent siblings) 7 siblings, 1 reply; 47+ messages in thread From: Darrick J. Wong @ 2025-10-15 16:37 UTC (permalink / raw) To: djwong, zlang; +Cc: fstests, fstests, linux-xfs From: Darrick J. Wong <djwong@kernel.org> The fiemap-fault program employed this program looks for deadlocks between FIEMAP and file page faults by calling the FIEMAP ioctl with a buffer pointer that is mmaped file range. Unfortunately, the FIEMAP loop can enter an infinite loop if FIEMAP reports zero extents because it never changes the last variable. This shouldn't happen if the filesystem is working correctly, but it turns out that there's a bug in libext2fs' punch-range code that causes punch-alternating to unmap all the double-indirect blocks in the file. This causes the while loop to run forever because last never increases, which then means that testing fuse2fs with ext2/ext3 grinds to a halt because fstests doesn't enforce a per-testcase time limit. Avoid this situation by bailing out if the loop doesn't make forward progress. Cc: <fstests@vger.kernel.org> # v2024.03.31 Fixes: 34cdaf0831ee42 ("generic: add a regression test for fiemap into an mmap range") Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> --- src/fiemap-fault.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/fiemap-fault.c b/src/fiemap-fault.c index 73260068054ede..2bb474c083986d 100644 --- a/src/fiemap-fault.c +++ b/src/fiemap-fault.c @@ -55,17 +55,29 @@ int main(int argc, char *argv[]) sizeof(struct fiemap_extent); while (last < sz) { + size_t old_start; int i; - fiemap->fm_start = last; + fiemap->fm_start = old_start = last; fiemap->fm_length = sz - last; ret = ioctl(fd, FS_IOC_FIEMAP, (unsigned long)fiemap); if (ret < 0) err(1, "fiemap failed %d", errno); + if (fiemap->fm_mapped_extents == 0) { + fprintf(stderr, "%s: fiemap returned 0 extents!\n", + argv[0]); + return 1; + } for (i = 0; i < fiemap->fm_mapped_extents; i++) last = fiemap->fm_extents[i].fe_logical + fiemap->fm_extents[i].fe_length; + + if (last <= old_start) { + fprintf(stderr, "%s: fiemap made no progress!\n", + argv[0]); + return 1; + } } munmap(buf, sz); ^ permalink raw reply related [flat|nested] 47+ messages in thread
* Re: [PATCH 3/8] generic/742: avoid infinite loop if no fiemap results 2025-10-15 16:37 ` [PATCH 3/8] generic/742: avoid infinite loop if no fiemap results Darrick J. Wong @ 2025-10-17 4:19 ` Christoph Hellwig 0 siblings, 0 replies; 47+ messages in thread From: Christoph Hellwig @ 2025-10-17 4:19 UTC (permalink / raw) To: Darrick J. Wong; +Cc: zlang, fstests, linux-xfs Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de> ^ permalink raw reply [flat|nested] 47+ messages in thread
* [PATCH 4/8] generic/{482,757}: skip test if there are no FUA writes 2025-10-15 16:36 [PATCHSET] fstests: more random fixes for v2025.10.05 Darrick J. Wong ` (2 preceding siblings ...) 2025-10-15 16:37 ` [PATCH 3/8] generic/742: avoid infinite loop if no fiemap results Darrick J. Wong @ 2025-10-15 16:37 ` Darrick J. Wong 2025-10-17 4:22 ` Christoph Hellwig 2025-10-15 16:38 ` [PATCH 5/8] generic/772: actually check for file_getattr special file support Darrick J. Wong ` (3 subsequent siblings) 7 siblings, 1 reply; 47+ messages in thread From: Darrick J. Wong @ 2025-10-15 16:37 UTC (permalink / raw) To: djwong, zlang; +Cc: fstests, linux-xfs From: Darrick J. Wong <djwong@kernel.org> Both of these tests fail if the filesystem doesn't issue a FUA write to a device, but ... there's no requirement that filesystems actually use FUA at all. For example, a fuse filesystem that writes to the block device's page cache and issues fsync() will not cause the block layer to issue FUA writes for the dirty pages. Change that to _notrun. Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> --- tests/generic/482 | 2 +- tests/generic/757 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/generic/482 b/tests/generic/482 index 8c114ee03058c6..25e05d7cdb1c0d 100755 --- a/tests/generic/482 +++ b/tests/generic/482 @@ -82,7 +82,7 @@ _log_writes_remove prev=$(_log_writes_mark_to_entry_number mkfs) [ -z "$prev" ] && _fail "failed to locate entry mark 'mkfs'" cur=$(_log_writes_find_next_fua $prev) -[ -z "$cur" ] && _fail "failed to locate next FUA write" +[ -z "$cur" ] && _notrun "failed to locate next FUA write" while [ ! -z "$cur" ]; do _log_writes_replay_log_range $cur $DMTHIN_VOL_DEV >> $seqres.full diff --git a/tests/generic/757 b/tests/generic/757 index 6c13c6af41c57c..725f3a5cc6da3a 100755 --- a/tests/generic/757 +++ b/tests/generic/757 @@ -71,7 +71,7 @@ _log_writes_remove prev=$(_log_writes_mark_to_entry_number mkfs) [ -z "$prev" ] && _fail "failed to locate entry mark 'mkfs'" cur=$(_log_writes_find_next_fua $prev) -[ -z "$cur" ] && _fail "failed to locate next FUA write" +[ -z "$cur" ] && _notrun "failed to locate next FUA write" while _soak_loop_running $((100 * TIME_FACTOR)); do _log_writes_replay_log_range $cur $DMTHIN_VOL_DEV >> $seqres.full ^ permalink raw reply related [flat|nested] 47+ messages in thread
* Re: [PATCH 4/8] generic/{482,757}: skip test if there are no FUA writes 2025-10-15 16:37 ` [PATCH 4/8] generic/{482,757}: skip test if there are no FUA writes Darrick J. Wong @ 2025-10-17 4:22 ` Christoph Hellwig 2025-10-17 16:24 ` Darrick J. Wong 0 siblings, 1 reply; 47+ messages in thread From: Christoph Hellwig @ 2025-10-17 4:22 UTC (permalink / raw) To: Darrick J. Wong; +Cc: zlang, fstests, linux-xfs On Wed, Oct 15, 2025 at 09:37:45AM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > Both of these tests fail if the filesystem doesn't issue a FUA write to > a device, but ... there's no requirement that filesystems actually use > FUA at all. For example, a fuse filesystem that writes to the block > device's page cache and issues fsync() will not cause the block layer to > issue FUA writes for the dirty pages. Change that to _notrun. Hmm, zoned ZXFS never issues FUA and didn't fail. Oh, these use dm thin and thus are _notrun. > index 8c114ee03058c6..25e05d7cdb1c0d 100755 > --- a/tests/generic/482 > +++ b/tests/generic/482 > @@ -82,7 +82,7 @@ _log_writes_remove > prev=$(_log_writes_mark_to_entry_number mkfs) > [ -z "$prev" ] && _fail "failed to locate entry mark 'mkfs'" > cur=$(_log_writes_find_next_fua $prev) > -[ -z "$cur" ] && _fail "failed to locate next FUA write" > +[ -z "$cur" ] && _notrun "failed to locate next FUA write" This isn't really the last but the first FUA write we're looking for here, right? > > -[ -z "$cur" ] && _fail "failed to locate next FUA write" > +[ -z "$cur" ] && _notrun "failed to locate next FUA write" Same here. The only reason I'm asking is because if we did this for every write we'd kinda defeat the purpose of the test. But we're only doing it to see if any FUA writes exists as far as I can tell, so we should be ok. But it might be worth changing the messages. ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 4/8] generic/{482,757}: skip test if there are no FUA writes 2025-10-17 4:22 ` Christoph Hellwig @ 2025-10-17 16:24 ` Darrick J. Wong 2025-10-20 6:59 ` Christoph Hellwig 0 siblings, 1 reply; 47+ messages in thread From: Darrick J. Wong @ 2025-10-17 16:24 UTC (permalink / raw) To: Christoph Hellwig; +Cc: zlang, fstests, linux-xfs On Thu, Oct 16, 2025 at 09:22:49PM -0700, Christoph Hellwig wrote: > On Wed, Oct 15, 2025 at 09:37:45AM -0700, Darrick J. Wong wrote: > > From: Darrick J. Wong <djwong@kernel.org> > > > > Both of these tests fail if the filesystem doesn't issue a FUA write to > > a device, but ... there's no requirement that filesystems actually use > > FUA at all. For example, a fuse filesystem that writes to the block > > device's page cache and issues fsync() will not cause the block layer to > > issue FUA writes for the dirty pages. Change that to _notrun. > > Hmm, zoned ZXFS never issues FUA and didn't fail. Oh, these use dm thin > and thus are _notrun. Yep. > > index 8c114ee03058c6..25e05d7cdb1c0d 100755 > > --- a/tests/generic/482 > > +++ b/tests/generic/482 > > @@ -82,7 +82,7 @@ _log_writes_remove > > prev=$(_log_writes_mark_to_entry_number mkfs) > > [ -z "$prev" ] && _fail "failed to locate entry mark 'mkfs'" > > cur=$(_log_writes_find_next_fua $prev) > > -[ -z "$cur" ] && _fail "failed to locate next FUA write" > > +[ -z "$cur" ] && _notrun "failed to locate next FUA write" > > This isn't really the last but the first FUA write we're looking for > here, right? Yes, it's looking for the first FUA write after mkfs, which is (presumably) the first directio O_SYNC write or (more likely) journal commit. > > > > -[ -z "$cur" ] && _fail "failed to locate next FUA write" > > +[ -z "$cur" ] && _notrun "failed to locate next FUA write" > > Same here. > > The only reason I'm asking is because if we did this for every write > we'd kinda defeat the purpose of the test. But we're only doing it > to see if any FUA writes exists as far as I can tell, so we should > be ok. But it might be worth changing the messages. "could not locate any FUA write" ? --D ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 4/8] generic/{482,757}: skip test if there are no FUA writes 2025-10-17 16:24 ` Darrick J. Wong @ 2025-10-20 6:59 ` Christoph Hellwig 0 siblings, 0 replies; 47+ messages in thread From: Christoph Hellwig @ 2025-10-20 6:59 UTC (permalink / raw) To: Darrick J. Wong; +Cc: Christoph Hellwig, zlang, fstests, linux-xfs On Fri, Oct 17, 2025 at 09:24:26AM -0700, Darrick J. Wong wrote: > > The only reason I'm asking is because if we did this for every write > > we'd kinda defeat the purpose of the test. But we're only doing it > > to see if any FUA writes exists as far as I can tell, so we should > > be ok. But it might be worth changing the messages. > > "could not locate any FUA write" ? Sounds good. ^ permalink raw reply [flat|nested] 47+ messages in thread
* [PATCH 5/8] generic/772: actually check for file_getattr special file support 2025-10-15 16:36 [PATCHSET] fstests: more random fixes for v2025.10.05 Darrick J. Wong ` (3 preceding siblings ...) 2025-10-15 16:37 ` [PATCH 4/8] generic/{482,757}: skip test if there are no FUA writes Darrick J. Wong @ 2025-10-15 16:38 ` Darrick J. Wong 2025-10-17 4:23 ` Christoph Hellwig ` (2 more replies) 2025-10-15 16:38 ` [PATCH 6/8] common/filter: fix _filter_file_attributes to handle xfs file flags Darrick J. Wong ` (2 subsequent siblings) 7 siblings, 3 replies; 47+ messages in thread From: Darrick J. Wong @ 2025-10-15 16:38 UTC (permalink / raw) To: djwong, zlang; +Cc: fstests, linux-xfs 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 \ ^ permalink raw reply related [flat|nested] 47+ messages in thread
* Re: [PATCH 5/8] generic/772: actually check for file_getattr special file support 2025-10-15 16:38 ` [PATCH 5/8] generic/772: actually check for file_getattr special file support Darrick J. Wong @ 2025-10-17 4:23 ` Christoph Hellwig 2025-10-17 17:46 ` Zorro Lang 2025-10-24 7:44 ` Nirjhar Roy (IBM) 2 siblings, 0 replies; 47+ messages in thread From: Christoph Hellwig @ 2025-10-17 4:23 UTC (permalink / raw) To: Darrick J. Wong; +Cc: zlang, fstests, linux-xfs Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de> ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 5/8] generic/772: actually check for file_getattr special file support 2025-10-15 16:38 ` [PATCH 5/8] generic/772: actually check for file_getattr special file support Darrick J. Wong 2025-10-17 4:23 ` Christoph Hellwig @ 2025-10-17 17:46 ` Zorro Lang 2025-10-17 22:54 ` Darrick J. Wong 2025-10-24 7:44 ` Nirjhar Roy (IBM) 2 siblings, 1 reply; 47+ messages in thread From: Zorro Lang @ 2025-10-17 17:46 UTC (permalink / raw) To: Darrick J. Wong; +Cc: fstests, linux-xfs On Wed, Oct 15, 2025 at 09:38:01AM -0700, Darrick J. Wong wrote: > 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" I'm wondering if a _require_file_attr() is better? Thanks, Zorro > + > 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 \ > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 5/8] generic/772: actually check for file_getattr special file support 2025-10-17 17:46 ` Zorro Lang @ 2025-10-17 22:54 ` Darrick J. Wong 2025-10-18 7:57 ` Zorro Lang 0 siblings, 1 reply; 47+ messages in thread From: Darrick J. Wong @ 2025-10-17 22:54 UTC (permalink / raw) To: Zorro Lang; +Cc: fstests, linux-xfs On Sat, Oct 18, 2025 at 01:46:33AM +0800, Zorro Lang wrote: > On Wed, Oct 15, 2025 at 09:38:01AM -0700, Darrick J. Wong wrote: > > 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" > > I'm wondering if a _require_file_attr() is better? It's checking specifically that the new getattr syscall works on special files. I suppose you could wrap that in a helper, but I think this is a lot more direct about what it's looking for. --D > Thanks, > Zorro > > > + > > 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 \ > > > > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 5/8] generic/772: actually check for file_getattr special file support 2025-10-17 22:54 ` Darrick J. Wong @ 2025-10-18 7:57 ` Zorro Lang 2025-10-20 16:26 ` Darrick J. Wong 0 siblings, 1 reply; 47+ messages in thread From: Zorro Lang @ 2025-10-18 7:57 UTC (permalink / raw) To: Darrick J. Wong; +Cc: fstests, linux-xfs On Fri, Oct 17, 2025 at 03:54:48PM -0700, Darrick J. Wong wrote: > On Sat, Oct 18, 2025 at 01:46:33AM +0800, Zorro Lang wrote: > > On Wed, Oct 15, 2025 at 09:38:01AM -0700, Darrick J. Wong wrote: > > > 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" > > > > I'm wondering if a _require_file_attr() is better? > > It's checking specifically that the new getattr syscall works on special > files. I suppose you could wrap that in a helper, but I think this is a > lot more direct about what it's looking for. Please correct me if I'm wrong. The new syscall is created for setting extended attributes on special files, therefore I suppose if there's file_setattr syscall and it can work on regular file, then it can work on any other files the fs supports. If this's correct, _require_file_attr can use file_attr to try to set and get attr on a regular file in $TEST_DIR, to make sure the whole file_set/getattr feature is supported. Is that right? Thanks, Zorro > > --D > > > Thanks, > > Zorro > > > > > + > > > 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 \ > > > > > > > > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 5/8] generic/772: actually check for file_getattr special file support 2025-10-18 7:57 ` Zorro Lang @ 2025-10-20 16:26 ` Darrick J. Wong 0 siblings, 0 replies; 47+ messages in thread From: Darrick J. Wong @ 2025-10-20 16:26 UTC (permalink / raw) To: Zorro Lang; +Cc: fstests, linux-xfs On Sat, Oct 18, 2025 at 03:57:08PM +0800, Zorro Lang wrote: > On Fri, Oct 17, 2025 at 03:54:48PM -0700, Darrick J. Wong wrote: > > On Sat, Oct 18, 2025 at 01:46:33AM +0800, Zorro Lang wrote: > > > On Wed, Oct 15, 2025 at 09:38:01AM -0700, Darrick J. Wong wrote: > > > > 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" > > > > > > I'm wondering if a _require_file_attr() is better? > > > > It's checking specifically that the new getattr syscall works on special > > files. I suppose you could wrap that in a helper, but I think this is a > > lot more direct about what it's looking for. > > Please correct me if I'm wrong. The new syscall is created for setting extended > attributes on special files, therefore I suppose if there's file_setattr syscall > and it can work on regular file, then it can work on any other files the fs supports. > If this's correct, _require_file_attr can use file_attr to try to set and get > attr on a regular file in $TEST_DIR, to make sure the whole file_set/getattr > feature is supported. Is that right? No. The new new syscall allows programs to specify a {dir fd, path} input that points to a special file, but it uses the existing per-fs get/setattr implementations. All of those implementations have to remove their copy-pasta'd code: if (d_is_special(dentry)) return -ENOTTY; before the new syscall will return non-error for special files. This wasn't done for all of the filesystems before 6.18, which means that 6.17 has the syscall but none of the filesystems support accessing special files. As of 6.18-rc2, gfs, jfs, and ubifs still have that code. TLDR: You can't assume that the new syscall works with special files. --D > Thanks, > Zorro > > > > > --D > > > > > Thanks, > > > Zorro > > > > > > > + > > > > 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 \ > > > > > > > > > > > > > > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 5/8] generic/772: actually check for file_getattr special file support 2025-10-15 16:38 ` [PATCH 5/8] generic/772: actually check for file_getattr special file support Darrick J. Wong 2025-10-17 4:23 ` Christoph Hellwig 2025-10-17 17:46 ` Zorro Lang @ 2025-10-24 7:44 ` Nirjhar Roy (IBM) 2025-10-24 22:10 ` Darrick J. Wong 2 siblings, 1 reply; 47+ messages in thread From: Nirjhar Roy (IBM) @ 2025-10-24 7:44 UTC (permalink / raw) To: Darrick J. Wong, zlang; +Cc: fstests, linux-xfs On Wed, 2025-10-15 at 09:38 -0700, Darrick J. Wong wrote: > 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" > + Shouldn't we use $here/src/file_attr like we have done later (maybe just for consistency)? Also, I am wondering if we can have something like _require_get_attr_for_special_files() helper kind of a thing? --NR > 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 \ > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 5/8] generic/772: actually check for file_getattr special file support 2025-10-24 7:44 ` Nirjhar Roy (IBM) @ 2025-10-24 22:10 ` Darrick J. Wong 2025-10-30 6:05 ` Nirjhar Roy (IBM) 0 siblings, 1 reply; 47+ messages in thread From: Darrick J. Wong @ 2025-10-24 22:10 UTC (permalink / raw) To: Nirjhar Roy (IBM); +Cc: zlang, fstests, linux-xfs On Fri, Oct 24, 2025 at 01:14:29PM +0530, Nirjhar Roy (IBM) wrote: > On Wed, 2025-10-15 at 09:38 -0700, Darrick J. Wong wrote: > > 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" > > + > Shouldn't we use $here/src/file_attr like we have done later (maybe just for consistency)? Probably, but this test has (for now) a wrapper so I used that. > Also, I am wondering if we can have something like > _require_get_attr_for_special_files() helper kind of a thing? Andrey's working on that. --D > --NR > > 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 \ > > > > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 5/8] generic/772: actually check for file_getattr special file support 2025-10-24 22:10 ` Darrick J. Wong @ 2025-10-30 6:05 ` Nirjhar Roy (IBM) 2025-10-30 16:33 ` Darrick J. Wong 0 siblings, 1 reply; 47+ messages in thread From: Nirjhar Roy (IBM) @ 2025-10-30 6:05 UTC (permalink / raw) To: Darrick J. Wong; +Cc: zlang, fstests, linux-xfs On 10/25/25 03:40, Darrick J. Wong wrote: > On Fri, Oct 24, 2025 at 01:14:29PM +0530, Nirjhar Roy (IBM) wrote: >> On Wed, 2025-10-15 at 09:38 -0700, Darrick J. Wong wrote: >>> 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" >>> + >> Shouldn't we use $here/src/file_attr like we have done later (maybe just for consistency)? > Probably, but this test has (for now) a wrapper so I used that. Sorry, which wrapper are you referring to? > >> Also, I am wondering if we can have something like >> _require_get_attr_for_special_files() helper kind of a thing? > Andrey's working on that. Okay, thanks. --NR > > --D > >> --NR >>> 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 \ >>> >> -- Nirjhar Roy Linux Kernel Developer IBM, Bangalore ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 5/8] generic/772: actually check for file_getattr special file support 2025-10-30 6:05 ` Nirjhar Roy (IBM) @ 2025-10-30 16:33 ` Darrick J. Wong 0 siblings, 0 replies; 47+ messages in thread From: Darrick J. Wong @ 2025-10-30 16:33 UTC (permalink / raw) To: Nirjhar Roy (IBM); +Cc: zlang, fstests, linux-xfs On Thu, Oct 30, 2025 at 11:35:33AM +0530, Nirjhar Roy (IBM) wrote: > > On 10/25/25 03:40, Darrick J. Wong wrote: > > On Fri, Oct 24, 2025 at 01:14:29PM +0530, Nirjhar Roy (IBM) wrote: > > > On Wed, 2025-10-15 at 09:38 -0700, Darrick J. Wong wrote: > > > > 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" > > > > + > > > Shouldn't we use $here/src/file_attr like we have done later (maybe just for consistency)? > > Probably, but this test has (for now) a wrapper so I used that. > > Sorry, which wrapper are you referring to? Look about 10 lines up, there's a file_attr() function that calls $here/src/file_attr "$@" --D > > > > > Also, I am wondering if we can have something like > > > _require_get_attr_for_special_files() helper kind of a thing? > > Andrey's working on that. > > Okay, thanks. > > --NR > > > > > --D > > > > > --NR > > > > 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 \ > > > > > > > > -- > Nirjhar Roy > Linux Kernel Developer > IBM, Bangalore > > ^ permalink raw reply [flat|nested] 47+ messages in thread
* [PATCH 6/8] common/filter: fix _filter_file_attributes to handle xfs file flags 2025-10-15 16:36 [PATCHSET] fstests: more random fixes for v2025.10.05 Darrick J. Wong ` (4 preceding siblings ...) 2025-10-15 16:38 ` [PATCH 5/8] generic/772: actually check for file_getattr special file support Darrick J. Wong @ 2025-10-15 16:38 ` Darrick J. Wong 2025-10-17 4:23 ` Christoph Hellwig 2025-10-15 16:38 ` [PATCH 7/8] common/attr: fix _require_noattr2 Darrick J. Wong 2025-10-15 16:38 ` [PATCH 8/8] common: fix _require_xfs_io_command pwrite -A for various blocksizes Darrick J. Wong 7 siblings, 1 reply; 47+ messages in thread From: Darrick J. Wong @ 2025-10-15 16:38 UTC (permalink / raw) To: djwong, zlang; +Cc: fstests, fstests, linux-xfs From: Darrick J. Wong <djwong@kernel.org> Currently, _filter_file_attributes can only filter ext4 lsattr flags. Update it to handle XFS lsattr flags as well. Cc: <fstests@vger.kernel.org> # v2025.10.05 Fixes: 4eb40174d77c1b ("generic: introduce test to test file_getattr/file_setattr syscalls") Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> --- common/filter | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common/filter b/common/filter index b330b27827d005..c3a751dd0c398c 100644 --- a/common/filter +++ b/common/filter @@ -688,10 +688,11 @@ _filter_sysfs_error() # ... | _filter_file_attributes X # Or to filter all except X # ... | _filter_file_attributes ~X +# Be careful, we're filtering lsattr or xfs_io -c lsattr flags. _filter_file_attributes() { if [[ $1 == ~* ]]; then - regex=$(echo "[aAcCdDeEFijmNPsStTuxVX]" | tr -d "$1") + regex=$(echo "[aAcCdDeEfFijmNpPsrStTuxVX]" | tr -d "$1") else regex="$1" fi ^ permalink raw reply related [flat|nested] 47+ messages in thread
* Re: [PATCH 6/8] common/filter: fix _filter_file_attributes to handle xfs file flags 2025-10-15 16:38 ` [PATCH 6/8] common/filter: fix _filter_file_attributes to handle xfs file flags Darrick J. Wong @ 2025-10-17 4:23 ` Christoph Hellwig 2025-10-17 16:22 ` Darrick J. Wong 0 siblings, 1 reply; 47+ messages in thread From: Christoph Hellwig @ 2025-10-17 4:23 UTC (permalink / raw) To: Darrick J. Wong; +Cc: zlang, fstests, linux-xfs On Wed, Oct 15, 2025 at 09:38:16AM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > Currently, _filter_file_attributes can only filter ext4 lsattr flags. > Update it to handle XFS lsattr flags as well. What XFS flags end up in lsattr? Is this coordinated with the official registry in ext4? ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 6/8] common/filter: fix _filter_file_attributes to handle xfs file flags 2025-10-17 4:23 ` Christoph Hellwig @ 2025-10-17 16:22 ` Darrick J. Wong 2025-10-20 7:01 ` Christoph Hellwig 0 siblings, 1 reply; 47+ messages in thread From: Darrick J. Wong @ 2025-10-17 16:22 UTC (permalink / raw) To: Christoph Hellwig; +Cc: zlang, fstests, linux-xfs On Thu, Oct 16, 2025 at 09:23:44PM -0700, Christoph Hellwig wrote: > On Wed, Oct 15, 2025 at 09:38:16AM -0700, Darrick J. Wong wrote: > > From: Darrick J. Wong <djwong@kernel.org> > > > > Currently, _filter_file_attributes can only filter ext4 lsattr flags. > > Update it to handle XFS lsattr flags as well. > > What XFS flags end up in lsattr? Assuming you're asking which XFS flags are reported by ext4 lsattr... append, noatime, nodump, immutable, projinherit, fsdax Unless you meant src/file_attr.c? In which case theyr'e > Is this coordinated with the official > registry in ext4? Only informally by Ted and I talking on Thursdays. The problem here is that _filter_file_attributes ... probably ought to say which domain (ext4 lsattr or xfs_io lsattr) it's actually filtering. Right now the only users of this helper are using it to filter src/file_attr.c output (aka xfs_io lsattr) so I think I should change the patch to document that. --D ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 6/8] common/filter: fix _filter_file_attributes to handle xfs file flags 2025-10-17 16:22 ` Darrick J. Wong @ 2025-10-20 7:01 ` Christoph Hellwig 2025-10-20 16:37 ` Darrick J. Wong 0 siblings, 1 reply; 47+ messages in thread From: Christoph Hellwig @ 2025-10-20 7:01 UTC (permalink / raw) To: Darrick J. Wong; +Cc: Christoph Hellwig, zlang, fstests, linux-xfs On Fri, Oct 17, 2025 at 09:22:18AM -0700, Darrick J. Wong wrote: > > What XFS flags end up in lsattr? > > Assuming you're asking which XFS flags are reported by ext4 lsattr... > > append, noatime, nodump, immutable, projinherit, fsdax > > Unless you meant src/file_attr.c? In which case theyr'e I'm actually not sure. I was just surprised about the flags showing up. > > > Is this coordinated with the official > > registry in ext4? > > Only informally by Ted and I talking on Thursdays. > > The problem here is that _filter_file_attributes ... probably ought to > say which domain (ext4 lsattr or xfs_io lsattr) it's actually filtering. Oooh. That explains my confusion. > Right now the only users of this helper are using it to filter > src/file_attr.c output (aka xfs_io lsattr) so I think I should change > the patch to document that. Yes, please. And we really need to figure out central authoritisied to document the lsattr and fsxattr domain flags. ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 6/8] common/filter: fix _filter_file_attributes to handle xfs file flags 2025-10-20 7:01 ` Christoph Hellwig @ 2025-10-20 16:37 ` Darrick J. Wong 2025-10-21 5:30 ` Christoph Hellwig 0 siblings, 1 reply; 47+ messages in thread From: Darrick J. Wong @ 2025-10-20 16:37 UTC (permalink / raw) To: Christoph Hellwig, Theodore Ts'o Cc: zlang, fstests, linux-xfs, linux-ext4 On Mon, Oct 20, 2025 at 12:01:21AM -0700, Christoph Hellwig wrote: > On Fri, Oct 17, 2025 at 09:22:18AM -0700, Darrick J. Wong wrote: > > > What XFS flags end up in lsattr? > > > > Assuming you're asking which XFS flags are reported by ext4 lsattr... > > > > append, noatime, nodump, immutable, projinherit, fsdax > > > > Unless you meant src/file_attr.c? In which case theyr'e > > I'm actually not sure. I was just surprised about the flags showing > up. > > > > > > Is this coordinated with the official > > > registry in ext4? > > > > Only informally by Ted and I talking on Thursdays. > > > > The problem here is that _filter_file_attributes ... probably ought to > > say which domain (ext4 lsattr or xfs_io lsattr) it's actually filtering. > > Oooh. That explains my confusion. > > > Right now the only users of this helper are using it to filter > > src/file_attr.c output (aka xfs_io lsattr) so I think I should change > > the patch to document that. > > Yes, please. And we really need to figure out central authoritisied > to document the lsattr and fsxattr domain flags. [add tytso and linux-ext4] I think we should standardize on the VFS (aka file_getattr) flag values, which means the xfs version more or less wins. The only problem there of course is that file_getattr doesn't know about the ext-specific flags, which are: { EXT2_SECRM_FL, "s", "Secure_Deletion" }, { EXT2_UNRM_FL, "u" , "Undelete" }, { EXT2_DIRSYNC_FL, "D", "Synchronous_Directory_Updates" }, { EXT2_COMPR_FL, "c", "Compression_Requested" }, { EXT4_ENCRYPT_FL, "E", "Encrypted" }, { EXT3_JOURNAL_DATA_FL, "j", "Journaled_Data" }, { EXT2_INDEX_FL, "I", "Indexed_directory" }, { EXT2_NOTAIL_FL, "t", "No_Tailmerging" }, { EXT2_TOPDIR_FL, "T", "Top_of_Directory_Hierarchies" }, { EXT4_EXTENTS_FL, "e", "Extents" }, { FS_NOCOW_FL, "C", "No_COW" }, { EXT4_CASEFOLD_FL, "F", "Casefold" }, { EXT4_INLINE_DATA_FL, "N", "Inline_Data" }, { EXT4_VERITY_FL, "V", "Verity" }, { EXT2_NOCOMPR_FL, "m", "Dont_Compress" }, Not sure what we want to do about that, since some of those flags like the ones related to deletion, compression, and tailmerging aren't implemented. Other things like extents/topdir seem too ext4-specific to put in a vfs interface....? --D ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 6/8] common/filter: fix _filter_file_attributes to handle xfs file flags 2025-10-20 16:37 ` Darrick J. Wong @ 2025-10-21 5:30 ` Christoph Hellwig 2025-10-21 14:47 ` Darrick J. Wong 0 siblings, 1 reply; 47+ messages in thread From: Christoph Hellwig @ 2025-10-21 5:30 UTC (permalink / raw) To: Darrick J. Wong Cc: Christoph Hellwig, Theodore Ts'o, zlang, fstests, linux-xfs, linux-ext4 On Mon, Oct 20, 2025 at 09:37:13AM -0700, Darrick J. Wong wrote: > [add tytso and linux-ext4] > > I think we should standardize on the VFS (aka file_getattr) flag values, > which means the xfs version more or less wins. Ok, I'm more than confused than before. Shouldn't we simply use separate filters for FS_IOC_GETFLAGS vs FS_IOC_FSGETXATTR? ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 6/8] common/filter: fix _filter_file_attributes to handle xfs file flags 2025-10-21 5:30 ` Christoph Hellwig @ 2025-10-21 14:47 ` Darrick J. Wong 0 siblings, 0 replies; 47+ messages in thread From: Darrick J. Wong @ 2025-10-21 14:47 UTC (permalink / raw) To: Christoph Hellwig Cc: Theodore Ts'o, zlang, fstests, linux-xfs, linux-ext4 On Mon, Oct 20, 2025 at 10:30:29PM -0700, Christoph Hellwig wrote: > On Mon, Oct 20, 2025 at 09:37:13AM -0700, Darrick J. Wong wrote: > > [add tytso and linux-ext4] > > > > I think we should standardize on the VFS (aka file_getattr) flag values, > > which means the xfs version more or less wins. > > Ok, I'm more than confused than before. Shouldn't we simply use > separate filters for FS_IOC_GETFLAGS vs FS_IOC_FSGETXATTR? Yeah. I was going to just provide both versions, but then I went down the rabbithole of navelgazing about "Is upstream going to accept a helper for the ext4 lsattr flags even though there are no users?" and then wandered off to tackle actual useful things like mount/unmount races in fuse. :P --D ^ permalink raw reply [flat|nested] 47+ messages in thread
* [PATCH 7/8] common/attr: fix _require_noattr2 2025-10-15 16:36 [PATCHSET] fstests: more random fixes for v2025.10.05 Darrick J. Wong ` (5 preceding siblings ...) 2025-10-15 16:38 ` [PATCH 6/8] common/filter: fix _filter_file_attributes to handle xfs file flags Darrick J. Wong @ 2025-10-15 16:38 ` Darrick J. Wong 2025-10-17 4:24 ` Christoph Hellwig ` (2 more replies) 2025-10-15 16:38 ` [PATCH 8/8] common: fix _require_xfs_io_command pwrite -A for various blocksizes Darrick J. Wong 7 siblings, 3 replies; 47+ messages in thread From: Darrick J. Wong @ 2025-10-15 16:38 UTC (permalink / raw) To: djwong, zlang; +Cc: fstests, linux-xfs From: Darrick J. Wong <djwong@kernel.org> attr2/noattr2 doesn't do anything anymore and aren't reported in /proc/mounts, so we need to check /proc/mounts and _notrun as a result. Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> --- common/attr | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/common/attr b/common/attr index 1c1de63e9d5465..35e0bee4e3aa53 100644 --- a/common/attr +++ b/common/attr @@ -241,7 +241,11 @@ _require_noattr2() || _fail "_try_scratch_mkfs_xfs failed on $SCRATCH_DEV" _try_scratch_mount -o noattr2 > /dev/null 2>&1 \ || _notrun "noattr2 mount option not supported on $SCRATCH_DEV" + grep -w "$SCRATCH_MNT" /proc/mounts | awk '{print $4}' | grep -q -w noattr2 + local res=${PIPESTATUS[2]} _scratch_unmount + test $res -eq 0 \ + || _notrun "noattr2 mount option no longer functional" } # getfattr -R returns info in readdir order which varies from fs to fs. ^ permalink raw reply related [flat|nested] 47+ messages in thread
* Re: [PATCH 7/8] common/attr: fix _require_noattr2 2025-10-15 16:38 ` [PATCH 7/8] common/attr: fix _require_noattr2 Darrick J. Wong @ 2025-10-17 4:24 ` Christoph Hellwig 2025-10-17 17:13 ` Zorro Lang 2025-10-24 9:01 ` Nirjhar Roy (IBM) 2 siblings, 0 replies; 47+ messages in thread From: Christoph Hellwig @ 2025-10-17 4:24 UTC (permalink / raw) To: Darrick J. Wong; +Cc: zlang, fstests, linux-xfs On Wed, Oct 15, 2025 at 09:38:32AM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > attr2/noattr2 doesn't do anything anymore and aren't reported in > /proc/mounts, so we need to check /proc/mounts and _notrun as a result. Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de> ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 7/8] common/attr: fix _require_noattr2 2025-10-15 16:38 ` [PATCH 7/8] common/attr: fix _require_noattr2 Darrick J. Wong 2025-10-17 4:24 ` Christoph Hellwig @ 2025-10-17 17:13 ` Zorro Lang 2025-10-17 22:55 ` Darrick J. Wong 2025-10-24 9:01 ` Nirjhar Roy (IBM) 2 siblings, 1 reply; 47+ messages in thread From: Zorro Lang @ 2025-10-17 17:13 UTC (permalink / raw) To: Darrick J. Wong; +Cc: fstests, linux-xfs On Wed, Oct 15, 2025 at 09:38:32AM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > attr2/noattr2 doesn't do anything anymore and aren't reported in > /proc/mounts, so we need to check /proc/mounts and _notrun as a result. > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > --- > common/attr | 4 ++++ > 1 file changed, 4 insertions(+) > > > diff --git a/common/attr b/common/attr > index 1c1de63e9d5465..35e0bee4e3aa53 100644 > --- a/common/attr > +++ b/common/attr > @@ -241,7 +241,11 @@ _require_noattr2() > || _fail "_try_scratch_mkfs_xfs failed on $SCRATCH_DEV" > _try_scratch_mount -o noattr2 > /dev/null 2>&1 \ > || _notrun "noattr2 mount option not supported on $SCRATCH_DEV" > + grep -w "$SCRATCH_MNT" /proc/mounts | awk '{print $4}' | grep -q -w noattr2 How about use findmnt? e.g. grep -qw noattr2 <(findmnt -rncv -M / -o OPTIONS) > + local res=${PIPESTATUS[2]} Then the PIPESTATUS isn't needed either. I can help to do this change if you agree. Thanks, Zorro > _scratch_unmount > + test $res -eq 0 \ > + || _notrun "noattr2 mount option no longer functional" > } > > # getfattr -R returns info in readdir order which varies from fs to fs. > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 7/8] common/attr: fix _require_noattr2 2025-10-17 17:13 ` Zorro Lang @ 2025-10-17 22:55 ` Darrick J. Wong 2025-10-18 14:43 ` Zorro Lang 0 siblings, 1 reply; 47+ messages in thread From: Darrick J. Wong @ 2025-10-17 22:55 UTC (permalink / raw) To: Zorro Lang; +Cc: fstests, linux-xfs On Sat, Oct 18, 2025 at 01:13:25AM +0800, Zorro Lang wrote: > On Wed, Oct 15, 2025 at 09:38:32AM -0700, Darrick J. Wong wrote: > > From: Darrick J. Wong <djwong@kernel.org> > > > > attr2/noattr2 doesn't do anything anymore and aren't reported in > > /proc/mounts, so we need to check /proc/mounts and _notrun as a result. > > > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > > --- > > common/attr | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > > > diff --git a/common/attr b/common/attr > > index 1c1de63e9d5465..35e0bee4e3aa53 100644 > > --- a/common/attr > > +++ b/common/attr > > @@ -241,7 +241,11 @@ _require_noattr2() > > || _fail "_try_scratch_mkfs_xfs failed on $SCRATCH_DEV" > > _try_scratch_mount -o noattr2 > /dev/null 2>&1 \ > > || _notrun "noattr2 mount option not supported on $SCRATCH_DEV" > > + grep -w "$SCRATCH_MNT" /proc/mounts | awk '{print $4}' | grep -q -w noattr2 > > How about use findmnt? e.g. > > grep -qw noattr2 <(findmnt -rncv -M / -o OPTIONS) > > > + local res=${PIPESTATUS[2]} > > Then the PIPESTATUS isn't needed either. > > I can help to do this change if you agree. Yes, that works! Excellent suggestion. --D > Thanks, > Zorro > > > _scratch_unmount > > + test $res -eq 0 \ > > + || _notrun "noattr2 mount option no longer functional" > > } > > > > # getfattr -R returns info in readdir order which varies from fs to fs. > > > > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 7/8] common/attr: fix _require_noattr2 2025-10-17 22:55 ` Darrick J. Wong @ 2025-10-18 14:43 ` Zorro Lang 2025-10-20 16:27 ` Darrick J. Wong 0 siblings, 1 reply; 47+ messages in thread From: Zorro Lang @ 2025-10-18 14:43 UTC (permalink / raw) To: Darrick J. Wong; +Cc: fstests, linux-xfs On Fri, Oct 17, 2025 at 03:55:46PM -0700, Darrick J. Wong wrote: > On Sat, Oct 18, 2025 at 01:13:25AM +0800, Zorro Lang wrote: > > On Wed, Oct 15, 2025 at 09:38:32AM -0700, Darrick J. Wong wrote: > > > From: Darrick J. Wong <djwong@kernel.org> > > > > > > attr2/noattr2 doesn't do anything anymore and aren't reported in > > > /proc/mounts, so we need to check /proc/mounts and _notrun as a result. > > > > > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > > > --- > > > common/attr | 4 ++++ > > > 1 file changed, 4 insertions(+) > > > > > > > > > diff --git a/common/attr b/common/attr > > > index 1c1de63e9d5465..35e0bee4e3aa53 100644 > > > --- a/common/attr > > > +++ b/common/attr > > > @@ -241,7 +241,11 @@ _require_noattr2() > > > || _fail "_try_scratch_mkfs_xfs failed on $SCRATCH_DEV" > > > _try_scratch_mount -o noattr2 > /dev/null 2>&1 \ > > > || _notrun "noattr2 mount option not supported on $SCRATCH_DEV" > > > + grep -w "$SCRATCH_MNT" /proc/mounts | awk '{print $4}' | grep -q -w noattr2 > > > > How about use findmnt? e.g. > > > > grep -qw noattr2 <(findmnt -rncv -M / -o OPTIONS) Sorry, the "/" should be $SCRATCH_MNT. > > > > > + local res=${PIPESTATUS[2]} > > > > Then the PIPESTATUS isn't needed either. > > > > I can help to do this change if you agree. > > Yes, that works! Excellent suggestion. The patch 1,2,3,5,7,8 has been acked/reviewed, do you need I merge these patches in the release of this weekend at first, as this's a random fixes patchset. Or I can wait your next version, then merge the whole patchset when it's all get reviewed ? Thanks, Zorro > > --D > > > Thanks, > > Zorro > > > > > _scratch_unmount > > > + test $res -eq 0 \ > > > + || _notrun "noattr2 mount option no longer functional" > > > } > > > > > > # getfattr -R returns info in readdir order which varies from fs to fs. > > > > > > > > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 7/8] common/attr: fix _require_noattr2 2025-10-18 14:43 ` Zorro Lang @ 2025-10-20 16:27 ` Darrick J. Wong 0 siblings, 0 replies; 47+ messages in thread From: Darrick J. Wong @ 2025-10-20 16:27 UTC (permalink / raw) To: Zorro Lang; +Cc: fstests, linux-xfs On Sat, Oct 18, 2025 at 10:43:18PM +0800, Zorro Lang wrote: > On Fri, Oct 17, 2025 at 03:55:46PM -0700, Darrick J. Wong wrote: > > On Sat, Oct 18, 2025 at 01:13:25AM +0800, Zorro Lang wrote: > > > On Wed, Oct 15, 2025 at 09:38:32AM -0700, Darrick J. Wong wrote: > > > > From: Darrick J. Wong <djwong@kernel.org> > > > > > > > > attr2/noattr2 doesn't do anything anymore and aren't reported in > > > > /proc/mounts, so we need to check /proc/mounts and _notrun as a result. > > > > > > > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > > > > --- > > > > common/attr | 4 ++++ > > > > 1 file changed, 4 insertions(+) > > > > > > > > > > > > diff --git a/common/attr b/common/attr > > > > index 1c1de63e9d5465..35e0bee4e3aa53 100644 > > > > --- a/common/attr > > > > +++ b/common/attr > > > > @@ -241,7 +241,11 @@ _require_noattr2() > > > > || _fail "_try_scratch_mkfs_xfs failed on $SCRATCH_DEV" > > > > _try_scratch_mount -o noattr2 > /dev/null 2>&1 \ > > > > || _notrun "noattr2 mount option not supported on $SCRATCH_DEV" > > > > + grep -w "$SCRATCH_MNT" /proc/mounts | awk '{print $4}' | grep -q -w noattr2 > > > > > > How about use findmnt? e.g. > > > > > > grep -qw noattr2 <(findmnt -rncv -M / -o OPTIONS) > > Sorry, the "/" should be $SCRATCH_MNT. > > > > > > > > + local res=${PIPESTATUS[2]} > > > > > > Then the PIPESTATUS isn't needed either. > > > > > > I can help to do this change if you agree. > > > > Yes, that works! Excellent suggestion. > > The patch 1,2,3,5,7,8 has been acked/reviewed, do you need I merge these patches > in the release of this weekend at first, as this's a random fixes patchset. Or > I can wait your next version, then merge the whole patchset when it's all get > reviewed ? Well I guess you didn't take any of them yet, so I'll republish them in a little bit. --D > Thanks, > Zorro > > > > > --D > > > > > Thanks, > > > Zorro > > > > > > > _scratch_unmount > > > > + test $res -eq 0 \ > > > > + || _notrun "noattr2 mount option no longer functional" > > > > } > > > > > > > > # getfattr -R returns info in readdir order which varies from fs to fs. > > > > > > > > > > > > > > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 7/8] common/attr: fix _require_noattr2 2025-10-15 16:38 ` [PATCH 7/8] common/attr: fix _require_noattr2 Darrick J. Wong 2025-10-17 4:24 ` Christoph Hellwig 2025-10-17 17:13 ` Zorro Lang @ 2025-10-24 9:01 ` Nirjhar Roy (IBM) 2025-10-24 22:15 ` Darrick J. Wong 2 siblings, 1 reply; 47+ messages in thread From: Nirjhar Roy (IBM) @ 2025-10-24 9:01 UTC (permalink / raw) To: Darrick J. Wong, zlang; +Cc: fstests, linux-xfs On Wed, 2025-10-15 at 09:38 -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > attr2/noattr2 doesn't do anything anymore and aren't reported in > /proc/mounts, so we need to check /proc/mounts and _notrun as a result. > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > --- > common/attr | 4 ++++ > 1 file changed, 4 insertions(+) > > > diff --git a/common/attr b/common/attr > index 1c1de63e9d5465..35e0bee4e3aa53 100644 > --- a/common/attr > +++ b/common/attr > @@ -241,7 +241,11 @@ _require_noattr2() > || _fail "_try_scratch_mkfs_xfs failed on $SCRATCH_DEV" > _try_scratch_mount -o noattr2 > /dev/null 2>&1 \ > || _notrun "noattr2 mount option not supported on $SCRATCH_DEV" > + grep -w "$SCRATCH_MNT" /proc/mounts | awk '{print $4}' | grep -q -w noattr2 If noatrr2 doesn't do anything, then in that case _try_scratch_mount will ignore noattr2 and mount will succeed. With the above change, we are just checking if noattr2 appears in /proc/mounts(after the mount), if yes then the preconditions returns true, else the test using this precondition is notrun. Right? This looks okay to me. Reviewed-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com> --NR > + local res=${PIPESTATUS[2]} > _scratch_unmount > + test $res -eq 0 \ > + || _notrun "noattr2 mount option no longer functional" > } > > # getfattr -R returns info in readdir order which varies from fs to fs. > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 7/8] common/attr: fix _require_noattr2 2025-10-24 9:01 ` Nirjhar Roy (IBM) @ 2025-10-24 22:15 ` Darrick J. Wong 2025-10-30 6:02 ` Nirjhar Roy (IBM) 0 siblings, 1 reply; 47+ messages in thread From: Darrick J. Wong @ 2025-10-24 22:15 UTC (permalink / raw) To: Nirjhar Roy (IBM); +Cc: zlang, fstests, linux-xfs On Fri, Oct 24, 2025 at 02:31:16PM +0530, Nirjhar Roy (IBM) wrote: > On Wed, 2025-10-15 at 09:38 -0700, Darrick J. Wong wrote: > > From: Darrick J. Wong <djwong@kernel.org> > > > > attr2/noattr2 doesn't do anything anymore and aren't reported in > > /proc/mounts, so we need to check /proc/mounts and _notrun as a result. > > > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > > --- > > common/attr | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > > > diff --git a/common/attr b/common/attr > > index 1c1de63e9d5465..35e0bee4e3aa53 100644 > > --- a/common/attr > > +++ b/common/attr > > @@ -241,7 +241,11 @@ _require_noattr2() > > || _fail "_try_scratch_mkfs_xfs failed on $SCRATCH_DEV" > > _try_scratch_mount -o noattr2 > /dev/null 2>&1 \ > > || _notrun "noattr2 mount option not supported on $SCRATCH_DEV" > > + grep -w "$SCRATCH_MNT" /proc/mounts | awk '{print $4}' | grep -q -w noattr2 > If noatrr2 doesn't do anything, then in that case _try_scratch_mount will ignore noattr2 and mount > will succeed. With the above change, we are just checking if noattr2 appears in /proc/mounts(after > the mount), if yes then the preconditions returns true, else the test using this precondition is > notrun. Right? Right. On a pre-6.18 kernel where noattr2 did something, the following will happen: a) V4 filesystem, noattr2 actually matters for the mount, and it should show up in /proc/mounts. If it doesn't, then the test should not run. b) V5 filesystem, noattr2 is impossible so the mount fails. Test will not run. With 6.18 the behavior changes: a) V4 filesystem, noattr2 doesn't do anything, the mount succeeds, but noattr2 does not show up in /proc/mounts. The test should not run. b) V5 filesystem, noattr2 now no longer fails the mount but it doesn't show up in /proc/mounts either. The test still should not run. > This looks okay to me. > Reviewed-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com> Thanks! --D > --NR > > + local res=${PIPESTATUS[2]} > > _scratch_unmount > > + test $res -eq 0 \ > > + || _notrun "noattr2 mount option no longer functional" > > } > > > > # getfattr -R returns info in readdir order which varies from fs to fs. > > > > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 7/8] common/attr: fix _require_noattr2 2025-10-24 22:15 ` Darrick J. Wong @ 2025-10-30 6:02 ` Nirjhar Roy (IBM) 0 siblings, 0 replies; 47+ messages in thread From: Nirjhar Roy (IBM) @ 2025-10-30 6:02 UTC (permalink / raw) To: Darrick J. Wong; +Cc: zlang, fstests, linux-xfs On 10/25/25 03:45, Darrick J. Wong wrote: > On Fri, Oct 24, 2025 at 02:31:16PM +0530, Nirjhar Roy (IBM) wrote: >> On Wed, 2025-10-15 at 09:38 -0700, Darrick J. Wong wrote: >>> From: Darrick J. Wong <djwong@kernel.org> >>> >>> attr2/noattr2 doesn't do anything anymore and aren't reported in >>> /proc/mounts, so we need to check /proc/mounts and _notrun as a result. >>> >>> Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> >>> --- >>> common/attr | 4 ++++ >>> 1 file changed, 4 insertions(+) >>> >>> >>> diff --git a/common/attr b/common/attr >>> index 1c1de63e9d5465..35e0bee4e3aa53 100644 >>> --- a/common/attr >>> +++ b/common/attr >>> @@ -241,7 +241,11 @@ _require_noattr2() >>> || _fail "_try_scratch_mkfs_xfs failed on $SCRATCH_DEV" >>> _try_scratch_mount -o noattr2 > /dev/null 2>&1 \ >>> || _notrun "noattr2 mount option not supported on $SCRATCH_DEV" >>> + grep -w "$SCRATCH_MNT" /proc/mounts | awk '{print $4}' | grep -q -w noattr2 >> If noatrr2 doesn't do anything, then in that case _try_scratch_mount will ignore noattr2 and mount >> will succeed. With the above change, we are just checking if noattr2 appears in /proc/mounts(after >> the mount), if yes then the preconditions returns true, else the test using this precondition is >> notrun. Right? > Right. > > On a pre-6.18 kernel where noattr2 did something, the following will > happen: > > a) V4 filesystem, noattr2 actually matters for the mount, and it should > show up in /proc/mounts. If it doesn't, then the test should not run. > > b) V5 filesystem, noattr2 is impossible so the mount fails. Test will > not run. > > With 6.18 the behavior changes: > > a) V4 filesystem, noattr2 doesn't do anything, the mount succeeds, but > noattr2 does not show up in /proc/mounts. The test should not run. > > b) V5 filesystem, noattr2 now no longer fails the mount but it doesn't > show up in /proc/mounts either. The test still should not run. Okay, makes sense. Thank you for the explanation. --NR > >> This looks okay to me. >> Reviewed-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com> > Thanks! > > --D > >> --NR >>> + local res=${PIPESTATUS[2]} >>> _scratch_unmount >>> + test $res -eq 0 \ >>> + || _notrun "noattr2 mount option no longer functional" >>> } >>> >>> # getfattr -R returns info in readdir order which varies from fs to fs. >>> >> -- Nirjhar Roy Linux Kernel Developer IBM, Bangalore ^ permalink raw reply [flat|nested] 47+ messages in thread
* [PATCH 8/8] common: fix _require_xfs_io_command pwrite -A for various blocksizes 2025-10-15 16:36 [PATCHSET] fstests: more random fixes for v2025.10.05 Darrick J. Wong ` (6 preceding siblings ...) 2025-10-15 16:38 ` [PATCH 7/8] common/attr: fix _require_noattr2 Darrick J. Wong @ 2025-10-15 16:38 ` Darrick J. Wong 2025-10-17 4:24 ` Christoph Hellwig 2025-10-24 9:18 ` Nirjhar Roy (IBM) 7 siblings, 2 replies; 47+ messages in thread From: Darrick J. Wong @ 2025-10-15 16:38 UTC (permalink / raw) To: djwong, zlang; +Cc: fstests, fstests, linux-xfs From: Darrick J. Wong <djwong@kernel.org> In this predicate, we should test an atomic write of the minimum supported size, not just 4k. This fixes a problem where none of the atomic write tests actually run on a 32k-fsblock xfs because you can't do a sub-fsblock atomic write. Cc: <fstests@vger.kernel.org> # v2025.04.13 Fixes: d90ee3b6496346 ("generic: add a test for atomic writes") Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> --- common/rc | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/common/rc b/common/rc index 1b78cd0c358bb9..dcae5bc33b19ce 100644 --- a/common/rc +++ b/common/rc @@ -3030,16 +3030,24 @@ _require_xfs_io_command() "pwrite") # -N (RWF_NOWAIT) only works with direct vectored I/O writes local pwrite_opts=" " + local write_size="4k" if [ "$param" == "-N" ]; then opts+=" -d" - pwrite_opts+="-V 1 -b 4k" + pwrite_opts+="-V 1 -b $write_size" fi if [ "$param" == "-A" ]; then opts+=" -d" - pwrite_opts+="-V 1 -b 4k" + # try to write the minimum supported atomic write size + write_size="$($XFS_IO_PROG -f -c "statx -r -m $STATX_WRITE_ATOMIC" $testfile 2>/dev/null | \ + grep atomic_write_unit_min | \ + grep -o '[0-9]\+')" + if [ -z "$write_size" ] || [ "$write_size" = "0" ]; then + write_size="0 --not-supported" + fi + pwrite_opts+="-V 1 -b $write_size" fi testio=`$XFS_IO_PROG -f $opts -c \ - "pwrite $pwrite_opts $param 0 4k" $testfile 2>&1` + "pwrite $pwrite_opts $param 0 $write_size" $testfile 2>&1` param_checked="$pwrite_opts $param" ;; "scrub"|"repair") ^ permalink raw reply related [flat|nested] 47+ messages in thread
* Re: [PATCH 8/8] common: fix _require_xfs_io_command pwrite -A for various blocksizes 2025-10-15 16:38 ` [PATCH 8/8] common: fix _require_xfs_io_command pwrite -A for various blocksizes Darrick J. Wong @ 2025-10-17 4:24 ` Christoph Hellwig 2025-10-24 9:18 ` Nirjhar Roy (IBM) 1 sibling, 0 replies; 47+ messages in thread From: Christoph Hellwig @ 2025-10-17 4:24 UTC (permalink / raw) To: Darrick J. Wong; +Cc: zlang, fstests, linux-xfs Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de> ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 8/8] common: fix _require_xfs_io_command pwrite -A for various blocksizes 2025-10-15 16:38 ` [PATCH 8/8] common: fix _require_xfs_io_command pwrite -A for various blocksizes Darrick J. Wong 2025-10-17 4:24 ` Christoph Hellwig @ 2025-10-24 9:18 ` Nirjhar Roy (IBM) 2025-10-24 22:16 ` Darrick J. Wong 1 sibling, 1 reply; 47+ messages in thread From: Nirjhar Roy (IBM) @ 2025-10-24 9:18 UTC (permalink / raw) To: Darrick J. Wong, zlang; +Cc: fstests, linux-xfs On Wed, 2025-10-15 at 09:38 -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > In this predicate, we should test an atomic write of the minimum > supported size, not just 4k. This fixes a problem where none of the > atomic write tests actually run on a 32k-fsblock xfs because you can't > do a sub-fsblock atomic write. > > Cc: <fstests@vger.kernel.org> # v2025.04.13 > Fixes: d90ee3b6496346 ("generic: add a test for atomic writes") > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > --- > common/rc | 14 +++++++++++--- > 1 file changed, 11 insertions(+), 3 deletions(-) > > > diff --git a/common/rc b/common/rc > index 1b78cd0c358bb9..dcae5bc33b19ce 100644 > --- a/common/rc > +++ b/common/rc > @@ -3030,16 +3030,24 @@ _require_xfs_io_command() > "pwrite") > # -N (RWF_NOWAIT) only works with direct vectored I/O writes > local pwrite_opts=" " > + local write_size="4k" > if [ "$param" == "-N" ]; then > opts+=" -d" > - pwrite_opts+="-V 1 -b 4k" > + pwrite_opts+="-V 1 -b $write_size" Nit: We can still keep this to 4k (or any random size and not necessarily a size = fsblocksize), right? > fi > if [ "$param" == "-A" ]; then > opts+=" -d" > - pwrite_opts+="-V 1 -b 4k" > + # try to write the minimum supported atomic write size > + write_size="$($XFS_IO_PROG -f -c "statx -r -m $STATX_WRITE_ATOMIC" $testfile 2>/dev/null | \ > + grep atomic_write_unit_min | \ > + grep -o '[0-9]\+')" > + if [ -z "$write_size" ] || [ "$write_size" = "0" ]; then > + write_size="0 --not-supported" > + fi > + pwrite_opts+="-V 1 -b $write_size" > fi > testio=`$XFS_IO_PROG -f $opts -c \ > - "pwrite $pwrite_opts $param 0 4k" $testfile 2>&1` > + "pwrite $pwrite_opts $param 0 $write_size" $testfile 2>&1` This looks good to me: Reviewed-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com> > param_checked="$pwrite_opts $param" > ;; > "scrub"|"repair") > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 8/8] common: fix _require_xfs_io_command pwrite -A for various blocksizes 2025-10-24 9:18 ` Nirjhar Roy (IBM) @ 2025-10-24 22:16 ` Darrick J. Wong 2025-10-30 6:03 ` Nirjhar Roy (IBM) 0 siblings, 1 reply; 47+ messages in thread From: Darrick J. Wong @ 2025-10-24 22:16 UTC (permalink / raw) To: Nirjhar Roy (IBM); +Cc: zlang, fstests, linux-xfs On Fri, Oct 24, 2025 at 02:48:00PM +0530, Nirjhar Roy (IBM) wrote: > On Wed, 2025-10-15 at 09:38 -0700, Darrick J. Wong wrote: > > From: Darrick J. Wong <djwong@kernel.org> > > > > In this predicate, we should test an atomic write of the minimum > > supported size, not just 4k. This fixes a problem where none of the > > atomic write tests actually run on a 32k-fsblock xfs because you can't > > do a sub-fsblock atomic write. > > > > Cc: <fstests@vger.kernel.org> # v2025.04.13 > > Fixes: d90ee3b6496346 ("generic: add a test for atomic writes") > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > > --- > > common/rc | 14 +++++++++++--- > > 1 file changed, 11 insertions(+), 3 deletions(-) > > > > > > diff --git a/common/rc b/common/rc > > index 1b78cd0c358bb9..dcae5bc33b19ce 100644 > > --- a/common/rc > > +++ b/common/rc > > @@ -3030,16 +3030,24 @@ _require_xfs_io_command() > > "pwrite") > > # -N (RWF_NOWAIT) only works with direct vectored I/O writes > > local pwrite_opts=" " > > + local write_size="4k" > > if [ "$param" == "-N" ]; then > > opts+=" -d" > > - pwrite_opts+="-V 1 -b 4k" > > + pwrite_opts+="-V 1 -b $write_size" > Nit: We can still keep this to 4k (or any random size and not necessarily a size = fsblocksize), > right? Well, yes, the default will still be 4k on an old kernel that doesn't support STATX_WRITE_ATOMIC. For kernels that do support that flag, write_size will now be whatever the filesystem claims is the minimum write unit. > > fi > > if [ "$param" == "-A" ]; then > > opts+=" -d" > > - pwrite_opts+="-V 1 -b 4k" > > + # try to write the minimum supported atomic write size > > + write_size="$($XFS_IO_PROG -f -c "statx -r -m $STATX_WRITE_ATOMIC" $testfile 2>/dev/null | \ > > + grep atomic_write_unit_min | \ > > + grep -o '[0-9]\+')" > > + if [ -z "$write_size" ] || [ "$write_size" = "0" ]; then > > + write_size="0 --not-supported" > > + fi > > + pwrite_opts+="-V 1 -b $write_size" > > fi > > testio=`$XFS_IO_PROG -f $opts -c \ > > - "pwrite $pwrite_opts $param 0 4k" $testfile 2>&1` > > + "pwrite $pwrite_opts $param 0 $write_size" $testfile 2>&1` > This looks good to me: > > Reviewed-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com> Thanks! --D > > param_checked="$pwrite_opts $param" > > ;; > > "scrub"|"repair") > > > > ^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 8/8] common: fix _require_xfs_io_command pwrite -A for various blocksizes 2025-10-24 22:16 ` Darrick J. Wong @ 2025-10-30 6:03 ` Nirjhar Roy (IBM) 0 siblings, 0 replies; 47+ messages in thread From: Nirjhar Roy (IBM) @ 2025-10-30 6:03 UTC (permalink / raw) To: Darrick J. Wong; +Cc: zlang, fstests, linux-xfs On 10/25/25 03:46, Darrick J. Wong wrote: > On Fri, Oct 24, 2025 at 02:48:00PM +0530, Nirjhar Roy (IBM) wrote: >> On Wed, 2025-10-15 at 09:38 -0700, Darrick J. Wong wrote: >>> From: Darrick J. Wong <djwong@kernel.org> >>> >>> In this predicate, we should test an atomic write of the minimum >>> supported size, not just 4k. This fixes a problem where none of the >>> atomic write tests actually run on a 32k-fsblock xfs because you can't >>> do a sub-fsblock atomic write. >>> >>> Cc: <fstests@vger.kernel.org> # v2025.04.13 >>> Fixes: d90ee3b6496346 ("generic: add a test for atomic writes") >>> Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> >>> --- >>> common/rc | 14 +++++++++++--- >>> 1 file changed, 11 insertions(+), 3 deletions(-) >>> >>> >>> diff --git a/common/rc b/common/rc >>> index 1b78cd0c358bb9..dcae5bc33b19ce 100644 >>> --- a/common/rc >>> +++ b/common/rc >>> @@ -3030,16 +3030,24 @@ _require_xfs_io_command() >>> "pwrite") >>> # -N (RWF_NOWAIT) only works with direct vectored I/O writes >>> local pwrite_opts=" " >>> + local write_size="4k" >>> if [ "$param" == "-N" ]; then >>> opts+=" -d" >>> - pwrite_opts+="-V 1 -b 4k" >>> + pwrite_opts+="-V 1 -b $write_size" >> Nit: We can still keep this to 4k (or any random size and not necessarily a size = fsblocksize), >> right? > Well, yes, the default will still be 4k on an old kernel that doesn't > support STATX_WRITE_ATOMIC. For kernels that do support that flag, > write_size will now be whatever the filesystem claims is the minimum > write unit. Okay. --NR > >>> fi >>> if [ "$param" == "-A" ]; then >>> opts+=" -d" >>> - pwrite_opts+="-V 1 -b 4k" >>> + # try to write the minimum supported atomic write size >>> + write_size="$($XFS_IO_PROG -f -c "statx -r -m $STATX_WRITE_ATOMIC" $testfile 2>/dev/null | \ >>> + grep atomic_write_unit_min | \ >>> + grep -o '[0-9]\+')" >>> + if [ -z "$write_size" ] || [ "$write_size" = "0" ]; then >>> + write_size="0 --not-supported" >>> + fi >>> + pwrite_opts+="-V 1 -b $write_size" >>> fi >>> testio=`$XFS_IO_PROG -f $opts -c \ >>> - "pwrite $pwrite_opts $param 0 4k" $testfile 2>&1` >>> + "pwrite $pwrite_opts $param 0 $write_size" $testfile 2>&1` >> This looks good to me: >> >> Reviewed-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com> > Thanks! > > --D > >>> param_checked="$pwrite_opts $param" >>> ;; >>> "scrub"|"repair") >>> >> -- Nirjhar Roy Linux Kernel Developer IBM, Bangalore ^ permalink raw reply [flat|nested] 47+ messages in thread
end of thread, other threads:[~2025-10-30 16:33 UTC | newest]
Thread overview: 47+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-15 16:36 [PATCHSET] fstests: more random fixes for v2025.10.05 Darrick J. Wong
2025-10-15 16:36 ` [PATCH 1/8] generic/427: try to ensure there's some free space before we do the aio test Darrick J. Wong
2025-10-17 4:18 ` Christoph Hellwig
2025-10-20 14:16 ` Zorro Lang
2025-10-20 18:35 ` Darrick J. Wong
2025-10-15 16:37 ` [PATCH 2/8] common/rc: fix _require_xfs_io_shutdown Darrick J. Wong
2025-10-17 4:18 ` Christoph Hellwig
2025-10-24 7:31 ` Nirjhar Roy (IBM)
2025-10-24 22:08 ` Darrick J. Wong
2025-10-30 6:31 ` Nirjhar Roy (IBM)
2025-10-15 16:37 ` [PATCH 3/8] generic/742: avoid infinite loop if no fiemap results Darrick J. Wong
2025-10-17 4:19 ` Christoph Hellwig
2025-10-15 16:37 ` [PATCH 4/8] generic/{482,757}: skip test if there are no FUA writes Darrick J. Wong
2025-10-17 4:22 ` Christoph Hellwig
2025-10-17 16:24 ` Darrick J. Wong
2025-10-20 6:59 ` Christoph Hellwig
2025-10-15 16:38 ` [PATCH 5/8] generic/772: actually check for file_getattr special file support Darrick J. Wong
2025-10-17 4:23 ` Christoph Hellwig
2025-10-17 17:46 ` Zorro Lang
2025-10-17 22:54 ` Darrick J. Wong
2025-10-18 7:57 ` Zorro Lang
2025-10-20 16:26 ` Darrick J. Wong
2025-10-24 7:44 ` Nirjhar Roy (IBM)
2025-10-24 22:10 ` Darrick J. Wong
2025-10-30 6:05 ` Nirjhar Roy (IBM)
2025-10-30 16:33 ` Darrick J. Wong
2025-10-15 16:38 ` [PATCH 6/8] common/filter: fix _filter_file_attributes to handle xfs file flags Darrick J. Wong
2025-10-17 4:23 ` Christoph Hellwig
2025-10-17 16:22 ` Darrick J. Wong
2025-10-20 7:01 ` Christoph Hellwig
2025-10-20 16:37 ` Darrick J. Wong
2025-10-21 5:30 ` Christoph Hellwig
2025-10-21 14:47 ` Darrick J. Wong
2025-10-15 16:38 ` [PATCH 7/8] common/attr: fix _require_noattr2 Darrick J. Wong
2025-10-17 4:24 ` Christoph Hellwig
2025-10-17 17:13 ` Zorro Lang
2025-10-17 22:55 ` Darrick J. Wong
2025-10-18 14:43 ` Zorro Lang
2025-10-20 16:27 ` Darrick J. Wong
2025-10-24 9:01 ` Nirjhar Roy (IBM)
2025-10-24 22:15 ` Darrick J. Wong
2025-10-30 6:02 ` Nirjhar Roy (IBM)
2025-10-15 16:38 ` [PATCH 8/8] common: fix _require_xfs_io_command pwrite -A for various blocksizes Darrick J. Wong
2025-10-17 4:24 ` Christoph Hellwig
2025-10-24 9:18 ` Nirjhar Roy (IBM)
2025-10-24 22:16 ` Darrick J. Wong
2025-10-30 6:03 ` Nirjhar Roy (IBM)
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).