On 8/15/25 05:18, Zorro Lang wrote: > On Thu, Aug 14, 2025 at 05:07:12PM +0800, Chao Yu wrote: >> This is a regression test: >> 1. create directory >> 2. add a new xattr entry to create xattr node >> 3. use inject.f2fs to inject nid of xattr node w/ ino in a file >> 4. check whether f2fs kernel module will detect and report such >> corruption in the file >> >> Cc: Jaegeuk Kim <jaeg...@kernel.org> >> Signed-off-by: Chao Yu <c...@kernel.org> >> --- >> v3: >> - use _require_scratch_nocheck instead of _require_scratch >> - add missing _require_attrs user >> - add comments for why exporting MKFS_OPTIONS="" >> tests/f2fs/020 | 51 ++++++++++++++++++++++++++++++++++++++++++++++ >> tests/f2fs/020.out | 2 ++ >> 2 files changed, 53 insertions(+) >> create mode 100755 tests/f2fs/020 >> create mode 100644 tests/f2fs/020.out >> >> diff --git a/tests/f2fs/020 b/tests/f2fs/020 >> new file mode 100755 >> index 00000000..7ce1f92f >> --- /dev/null >> +++ b/tests/f2fs/020 >> @@ -0,0 +1,51 @@ >> +#! /bin/bash >> +# SPDX-License-Identifier: GPL-2.0 >> +# Copyright (c) 2025 Chao Yu. All Rights Reserved. >> +# >> +# FS QA Test No. f2fs/020 >> +# >> +# This is a regression test: >> +# 1. create directory >> +# 2. add a new xattr entry to create xattr node >> +# 3. use inject.f2fs to inject nid of xattr node w/ ino in a file >> +# 4. check whether f2fs kernel module will detect and report such >> +# corruption in the file >> +# >> +. ./common/preamble >> +_begin_fstest auto quick rw >> + >> +. ./common/attr >> + >> +_fixed_by_kernel_commit 061cf3a84bde \ >> + "f2fs: fix to do sanity check on ino and xnid" >> + >> +_require_scratch_nocheck >> +_require_command "$F2FS_INJECT_PROG" inject.f2fs >> +_require_attrs user >> + >> +# remove all mkfs options to avoid layout change of on-disk inode >> +export MKFS_OPTIONS="" >> + >> +testdir=$SCRATCH_MNT/testdir >> + >> +_scratch_mkfs >> $seqres.full >> +_scratch_mount "-o user_xattr,noinline_xattr" >> + >> +mkdir $testdir >> +# add a new xattr entry to create xattr node >> +$SETFATTR_PROG -n user.abc -v 123 $testdir >> + >> +_scratch_unmount >> + >> +# inject i_xattr_nid w/ nid of inode node >> +$F2FS_INJECT_PROG --node --mb i_xattr_nid --nid 4 --val 4 $SCRATCH_DEV >> >> $seqres.full
Zorro, I missed one thing, this testcase relies on a f2fs-tools patch, please apply this before running the testcase. https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git/commit/?h=dev-test&id=2174461cdd0a22edc5e7d172605bff4740582438 Do I need to create a _require_* function for f2fs to verify whether f2fs-tools support the required feature or not? >> + >> +_scratch_mount Oh, I may missed to add "-o acl,user_xattr" here. >> +# may potentially trigger a deadlock w/ double inode_lock on parent's inode >> +mkdir $testdir/dir >> $seqres.full 2>&1 >> +_scratch_unmount > > Can you provide a test result to prove this test case trigger a failure > on general kernel (not debug kernel). If it can, then this version is good > to me :) Well, expectation is it will hang kernel, so that the f2fs/020 will stop here once we encounter the issue. Thanks, > > Thanks, > Zorro > >> + >> +echo "Silence is golden" >> + >> +status=0 >> +exit >> diff --git a/tests/f2fs/020.out b/tests/f2fs/020.out >> new file mode 100644 >> index 00000000..20d7944e >> --- /dev/null >> +++ b/tests/f2fs/020.out >> @@ -0,0 +1,2 @@ >> +QA output created by 020 >> +Silence is golden >> -- >> 2.49.0 >> > _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel