linux-f2fs-devel.lists.sourceforge.net archive mirror
 help / color / mirror / Atom feed
* [f2fs-dev] [PATCH 1/2] f2fs/021: test quota mount option
@ 2025-09-01  2:03 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 18:18 ` [f2fs-dev] [PATCH 1/2] f2fs/021: test quota mount option Zorro Lang via Linux-f2fs-devel
  0 siblings, 2 replies; 7+ messages in thread
From: Chao Yu via Linux-f2fs-devel @ 2025-09-01  2:03 UTC (permalink / raw)
  To: Zorro Lang, fstests; +Cc: jaegeuk, linux-f2fs-devel

This testcase tries to check whether f2fs can handle "usrjquota="
during remount correctly, it expects kernel will encounter NULL
pointer dereference bug w/o the fix ("f2fs: fix to avoid NULL pointer
dereference in f2fs_check_quota_consistency()").

Cc: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Chao Yu <chao@kernel.org>
---
 tests/f2fs/021     | 30 ++++++++++++++++++++++++++++++
 tests/f2fs/021.out |  2 ++
 2 files changed, 32 insertions(+)
 create mode 100755 tests/f2fs/021
 create mode 100644 tests/f2fs/021.out

diff --git a/tests/f2fs/021 b/tests/f2fs/021
new file mode 100755
index 00000000..c41760fc
--- /dev/null
+++ b/tests/f2fs/021
@@ -0,0 +1,30 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2025 Chao Yu.  All Rights Reserved.
+#
+# FS QA Test No. f2fs/021
+#
+# This testcase tries to check whether f2fs can handle "usrjquota="
+# during remount correctly
+#
+. ./common/preamble
+_begin_fstest auto quick mount
+
+_fixed_by_kernel_commit xxxxxxxxxxxx \
+	"f2fs: fix to avoid NULL pointer dereference in f2fs_check_quota_consistency()"
+
+_require_scratch
+
+_scratch_mkfs >> $seqres.full
+_scratch_mount "-o usrquota"
+quotacheck -uc $SCRATCH_MNT
+_scratch_unmount
+
+_scratch_mount "-o usrjquota=aquota.user,jqfmt=vfsold"
+_scratch_mount "-o remount,usrjquota=,jqfmt=vfsold"
+_scratch_unmount
+
+echo "Silence is golden"
+
+status=0
+exit
diff --git a/tests/f2fs/021.out b/tests/f2fs/021.out
new file mode 100644
index 00000000..09f4062d
--- /dev/null
+++ b/tests/f2fs/021.out
@@ -0,0 +1,2 @@
+QA output created by 021
+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

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [f2fs-dev] [PATCH 2/2] f2fs/022: do sanity check on footer of non inode dnode
  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 ` Chao Yu via Linux-f2fs-devel
  2025-09-26 19:22   ` 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
  1 sibling, 1 reply; 7+ messages in thread
From: Chao Yu via Linux-f2fs-devel @ 2025-09-01  2:03 UTC (permalink / raw)
  To: Zorro Lang, fstests; +Cc: jaegeuk, linux-f2fs-devel

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
+
+# 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

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [f2fs-dev] [PATCH 1/2] f2fs/021: test quota mount option
  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 18:18 ` Zorro Lang via Linux-f2fs-devel
  2025-09-28  6:43   ` Chao Yu via Linux-f2fs-devel
  1 sibling, 1 reply; 7+ messages in thread
From: Zorro Lang via Linux-f2fs-devel @ 2025-09-26 18:18 UTC (permalink / raw)
  To: Chao Yu; +Cc: jaegeuk, Zorro Lang, fstests, linux-f2fs-devel

On Mon, Sep 01, 2025 at 10:03:30AM +0800, Chao Yu wrote:
> This testcase tries to check whether f2fs can handle "usrjquota="
> during remount correctly, it expects kernel will encounter NULL
> pointer dereference bug w/o the fix ("f2fs: fix to avoid NULL pointer
> dereference in f2fs_check_quota_consistency()").
> 
> Cc: Jaegeuk Kim <jaegeuk@kernel.org>
> Signed-off-by: Chao Yu <chao@kernel.org>
> ---
>  tests/f2fs/021     | 30 ++++++++++++++++++++++++++++++
>  tests/f2fs/021.out |  2 ++
>  2 files changed, 32 insertions(+)
>  create mode 100755 tests/f2fs/021
>  create mode 100644 tests/f2fs/021.out
> 
> diff --git a/tests/f2fs/021 b/tests/f2fs/021
> new file mode 100755
> index 00000000..c41760fc
> --- /dev/null
> +++ b/tests/f2fs/021
> @@ -0,0 +1,30 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2025 Chao Yu.  All Rights Reserved.
> +#
> +# FS QA Test No. f2fs/021
> +#
> +# This testcase tries to check whether f2fs can handle "usrjquota="
> +# during remount correctly
> +#
> +. ./common/preamble
> +_begin_fstest auto quick mount
                                  ^^^^^^^^^^^^^
                                  quota remount

I'll help to add these two tags when I merge it. Others look good to me,
if you've maken sure it can trigger the bug you want to uncover.

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

> +
> +_fixed_by_kernel_commit xxxxxxxxxxxx \
> +	"f2fs: fix to avoid NULL pointer dereference in f2fs_check_quota_consistency()"
> +
> +_require_scratch
> +
> +_scratch_mkfs >> $seqres.full
> +_scratch_mount "-o usrquota"
> +quotacheck -uc $SCRATCH_MNT
> +_scratch_unmount
> +
> +_scratch_mount "-o usrjquota=aquota.user,jqfmt=vfsold"
> +_scratch_mount "-o remount,usrjquota=,jqfmt=vfsold"
> +_scratch_unmount
> +
> +echo "Silence is golden"
> +
> +status=0
> +exit
> diff --git a/tests/f2fs/021.out b/tests/f2fs/021.out
> new file mode 100644
> index 00000000..09f4062d
> --- /dev/null
> +++ b/tests/f2fs/021.out
> @@ -0,0 +1,2 @@
> +QA output created by 021
> +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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [f2fs-dev] [PATCH 2/2] f2fs/022: do sanity check on footer of non inode dnode
  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
  0 siblings, 1 reply; 7+ messages in thread
From: Zorro Lang via Linux-f2fs-devel @ 2025-09-26 19:22 UTC (permalink / raw)
  To: Chao Yu; +Cc: jaegeuk, Zorro Lang, fstests, linux-f2fs-devel

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
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [f2fs-dev] [PATCH 1/2] f2fs/021: test quota mount option
  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
  0 siblings, 0 replies; 7+ messages in thread
From: Chao Yu via Linux-f2fs-devel @ 2025-09-28  6:43 UTC (permalink / raw)
  To: Zorro Lang; +Cc: jaegeuk, Zorro Lang, fstests, linux-f2fs-devel

On 9/27/2025 2:18 AM, Zorro Lang wrote:
> On Mon, Sep 01, 2025 at 10:03:30AM +0800, Chao Yu wrote:
>> This testcase tries to check whether f2fs can handle "usrjquota="
>> during remount correctly, it expects kernel will encounter NULL
>> pointer dereference bug w/o the fix ("f2fs: fix to avoid NULL pointer
>> dereference in f2fs_check_quota_consistency()").
>>
>> Cc: Jaegeuk Kim <jaegeuk@kernel.org>
>> Signed-off-by: Chao Yu <chao@kernel.org>
>> ---
>>   tests/f2fs/021     | 30 ++++++++++++++++++++++++++++++
>>   tests/f2fs/021.out |  2 ++
>>   2 files changed, 32 insertions(+)
>>   create mode 100755 tests/f2fs/021
>>   create mode 100644 tests/f2fs/021.out
>>
>> diff --git a/tests/f2fs/021 b/tests/f2fs/021
>> new file mode 100755
>> index 00000000..c41760fc
>> --- /dev/null
>> +++ b/tests/f2fs/021
>> @@ -0,0 +1,30 @@
>> +#! /bin/bash
>> +# SPDX-License-Identifier: GPL-2.0
>> +# Copyright (c) 2025 Chao Yu.  All Rights Reserved.
>> +#
>> +# FS QA Test No. f2fs/021
>> +#
>> +# This testcase tries to check whether f2fs can handle "usrjquota="
>> +# during remount correctly
>> +#
>> +. ./common/preamble
>> +_begin_fstest auto quick mount
>                                    ^^^^^^^^^^^^^
>                                    quota remount
> 
> I'll help to add these two tags when I merge it. Others look good to me,
> if you've maken sure it can trigger the bug you want to uncover.
> 
> Reviewed-by: Zorro Lang <zlang@redhat.com>

Thanks for the fix.

Thanks,

> 
>> +
>> +_fixed_by_kernel_commit xxxxxxxxxxxx \
>> +	"f2fs: fix to avoid NULL pointer dereference in f2fs_check_quota_consistency()"
>> +
>> +_require_scratch
>> +
>> +_scratch_mkfs >> $seqres.full
>> +_scratch_mount "-o usrquota"
>> +quotacheck -uc $SCRATCH_MNT
>> +_scratch_unmount
>> +
>> +_scratch_mount "-o usrjquota=aquota.user,jqfmt=vfsold"
>> +_scratch_mount "-o remount,usrjquota=,jqfmt=vfsold"
>> +_scratch_unmount
>> +
>> +echo "Silence is golden"
>> +
>> +status=0
>> +exit
>> diff --git a/tests/f2fs/021.out b/tests/f2fs/021.out
>> new file mode 100644
>> index 00000000..09f4062d
>> --- /dev/null
>> +++ b/tests/f2fs/021.out
>> @@ -0,0 +1,2 @@
>> +QA output created by 021
>> +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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [f2fs-dev] [PATCH 2/2] f2fs/022: do sanity check on footer of non inode dnode
  2025-09-26 19:22   ` Zorro Lang via Linux-f2fs-devel
@ 2025-09-28  6:48     ` Chao Yu via Linux-f2fs-devel
  2025-09-28  8:17       ` Zorro Lang via Linux-f2fs-devel
  0 siblings, 1 reply; 7+ messages in thread
From: Chao Yu via Linux-f2fs-devel @ 2025-09-28  6:48 UTC (permalink / raw)
  To: Zorro Lang; +Cc: jaegeuk, Zorro Lang, fstests, linux-f2fs-devel

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [f2fs-dev] [PATCH 2/2] f2fs/022: do sanity check on footer of non inode dnode
  2025-09-28  6:48     ` Chao Yu via Linux-f2fs-devel
@ 2025-09-28  8:17       ` Zorro Lang via Linux-f2fs-devel
  0 siblings, 0 replies; 7+ messages in thread
From: Zorro Lang via Linux-f2fs-devel @ 2025-09-28  8:17 UTC (permalink / raw)
  To: Chao Yu; +Cc: jaegeuk, Zorro Lang, fstests, linux-f2fs-devel

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 <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?

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
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-09-28  8:17 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
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

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).