On Wed, Oct 29, 2025 at 07:54:13PM +0800, Chao Yu wrote:
> After commit 5c1768b67250 ("f2fs: fix to do sanity check correctly on
> i_inline_xattr_size"), f2fs should handle corrupted i_inline_xattr_size
> correctly, let's add this regression testcase to check that.
>
> Cc: Jaegeuk Kim <[email protected]>
> Signed-off-by: Chao Yu <[email protected]>
> ---
Hi Chao,
Thanks for new test case for f2fs. Some review points as below :)
> tests/f2fs/023 | 44 ++++++++++++++++++++++++++++++++++++++++++++
> tests/f2fs/023.out | 2 ++
> 2 files changed, 46 insertions(+)
> create mode 100755 tests/f2fs/023
> create mode 100644 tests/f2fs/023.out
>
> diff --git a/tests/f2fs/023 b/tests/f2fs/023
> new file mode 100755
> index 00000000..d1b7df32
> --- /dev/null
> +++ b/tests/f2fs/023
> @@ -0,0 +1,44 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2025 Chao Yu <[email protected]>
> +#
> +# FS QA Test No. f2fs/023
> +#
> +# This testcase tries to inject fault into inode.i_inline_xattr_size,
> +# and check whether sanity check of f2fs can handle fault correctly.
> +#
> +
> +. ./common/preamble
> +_begin_fstest auto quick rw
> +
> +_fixed_by_kernel_commit 5c1768b67250 \
> + "f2fs: fix to do sanity check correctly on i_inline_xattr_size"
> +
> +_require_scratch_nocheck
> +_require_inject_f2fs_command node i_inline
> +_require_inject_f2fs_command node i_inline_xattr_size
> +
> +testfile=$SCRATCH_MNT/testfile
> +
> +# remove all mkfs options to avoid layout change of on-disk inode
> +export MKFS_OPTIONS=""
> +
> +_scratch_mkfs "-O extra_attr,flexible_inline_xattr" >> $seqres.full
As you use specific mkfs options, so better to _fail "..." if mkfs fails.
> +_scratch_mount "-o inline_xattr_size=512" >>$seqres.full 2>&1
> +touch $testfile
> +_scratch_unmount
> +
> +# inject .i_inline field: clear F2FS_EXTRA_ATTR bit
> +$F2FS_INJECT_PROG --node --mb i_inline --nid 4 --val 0x1 $SCRATCH_DEV \
> + >>$seqres.full || _fail "failed to inject i_inline"
> +
> +# inject .i_inline_xattr_size field from 512 to 2048
> +$F2FS_INJECT_PROG --node --mb i_inline_xattr_size --nid 4 --val 2048
> $SCRATCH_DEV \
> + >>$seqres.full || _fail "failed to inject i_inline_xattr_size"
I found my system doesn't support i_inline_xattr_size,
# inject.f2fs -V
inject.f2fs 1.16.0 (2025-08-12)
I tried to removed above "_require_inject_f2fs_command node
i_inline_xattr_size",
but I found this test didn't exit from above _fail. The .full file got:
[inject_inode:833] unknown or unsupported member "i_inline_xattr_size"
So are you sure the $F2FS_INJECT_PROG return error if "failed to inject
i_inline_xattr_size" :)
> +
> +_scratch_mount
> +
> +getfattr -n user.test "$testfile" 2>&1 | awk -F ': ' '/Structure needs
> cleaning/ { print $NF }'
As you need "user" attribute, so you need "_require_attrs" (. ./common/attr),
also
the test group should have "attr".
If you don't need _getfattr, please use $GETFATTR_PROG at least.
And how about replace the "awk" with "_filter_scratch" (. ./common/filter)
Thanks,
Zorro
> +
> +status=0
> +exit
> diff --git a/tests/f2fs/023.out b/tests/f2fs/023.out
> new file mode 100644
> index 00000000..7f16f33f
> --- /dev/null
> +++ b/tests/f2fs/023.out
> @@ -0,0 +1,2 @@
> +QA output created by 023
> +Structure needs cleaning
> --
> 2.49.0
>
_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel