Re: [PATCH v1.1 1/3] xfs/018: remove inline xattr recovery tests

Zorro Lang
2026-02-08T17:27:05Z

On Fri, Feb 06, 2026 at 01:54:00PM -0800, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
>
> In Linux 7.0 we've changed the extended attribute update code to try to
> take a shortcut for performance reasons. Before walking through the
> attr intent state machine (slow), the update will check to see if the
> attr structure is in short format and will stay in that format after the
> change. If so, then the incore inode can be updated and logged, and
> the update is complete (fast) in a single transaction.
>
> (Obviously, for complex attr structures or large changes we still walk
> through the intent machinery.)
>
> However, xfs/018 tests the behavior of the "larp" error injector, which
> only triggers from inside the attr intent state machine. Therefore, the
> short format tests don't actually trip the injector. It makes no sense
> to add a new larp injection callsite for the shortcut because either the
> single transaction gets written to disk or it doesn't.
>
> The golden output no longer matches because the attr update doesn't
> return EIO and shut down the filesystem due to the larp injection.

Oh, that really makes sense to me now, thanks for this detailed explanation.

Reviewed-by: Zorro Lang <zlang@redhat.com>

>
> Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
> ---
> v1.1: improve commit message, add rvb
> ---
> tests/xfs/018 | 24 ------------------------
> tests/xfs/018.out | 45 ---------------------------------------------
> 2 files changed, 69 deletions(-)
>
> diff --git a/tests/xfs/018 b/tests/xfs/018
> index 8b6a3e1c508045..9b69c9cb14b33d 100755
> --- a/tests/xfs/018
> +++ b/tests/xfs/018
> @@ -127,16 +127,6 @@ mkdir $testdir
>
> require_larp
>
> -# empty, inline
> -create_test_file empty_file1 0
> -test_attr_replay empty_file1 "attr_name" $attr64 "s" "larp"
> -test_attr_replay empty_file1 "attr_name" $attr64 "r" "larp"
> -
> -# empty, inline with an unaligned value
> -create_test_file empty_fileX 0
> -test_attr_replay empty_fileX "attr_nameX" $attr17 "s" "larp"
> -test_attr_replay empty_fileX "attr_nameX" $attr17 "r" "larp"
> -
> # empty, internal
> create_test_file empty_file2 0
> test_attr_replay empty_file2 "attr_name" $attr1k "s" "larp"
> @@ -152,16 +142,6 @@ create_test_file empty_fileY 0
> test_attr_replay empty_fileY "attr_name" $attr32l "s" "larp"
> test_attr_replay empty_fileY "attr_name" $attr32l "r" "larp"
>
> -# inline, inline
> -create_test_file inline_file1 1 $attr16
> -test_attr_replay inline_file1 "attr_name2" $attr64 "s" "larp"
> -test_attr_replay inline_file1 "attr_name2" $attr64 "r" "larp"
> -
> -# inline, internal
> -create_test_file inline_file2 1 $attr16
> -test_attr_replay inline_file2 "attr_name2" $attr1k "s" "larp"
> -test_attr_replay inline_file2 "attr_name2" $attr1k "r" "larp"
> -
> # inline, remote
> create_test_file inline_file3 1 $attr16
> test_attr_replay inline_file3 "attr_name2" $attr64k "s" "larp"
> @@ -195,10 +175,6 @@ create_test_file remote_file2 1 $attr64k
> test_attr_replay remote_file2 "attr_name2" $attr64k "s" "larp"
> test_attr_replay remote_file2 "attr_name2" $attr64k "r" "larp"
>
> -# replace shortform with different value
> -create_test_file sf_file 2 $attr64
> -test_attr_replay sf_file "attr_name2" $attr16 "s" "larp"
> -
> # replace leaf with different value
> create_test_file leaf_file 3 $attr1k
> test_attr_replay leaf_file "attr_name2" $attr256 "s" "larp"
> diff --git a/tests/xfs/018.out b/tests/xfs/018.out
> index ad8fd5266f06d0..be1d6422af65a5 100644
> --- a/tests/xfs/018.out
> +++ b/tests/xfs/018.out
> @@ -1,26 +1,6 @@
> QA output created by 018
> *** mkfs
> *** mount FS
> -attr_set: Input/output error
> -Could not set "attr_name" for SCRATCH_MNT/testdir/empty_file1
> -touch: cannot touch 'SCRATCH_MNT/testdir/empty_file1': Input/output error
> -attr_name: e889d82dd111d6315d7b1edce2b1b30f -
> -
> -attr_remove: Input/output error
> -Could not remove "attr_name" for SCRATCH_MNT/testdir/empty_file1
> -touch: cannot touch 'SCRATCH_MNT/testdir/empty_file1': Input/output error
> -attr_name: d41d8cd98f00b204e9800998ecf8427e -
> -
> -attr_set: Input/output error
> -Could not set "attr_nameX" for SCRATCH_MNT/testdir/empty_fileX
> -touch: cannot touch 'SCRATCH_MNT/testdir/empty_fileX': Input/output error
> -attr_nameX: cb72c43fb97dd3cb4ac6ad2d9bd365e1 -
> -
> -attr_remove: Input/output error
> -Could not remove "attr_nameX" for SCRATCH_MNT/testdir/empty_fileX
> -touch: cannot touch 'SCRATCH_MNT/testdir/empty_fileX': Input/output error
> -attr_nameX: d41d8cd98f00b204e9800998ecf8427e -
> -
> attr_set: Input/output error
> Could not set "attr_name" for SCRATCH_MNT/testdir/empty_file2
> touch: cannot touch 'SCRATCH_MNT/testdir/empty_file2': Input/output error
> @@ -51,26 +31,6 @@ Could not remove "attr_name" for SCRATCH_MNT/testdir/empty_fileY
> touch: cannot touch 'SCRATCH_MNT/testdir/empty_fileY': Input/output error
> attr_name: d41d8cd98f00b204e9800998ecf8427e -
>
> -attr_set: Input/output error
> -Could not set "attr_name2" for SCRATCH_MNT/testdir/inline_file1
> -touch: cannot touch 'SCRATCH_MNT/testdir/inline_file1': Input/output error
> -attr_name2: e889d82dd111d6315d7b1edce2b1b30f -
> -
> -attr_remove: Input/output error
> -Could not remove "attr_name2" for SCRATCH_MNT/testdir/inline_file1
> -touch: cannot touch 'SCRATCH_MNT/testdir/inline_file1': Input/output error
> -attr_name2: d41d8cd98f00b204e9800998ecf8427e -
> -
> -attr_set: Input/output error
> -Could not set "attr_name2" for SCRATCH_MNT/testdir/inline_file2
> -touch: cannot touch 'SCRATCH_MNT/testdir/inline_file2': Input/output error
> -attr_name2: 4198214ee02e6ad7ac39559cd3e70070 -
> -
> -attr_remove: Input/output error
> -Could not remove "attr_name2" for SCRATCH_MNT/testdir/inline_file2
> -touch: cannot touch 'SCRATCH_MNT/testdir/inline_file2': Input/output error
> -attr_name2: d41d8cd98f00b204e9800998ecf8427e -
> -
> attr_set: Input/output error
> Could not set "attr_name2" for SCRATCH_MNT/testdir/inline_file3
> touch: cannot touch 'SCRATCH_MNT/testdir/inline_file3': Input/output error
> @@ -131,11 +91,6 @@ Could not remove "attr_name2" for SCRATCH_MNT/testdir/remote_file2
> touch: cannot touch 'SCRATCH_MNT/testdir/remote_file2': Input/output error
> attr_name2: d41d8cd98f00b204e9800998ecf8427e -
>
> -attr_set: Input/output error
> -Could not set "attr_name2" for SCRATCH_MNT/testdir/sf_file
> -touch: cannot touch 'SCRATCH_MNT/testdir/sf_file': Input/output error
> -attr_name2: e43df9b5a46b755ea8f1b4dd08265544 -
> -
> attr_set: Input/output error
> Could not set "attr_name2" for SCRATCH_MNT/testdir/leaf_file
> touch: cannot touch 'SCRATCH_MNT/testdir/leaf_file': Input/output error
>