From: Chao Yu via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net>
To: Zorro Lang <zlang@redhat.com>
Cc: jaegeuk@kernel.org, Zorro Lang <zlang@kernel.org>,
fstests@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [f2fs-dev] [PATCH 2/2] f2fs/022: do sanity check on footer of non inode dnode
Date: Sun, 28 Sep 2025 14:48:23 +0800 [thread overview]
Message-ID: <802f7ad9-11e8-4b91-81b5-7579b7e8a255@kernel.org> (raw)
In-Reply-To: <20250926192254.djrwx55itz422yft@dell-per750-06-vm-08.rhts.eng.pek2.redhat.com>
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 <jaegeuk@kernel.org>
>> Signed-off-by: Chao Yu <chao@kernel.org>
>> ---
>> 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?
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"
>> +_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
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
next prev parent reply other threads:[~2025-09-28 6:48 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-01 2:03 [f2fs-dev] [PATCH 1/2] f2fs/021: test quota mount option Chao Yu via Linux-f2fs-devel
2025-09-01 2:03 ` [f2fs-dev] [PATCH 2/2] f2fs/022: do sanity check on footer of non inode dnode Chao Yu via Linux-f2fs-devel
2025-09-26 19:22 ` Zorro Lang via Linux-f2fs-devel
2025-09-28 6:48 ` Chao Yu via Linux-f2fs-devel [this message]
2025-09-28 8:17 ` Zorro Lang via Linux-f2fs-devel
2025-09-26 18:18 ` [f2fs-dev] [PATCH 1/2] f2fs/021: test quota mount option Zorro Lang via Linux-f2fs-devel
2025-09-28 6:43 ` Chao Yu via Linux-f2fs-devel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=802f7ad9-11e8-4b91-81b5-7579b7e8a255@kernel.org \
--to=linux-f2fs-devel@lists.sourceforge.net \
--cc=chao@kernel.org \
--cc=fstests@vger.kernel.org \
--cc=jaegeuk@kernel.org \
--cc=zlang@kernel.org \
--cc=zlang@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).