On Sun, Sep 28, 2025 at 02:48:23PM +0800, Chao Yu wrote:
> On 9/27/2025 3:22 AM, Zorro Lang wrote:
> > On Mon, Sep 01, 2025 at 10:03:31AM +0800, Chao Yu wrote:
> > > This is a regression test:
> > > 1. create foo & bar
> > > 2. write 8M data to foo
> > > 3. use inject.f2fs to inject i_nid[0] of foo w/ ino of bar
> > > 4. fpunch in foo w/ specified range
> > >
> > > If we haven't applied kernel patch ("f2fs: fix to do sanity check on
> > > node footer for non inode dnode"), f2fs may missed to do sanity check
> > > on corrupted dnode, result in panic in step 4).
> > >
> > > Cc: Jaegeuk Kim <[email protected]>
> > > Signed-off-by: Chao Yu <[email protected]>
> > > ---
> > > tests/f2fs/022 | 52 ++++++++++++++++++++++++++++++++++++++++++++++
> > > tests/f2fs/022.out | 2 ++
> > > 2 files changed, 54 insertions(+)
> > > create mode 100755 tests/f2fs/022
> > > create mode 100644 tests/f2fs/022.out
> > >
> > > diff --git a/tests/f2fs/022 b/tests/f2fs/022
> > > new file mode 100755
> > > index 00000000..a5e19a71
> > > --- /dev/null
> > > +++ b/tests/f2fs/022
> > > @@ -0,0 +1,52 @@
> > > +#! /bin/bash
> > > +# SPDX-License-Identifier: GPL-2.0
> > > +# Copyright (c) 2025 Chao Yu. All Rights Reserved.
> > > +#
> > > +# FS QA Test No. f2fs/022
> > > +#
> > > +# This is a regression test:
> > > +# 1. create foo & bar
> > > +# 2. write 8M data to foo
> > > +# 3. use inject.f2fs to inject i_nid[0] of foo w/ ino of bar
> > > +# 4. fpunch in foo w/ specified range
> > > +#
> > > +. ./common/preamble
> > > +_begin_fstest auto quick rw
> > > +
> > > +. ./common/attr
> > > +
> > > +_fixed_by_kernel_commit xxxxxxxxxxxx \
> > > + "f2fs: fix to do sanity check on node footer for non inode dnode"
> > > +
> > > +_require_scratch_nocheck
> > > +_require_command "$F2FS_INJECT_PROG" inject.f2fs
> > > +_require_xfs_io_command "fpunch"
> > > +_require_kernel_config CONFIG_F2FS_CHECK_FS
> >
> > Looks like the CONFIG_F2FS_CHECK_FS is a necessary condition to reproduce
> > that bug, right? I'm wondering is there a better way to check if
> > CONFIG_F2FS_CHECK_FS
> > is enabled, likes reading someone file in /sys or what ever else? Checking
> > kernel config
>
> No, I don't see any sysfs entry for checing if CONFIG_F2FS_CHECK_FS is
> enabled.
>
> I checked the testcase w/ image which has CONFIG_F2FS_CHECK_FS=off, the
> testcase falls into a deadloop inside kernel, so it's fine to get rid of
> the CONFIG_F2FS_CHECK_FS requirement? Thoughts?
Sure, let's remove the unnecessary requirement :) And ...
>
> Thanks,
>
> > isn't always a recommended way, except no better idea :)
> >
> > > +
> > > +# remove all mkfs options to avoid layout change of on-disk inode
> > > +export MKFS_OPTIONS=""
> > > +
> > > +foo_path=$SCRATCH_MNT/foo
> > > +bar_path=$SCRATCH_MNT/bar
> > > +
> > > +_scratch_mkfs >> $seqres.full
> > > +_scratch_mount
> > > +
> > > +touch $foo_path
> > > +touch $bar_path
> > > +$XFS_IO_PROG $foo_path -c "pwrite 0 8M" >> $seqres.full
> > > +sync
> > > +foo_ino=`stat -c '%i' $foo_path`
> > > +bar_ino=`stat -c '%i' $bar_path`
> > > +_scratch_unmount
> > > +
> > > +# inject foo inode to replace i_nid[0] w/ to bar ino
> > > +$F2FS_INJECT_PROG --node --mb i_nid --nid $foo_ino --idx 0 --val
> > > $bar_ino $SCRATCH_DEV >> $seqres.full || _fail "failed to inject"
> > > +
> > > +_scratch_mount
> > > +# expect to trigger panic
> > > +$XFS_IO_PROG $foo_path -c "fpunch 6984k 4k"
... if you might be better to change this comment a bit :)
If you'd like to resend this patchset, please change the patch 1/2 by the way.
then I can merge your next version directly :)
Thanks,
Zorro
> > > +_scratch_unmount
> > > +
> > > +status=0
> > > +exit
> > > diff --git a/tests/f2fs/022.out b/tests/f2fs/022.out
> > > new file mode 100644
> > > index 00000000..5307e3d7
> > > --- /dev/null
> > > +++ b/tests/f2fs/022.out
> > > @@ -0,0 +1,2 @@
> > > +QA output created by 022
> > > +fallocate: Structure needs cleaning
> > > --
> > > 2.49.0
> > >
> >
>
_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel