* [f2fs-dev] [PATCH 1/3] f2fs/018: check data eof after partial truncation on compressed cluster
@ 2025-08-11 9:44 Chao Yu via Linux-f2fs-devel
2025-08-11 9:44 ` [f2fs-dev] [PATCH 2/3] f2fs/019: do sanity check on mapping table Chao Yu via Linux-f2fs-devel
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Chao Yu via Linux-f2fs-devel @ 2025-08-11 9:44 UTC (permalink / raw)
To: Zorro Lang, fstests; +Cc: jaegeuk, linux-f2fs-devel
This is a regression testcase, it is added to check below case
and its variants:
- write 16k data into compressed file (data will be compressed)
- truncate file to 12k (truncate partial data in compressed cluster)
- truncate file to 20k
- verify data in range of [12k, 16k] to see whether data is all zero
or not
Cc: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Chao Yu <chao@kernel.org>
---
tests/f2fs/018 | 58 ++++++++++++++++++++++++++++++++++++++++++++++
tests/f2fs/018.out | 2 ++
2 files changed, 60 insertions(+)
create mode 100755 tests/f2fs/018
create mode 100644 tests/f2fs/018.out
diff --git a/tests/f2fs/018 b/tests/f2fs/018
new file mode 100755
index 00000000..ca727d24
--- /dev/null
+++ b/tests/f2fs/018
@@ -0,0 +1,58 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2025 Chao Yu. All Rights Reserved.
+#
+# FS QA Test No. f2fs/018
+#
+# This is a regression test to check whether page eof will be
+# zero or not after we truncate partial data in compressed
+# cluster.
+#
+. ./common/preamble
+_begin_fstest auto quick rw compress
+
+_fixed_by_kernel_commit ba8dac350faf \
+ "f2fs: fix to zero post-eof page"
+_fixed_by_kernel_commit xxxxxxxxxxxx \
+ "f2fs: fix to zero data after EOF for compressed file correctly"
+
+_require_scratch
+_require_fio
+
+testfile=$SCRATCH_MNT/testfile
+
+check_data_eof()
+{
+ local eof_start=$1
+ local eof_size=$2
+ local filesize=$3
+ local offset1=$4
+ local offset2=$5
+ local offset3=$6
+
+ _scratch_mkfs "-O extra_attr,compression" >> $seqres.full || _fail "mkfs failed"
+ _scratch_mount "-o compress_extension=*" >> $seqres.full
+
+ xfs_io -f -c "pwrite 0 $filesize" -c "fsync" $testfile >> $seqres.full
+ xfs_io -c "truncate $offset1" $testfile
+ xfs_io -c "truncate $offset2" $testfile
+
+ if [ "$offset3" ]; then
+ xfs_io -c "truncate $offset3" $testfile
+ fi
+
+ $FIO_PROG --name=verify-data --filename=$testfile --rw=read --verify=pattern \
+ --verify_pattern=0x00 --do_verify=1 --verify_only --offset=$eof_start \
+ --size=$eof_size >> $seqres.full 2>&1 || _fail "eof data is not zero"
+ _scratch_unmount
+}
+
+check_data_eof 12k 4k 16k 12k 20k
+check_data_eof 10k 6k 16k 10k 20k
+check_data_eof 12k 4k 16k 8k 12k 20k
+check_data_eof 10k 6k 16k 8k 10k 20k
+
+echo "Silence is golden"
+
+status=0
+exit
diff --git a/tests/f2fs/018.out b/tests/f2fs/018.out
new file mode 100644
index 00000000..8849e303
--- /dev/null
+++ b/tests/f2fs/018.out
@@ -0,0 +1,2 @@
+QA output created by 018
+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] 10+ messages in thread
* [f2fs-dev] [PATCH 2/3] f2fs/019: do sanity check on mapping table
2025-08-11 9:44 [f2fs-dev] [PATCH 1/3] f2fs/018: check data eof after partial truncation on compressed cluster Chao Yu via Linux-f2fs-devel
@ 2025-08-11 9:44 ` Chao Yu via Linux-f2fs-devel
2025-08-13 15:21 ` Zorro Lang via Linux-f2fs-devel
2025-08-11 9:44 ` [f2fs-dev] [PATCH 3/3] f2fs/020: do sanity check on i_xattr_nid Chao Yu via Linux-f2fs-devel
2025-08-12 8:56 ` [f2fs-dev] [PATCH 1/3] f2fs/018: check data eof after partial truncation on compressed cluster Zorro Lang via Linux-f2fs-devel
2 siblings, 1 reply; 10+ messages in thread
From: Chao Yu via Linux-f2fs-devel @ 2025-08-11 9:44 UTC (permalink / raw)
To: Zorro Lang, fstests; +Cc: jaegeuk, linux-f2fs-devel
This is a regression test:
1. create a file
2. write file to create a direct node at special offset
3. use inject.f2fs to inject nid of direct node w/ ino of the inode
4. check whether f2fs kernel module will detect and report such
corruption in the fil
Signed-off-by: Chao Yu <chao@kernel.org>
---
tests/f2fs/019 | 45 +++++++++++++++++++++++++++++++++++++++++++++
tests/f2fs/019.out | 2 ++
2 files changed, 47 insertions(+)
create mode 100755 tests/f2fs/019
create mode 100644 tests/f2fs/019.out
diff --git a/tests/f2fs/019 b/tests/f2fs/019
new file mode 100755
index 00000000..0a02eb2f
--- /dev/null
+++ b/tests/f2fs/019
@@ -0,0 +1,45 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2025 Chao Yu. All Rights Reserved.
+#
+# FS QA Test No. f2fs/019
+#
+# This is a regression test:
+# 1. create a file
+# 2. write file to create a direct node at special offset
+# 3. use inject.f2fs to inject nid of direct node w/ ino of the inode
+# 4. check whether f2fs kernel module will detect and report such
+# corruption in the file
+#
+. ./common/preamble
+_begin_fstest auto quick rw compress
+
+_cleanup()
+{
+ _scratch_mkfs >> $seqres.full
+}
+
+_fixed_by_kernel_commit 77de19b6867f \
+ "f2fs: fix to avoid out-of-boundary access in dnode page"
+
+export MKFS_OPTIONS=""
+_require_scratch
+_require_command "$F2FS_INJECT_PROG" inject.f2fs
+
+testfile=$SCRATCH_MNT/testfile
+
+_scratch_mkfs >> $seqres.full
+_scratch_mount
+
+xfs_io -f -c "pwrite 3738M 1M" -c "fsync" $testfile >> $seqres.full
+
+_scratch_unmount
+
+$F2FS_INJECT_PROG --node --mb addr --nid 5 --idx 937 --val 4 $SCRATCH_DEV >> $seqres.full
+
+_scratch_mount
+xfs_io -c "pread 3700M 40M" $testfile
+_scratch_unmount
+
+status=0
+exit
diff --git a/tests/f2fs/019.out b/tests/f2fs/019.out
new file mode 100644
index 00000000..2f7469e2
--- /dev/null
+++ b/tests/f2fs/019.out
@@ -0,0 +1,2 @@
+QA output created by 019
+pread: 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] 10+ messages in thread
* [f2fs-dev] [PATCH 3/3] f2fs/020: do sanity check on i_xattr_nid
2025-08-11 9:44 [f2fs-dev] [PATCH 1/3] f2fs/018: check data eof after partial truncation on compressed cluster Chao Yu via Linux-f2fs-devel
2025-08-11 9:44 ` [f2fs-dev] [PATCH 2/3] f2fs/019: do sanity check on mapping table Chao Yu via Linux-f2fs-devel
@ 2025-08-11 9:44 ` Chao Yu via Linux-f2fs-devel
2025-08-13 15:34 ` Zorro Lang via Linux-f2fs-devel
2025-08-12 8:56 ` [f2fs-dev] [PATCH 1/3] f2fs/018: check data eof after partial truncation on compressed cluster Zorro Lang via Linux-f2fs-devel
2 siblings, 1 reply; 10+ messages in thread
From: Chao Yu via Linux-f2fs-devel @ 2025-08-11 9:44 UTC (permalink / raw)
To: Zorro Lang, fstests; +Cc: jaegeuk, linux-f2fs-devel
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
Signed-off-by: Chao Yu <chao@kernel.org>
---
tests/f2fs/020 | 50 ++++++++++++++++++++++++++++++++++++++++++++++
tests/f2fs/020.out | 2 ++
2 files changed, 52 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..a6a08c8f
--- /dev/null
+++ b/tests/f2fs/020
@@ -0,0 +1,50 @@
+#! /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
+
+_cleanup()
+{
+ _scratch_mkfs >> $seqres.full
+}
+
+_fixed_by_kernel_commit 061cf3a84bde \
+ "f2fs: fix to do sanity check on ino and xnid"
+
+export MKFS_OPTIONS=""
+_require_scratch
+_require_command "$F2FS_INJECT_PROG" inject.f2fs
+
+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 -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
+
+_scratch_mount
+mkdir $testdir/dir >> $seqres.full 2>&1
+_scratch_unmount
+
+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
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [f2fs-dev] [PATCH 1/3] f2fs/018: check data eof after partial truncation on compressed cluster
2025-08-11 9:44 [f2fs-dev] [PATCH 1/3] f2fs/018: check data eof after partial truncation on compressed cluster Chao Yu via Linux-f2fs-devel
2025-08-11 9:44 ` [f2fs-dev] [PATCH 2/3] f2fs/019: do sanity check on mapping table Chao Yu via Linux-f2fs-devel
2025-08-11 9:44 ` [f2fs-dev] [PATCH 3/3] f2fs/020: do sanity check on i_xattr_nid Chao Yu via Linux-f2fs-devel
@ 2025-08-12 8:56 ` Zorro Lang via Linux-f2fs-devel
2025-08-12 12:36 ` Chao Yu via Linux-f2fs-devel
2 siblings, 1 reply; 10+ messages in thread
From: Zorro Lang via Linux-f2fs-devel @ 2025-08-12 8:56 UTC (permalink / raw)
To: Chao Yu; +Cc: jaegeuk, Zorro Lang, fstests, linux-f2fs-devel
On Mon, Aug 11, 2025 at 05:44:13PM +0800, Chao Yu wrote:
> This is a regression testcase, it is added to check below case
> and its variants:
> - write 16k data into compressed file (data will be compressed)
> - truncate file to 12k (truncate partial data in compressed cluster)
> - truncate file to 20k
> - verify data in range of [12k, 16k] to see whether data is all zero
> or not
>
> Cc: Jaegeuk Kim <jaegeuk@kernel.org>
> Signed-off-by: Chao Yu <chao@kernel.org>
> ---
> tests/f2fs/018 | 58 ++++++++++++++++++++++++++++++++++++++++++++++
> tests/f2fs/018.out | 2 ++
> 2 files changed, 60 insertions(+)
> create mode 100755 tests/f2fs/018
> create mode 100644 tests/f2fs/018.out
>
> diff --git a/tests/f2fs/018 b/tests/f2fs/018
> new file mode 100755
> index 00000000..ca727d24
> --- /dev/null
> +++ b/tests/f2fs/018
> @@ -0,0 +1,58 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2025 Chao Yu. All Rights Reserved.
> +#
> +# FS QA Test No. f2fs/018
> +#
> +# This is a regression test to check whether page eof will be
> +# zero or not after we truncate partial data in compressed
> +# cluster.
> +#
> +. ./common/preamble
> +_begin_fstest auto quick rw compress
> +
> +_fixed_by_kernel_commit ba8dac350faf \
> + "f2fs: fix to zero post-eof page"
> +_fixed_by_kernel_commit xxxxxxxxxxxx \
> + "f2fs: fix to zero data after EOF for compressed file correctly"
> +
> +_require_scratch
> +_require_fio
> +
> +testfile=$SCRATCH_MNT/testfile
> +
> +check_data_eof()
> +{
> + local eof_start=$1
> + local eof_size=$2
> + local filesize=$3
> + local offset1=$4
> + local offset2=$5
> + local offset3=$6
> +
> + _scratch_mkfs "-O extra_attr,compression" >> $seqres.full || _fail "mkfs failed"
> + _scratch_mount "-o compress_extension=*" >> $seqres.full
> +
> + xfs_io -f -c "pwrite 0 $filesize" -c "fsync" $testfile >> $seqres.full
> + xfs_io -c "truncate $offset1" $testfile
> + xfs_io -c "truncate $offset2" $testfile
replace "xfs_io" with "$XFS_IO_PROG"
> +
> + if [ "$offset3" ]; then
> + xfs_io -c "truncate $offset3" $testfile
Same as above.
And generally we need: _require_xfs_io_command "truncate"
> + fi
> +
> + $FIO_PROG --name=verify-data --filename=$testfile --rw=read --verify=pattern \
> + --verify_pattern=0x00 --do_verify=1 --verify_only --offset=$eof_start \
> + --size=$eof_size >> $seqres.full 2>&1 || _fail "eof data is not zero"
Generally we do `_require_fio $fio_config` to make sure all arguments are supported
by current fio version and FSTYP, refer to generic/366. But as this is a f2fs only
test, and if you make sure you don't use any new/special fio arguments, I can accept
this. Or you can refer to generic/366.
> + _scratch_unmount
I'm not familar with f2fs much, may I ask why we need to mkfs&mount ... umount
in each test loop?
Thanks,
Zorro
> +}
> +
> +check_data_eof 12k 4k 16k 12k 20k
> +check_data_eof 10k 6k 16k 10k 20k
> +check_data_eof 12k 4k 16k 8k 12k 20k
> +check_data_eof 10k 6k 16k 8k 10k 20k
> +
> +echo "Silence is golden"
> +
> +status=0
> +exit
> diff --git a/tests/f2fs/018.out b/tests/f2fs/018.out
> new file mode 100644
> index 00000000..8849e303
> --- /dev/null
> +++ b/tests/f2fs/018.out
> @@ -0,0 +1,2 @@
> +QA output created by 018
> +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] 10+ messages in thread
* Re: [f2fs-dev] [PATCH 1/3] f2fs/018: check data eof after partial truncation on compressed cluster
2025-08-12 8:56 ` [f2fs-dev] [PATCH 1/3] f2fs/018: check data eof after partial truncation on compressed cluster Zorro Lang via Linux-f2fs-devel
@ 2025-08-12 12:36 ` Chao Yu via Linux-f2fs-devel
0 siblings, 0 replies; 10+ messages in thread
From: Chao Yu via Linux-f2fs-devel @ 2025-08-12 12:36 UTC (permalink / raw)
To: Zorro Lang; +Cc: jaegeuk, Zorro Lang, fstests, linux-f2fs-devel
On 8/12/25 16:56, Zorro Lang wrote:
> On Mon, Aug 11, 2025 at 05:44:13PM +0800, Chao Yu wrote:
>> This is a regression testcase, it is added to check below case
>> and its variants:
>> - write 16k data into compressed file (data will be compressed)
>> - truncate file to 12k (truncate partial data in compressed cluster)
>> - truncate file to 20k
>> - verify data in range of [12k, 16k] to see whether data is all zero
>> or not
>>
>> Cc: Jaegeuk Kim <jaegeuk@kernel.org>
>> Signed-off-by: Chao Yu <chao@kernel.org>
>> ---
>> tests/f2fs/018 | 58 ++++++++++++++++++++++++++++++++++++++++++++++
>> tests/f2fs/018.out | 2 ++
>> 2 files changed, 60 insertions(+)
>> create mode 100755 tests/f2fs/018
>> create mode 100644 tests/f2fs/018.out
>>
>> diff --git a/tests/f2fs/018 b/tests/f2fs/018
>> new file mode 100755
>> index 00000000..ca727d24
>> --- /dev/null
>> +++ b/tests/f2fs/018
>> @@ -0,0 +1,58 @@
>> +#! /bin/bash
>> +# SPDX-License-Identifier: GPL-2.0
>> +# Copyright (c) 2025 Chao Yu. All Rights Reserved.
>> +#
>> +# FS QA Test No. f2fs/018
>> +#
>> +# This is a regression test to check whether page eof will be
>> +# zero or not after we truncate partial data in compressed
>> +# cluster.
>> +#
>> +. ./common/preamble
>> +_begin_fstest auto quick rw compress
>> +
>> +_fixed_by_kernel_commit ba8dac350faf \
>> + "f2fs: fix to zero post-eof page"
>> +_fixed_by_kernel_commit xxxxxxxxxxxx \
>> + "f2fs: fix to zero data after EOF for compressed file correctly"
>> +
>> +_require_scratch
>> +_require_fio
>> +
>> +testfile=$SCRATCH_MNT/testfile
>> +
>> +check_data_eof()
>> +{
>> + local eof_start=$1
>> + local eof_size=$2
>> + local filesize=$3
>> + local offset1=$4
>> + local offset2=$5
>> + local offset3=$6
>> +
>> + _scratch_mkfs "-O extra_attr,compression" >> $seqres.full || _fail "mkfs failed"
>> + _scratch_mount "-o compress_extension=*" >> $seqres.full
>> +
>> + xfs_io -f -c "pwrite 0 $filesize" -c "fsync" $testfile >> $seqres.full
>> + xfs_io -c "truncate $offset1" $testfile
>> + xfs_io -c "truncate $offset2" $testfile
>
> replace "xfs_io" with "$XFS_IO_PROG"
Oops, yes, will update.
>
>> +
>> + if [ "$offset3" ]; then
>> + xfs_io -c "truncate $offset3" $testfile
>
> Same as above.
>
> And generally we need: _require_xfs_io_command "truncate"
Ditto,
>
>> + fi
>> +
>> + $FIO_PROG --name=verify-data --filename=$testfile --rw=read --verify=pattern \
>> + --verify_pattern=0x00 --do_verify=1 --verify_only --offset=$eof_start \
>> + --size=$eof_size >> $seqres.full 2>&1 || _fail "eof data is not zero"
>
> Generally we do `_require_fio $fio_config` to make sure all arguments are supported
> by current fio version and FSTYP, refer to generic/366. But as this is a f2fs only
> test, and if you make sure you don't use any new/special fio arguments, I can accept
> this. Or you can refer to generic/366.
Okay, let me take a look.
>
>> + _scratch_unmount
>
> I'm not familar with f2fs much, may I ask why we need to mkfs&mount ... umount
> in each test loop?
Oh, seems it doesn't need to, let me check and clean up it.
Thanks,
>
> Thanks,
> Zorro
>
>> +}
>> +
>> +check_data_eof 12k 4k 16k 12k 20k
>> +check_data_eof 10k 6k 16k 10k 20k
>> +check_data_eof 12k 4k 16k 8k 12k 20k
>> +check_data_eof 10k 6k 16k 8k 10k 20k
>> +
>> +echo "Silence is golden"
>> +
>> +status=0
>> +exit
>> diff --git a/tests/f2fs/018.out b/tests/f2fs/018.out
>> new file mode 100644
>> index 00000000..8849e303
>> --- /dev/null
>> +++ b/tests/f2fs/018.out
>> @@ -0,0 +1,2 @@
>> +QA output created by 018
>> +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] 10+ messages in thread
* Re: [f2fs-dev] [PATCH 2/3] f2fs/019: do sanity check on mapping table
2025-08-11 9:44 ` [f2fs-dev] [PATCH 2/3] f2fs/019: do sanity check on mapping table Chao Yu via Linux-f2fs-devel
@ 2025-08-13 15:21 ` Zorro Lang via Linux-f2fs-devel
2025-08-14 7:51 ` Chao Yu via Linux-f2fs-devel
0 siblings, 1 reply; 10+ messages in thread
From: Zorro Lang via Linux-f2fs-devel @ 2025-08-13 15:21 UTC (permalink / raw)
To: Chao Yu; +Cc: jaegeuk, Zorro Lang, fstests, linux-f2fs-devel
On Mon, Aug 11, 2025 at 05:44:14PM +0800, Chao Yu wrote:
> This is a regression test:
> 1. create a file
> 2. write file to create a direct node at special offset
> 3. use inject.f2fs to inject nid of direct node w/ ino of the inode
> 4. check whether f2fs kernel module will detect and report such
> corruption in the fil
>
> Signed-off-by: Chao Yu <chao@kernel.org>
> ---
> tests/f2fs/019 | 45 +++++++++++++++++++++++++++++++++++++++++++++
> tests/f2fs/019.out | 2 ++
> 2 files changed, 47 insertions(+)
> create mode 100755 tests/f2fs/019
> create mode 100644 tests/f2fs/019.out
>
> diff --git a/tests/f2fs/019 b/tests/f2fs/019
> new file mode 100755
> index 00000000..0a02eb2f
> --- /dev/null
> +++ b/tests/f2fs/019
> @@ -0,0 +1,45 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2025 Chao Yu. All Rights Reserved.
> +#
> +# FS QA Test No. f2fs/019
> +#
> +# This is a regression test:
> +# 1. create a file
> +# 2. write file to create a direct node at special offset
> +# 3. use inject.f2fs to inject nid of direct node w/ ino of the inode
> +# 4. check whether f2fs kernel module will detect and report such
> +# corruption in the file
> +#
> +. ./common/preamble
> +_begin_fstest auto quick rw compress
> +
> +_cleanup()
> +{
> + _scratch_mkfs >> $seqres.full
Why mkfs SCRATCH_DEV in _cleanup ?
> +}
> +
> +_fixed_by_kernel_commit 77de19b6867f \
> + "f2fs: fix to avoid out-of-boundary access in dnode page"
> +
> +export MKFS_OPTIONS=""
Can you give it a comment about why we need to clean mkfs option at here?
> +_require_scratch
Oh, if this case tends to have a corrupted SCRATCH_DEV, you can use
_require_scratch_nocheck at here, don't need to mkfs in _cleanup.
> +_require_command "$F2FS_INJECT_PROG" inject.f2fs
> +
> +testfile=$SCRATCH_MNT/testfile
> +
> +_scratch_mkfs >> $seqres.full
> +_scratch_mount
> +
> +xfs_io -f -c "pwrite 3738M 1M" -c "fsync" $testfile >> $seqres.full
^^^^^^
$XFS_IO_PROG
> +
> +_scratch_unmount
> +
> +$F2FS_INJECT_PROG --node --mb addr --nid 5 --idx 937 --val 4 $SCRATCH_DEV >> $seqres.full
> +
> +_scratch_mount
> +xfs_io -c "pread 3700M 40M" $testfile
^^^^^^
$XFS_IO_PROG
> +_scratch_unmount
> +
> +status=0
> +exit
> diff --git a/tests/f2fs/019.out b/tests/f2fs/019.out
> new file mode 100644
> index 00000000..2f7469e2
> --- /dev/null
> +++ b/tests/f2fs/019.out
> @@ -0,0 +1,2 @@
> +QA output created by 019
> +pread: 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] 10+ messages in thread
* Re: [f2fs-dev] [PATCH 3/3] f2fs/020: do sanity check on i_xattr_nid
2025-08-11 9:44 ` [f2fs-dev] [PATCH 3/3] f2fs/020: do sanity check on i_xattr_nid Chao Yu via Linux-f2fs-devel
@ 2025-08-13 15:34 ` Zorro Lang via Linux-f2fs-devel
2025-08-14 7:54 ` Chao Yu via Linux-f2fs-devel
0 siblings, 1 reply; 10+ messages in thread
From: Zorro Lang via Linux-f2fs-devel @ 2025-08-13 15:34 UTC (permalink / raw)
To: Chao Yu; +Cc: jaegeuk, Zorro Lang, fstests, linux-f2fs-devel
On Mon, Aug 11, 2025 at 05:44:15PM +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
>
> Signed-off-by: Chao Yu <chao@kernel.org>
> ---
> tests/f2fs/020 | 50 ++++++++++++++++++++++++++++++++++++++++++++++
> tests/f2fs/020.out | 2 ++
> 2 files changed, 52 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..a6a08c8f
> --- /dev/null
> +++ b/tests/f2fs/020
> @@ -0,0 +1,50 @@
> +#! /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
> +
> +_cleanup()
> +{
> + _scratch_mkfs >> $seqres.full
> +}
> +
> +_fixed_by_kernel_commit 061cf3a84bde \
> + "f2fs: fix to do sanity check on ino and xnid"
> +
> +export MKFS_OPTIONS=""
> +_require_scratch
Same review points with patch 2/3,
> +_require_command "$F2FS_INJECT_PROG" inject.f2fs
> +
> +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 -n user.abc -v 123 $testdir
You can call `_require_attrs user` at first, then use "$SETFATTR_PROG"
> +
> +_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
> +
> +_scratch_mount
> +mkdir $testdir/dir >> $seqres.full 2>&1
May I ask what kind of failure will this case hit, if there's the bug?
Thanks,
Zorro
> +_scratch_unmount
> +
> +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
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [f2fs-dev] [PATCH 2/3] f2fs/019: do sanity check on mapping table
2025-08-13 15:21 ` Zorro Lang via Linux-f2fs-devel
@ 2025-08-14 7:51 ` Chao Yu via Linux-f2fs-devel
0 siblings, 0 replies; 10+ messages in thread
From: Chao Yu via Linux-f2fs-devel @ 2025-08-14 7:51 UTC (permalink / raw)
To: Zorro Lang; +Cc: jaegeuk, Zorro Lang, fstests, linux-f2fs-devel
On 8/13/25 23:21, Zorro Lang wrote:
> On Mon, Aug 11, 2025 at 05:44:14PM +0800, Chao Yu wrote:
>> This is a regression test:
>> 1. create a file
>> 2. write file to create a direct node at special offset
>> 3. use inject.f2fs to inject nid of direct node w/ ino of the inode
>> 4. check whether f2fs kernel module will detect and report such
>> corruption in the fil
>>
>> Signed-off-by: Chao Yu <chao@kernel.org>
>> ---
>> tests/f2fs/019 | 45 +++++++++++++++++++++++++++++++++++++++++++++
>> tests/f2fs/019.out | 2 ++
>> 2 files changed, 47 insertions(+)
>> create mode 100755 tests/f2fs/019
>> create mode 100644 tests/f2fs/019.out
>>
>> diff --git a/tests/f2fs/019 b/tests/f2fs/019
>> new file mode 100755
>> index 00000000..0a02eb2f
>> --- /dev/null
>> +++ b/tests/f2fs/019
>> @@ -0,0 +1,45 @@
>> +#! /bin/bash
>> +# SPDX-License-Identifier: GPL-2.0
>> +# Copyright (c) 2025 Chao Yu. All Rights Reserved.
>> +#
>> +# FS QA Test No. f2fs/019
>> +#
>> +# This is a regression test:
>> +# 1. create a file
>> +# 2. write file to create a direct node at special offset
>> +# 3. use inject.f2fs to inject nid of direct node w/ ino of the inode
>> +# 4. check whether f2fs kernel module will detect and report such
>> +# corruption in the file
>> +#
>> +. ./common/preamble
>> +_begin_fstest auto quick rw compress
>> +
>> +_cleanup()
>> +{
>> + _scratch_mkfs >> $seqres.full
>
> Why mkfs SCRATCH_DEV in _cleanup ?
Because SCRATCH_DEV will be corrupted after injection.
>
>> +}
>> +
>> +_fixed_by_kernel_commit 77de19b6867f \
>> + "f2fs: fix to avoid out-of-boundary access in dnode page"
>> +
>> +export MKFS_OPTIONS=""
>
> Can you give it a comment about why we need to clean mkfs option at here?
Sure.
>
>> +_require_scratch
>
> Oh, if this case tends to have a corrupted SCRATCH_DEV, you can use
> _require_scratch_nocheck at here, don't need to mkfs in _cleanup.
Oh, my bad, you've mentioned the function on f2fs/012 once, but I forget to
use it in this testcase.
>
>> +_require_command "$F2FS_INJECT_PROG" inject.f2fs
>> +
>> +testfile=$SCRATCH_MNT/testfile
>> +
>> +_scratch_mkfs >> $seqres.full
>> +_scratch_mount
>> +
>> +xfs_io -f -c "pwrite 3738M 1M" -c "fsync" $testfile >> $seqres.full
> ^^^^^^
> $XFS_IO_PROG
>
>> +
>> +_scratch_unmount
>> +
>> +$F2FS_INJECT_PROG --node --mb addr --nid 5 --idx 937 --val 4 $SCRATCH_DEV >> $seqres.full
>> +
>> +_scratch_mount
>> +xfs_io -c "pread 3700M 40M" $testfile
> ^^^^^^
> $XFS_IO_PROG
Will update them in v2.
Thanks,
>
>> +_scratch_unmount
>> +
>> +status=0
>> +exit
>> diff --git a/tests/f2fs/019.out b/tests/f2fs/019.out
>> new file mode 100644
>> index 00000000..2f7469e2
>> --- /dev/null
>> +++ b/tests/f2fs/019.out
>> @@ -0,0 +1,2 @@
>> +QA output created by 019
>> +pread: 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] 10+ messages in thread
* Re: [f2fs-dev] [PATCH 3/3] f2fs/020: do sanity check on i_xattr_nid
2025-08-13 15:34 ` Zorro Lang via Linux-f2fs-devel
@ 2025-08-14 7:54 ` Chao Yu via Linux-f2fs-devel
2025-08-14 21:10 ` Zorro Lang via Linux-f2fs-devel
0 siblings, 1 reply; 10+ messages in thread
From: Chao Yu via Linux-f2fs-devel @ 2025-08-14 7:54 UTC (permalink / raw)
To: Zorro Lang; +Cc: jaegeuk, Zorro Lang, fstests, linux-f2fs-devel
On 8/13/25 23:34, Zorro Lang wrote:
> On Mon, Aug 11, 2025 at 05:44:15PM +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
>>
>> Signed-off-by: Chao Yu <chao@kernel.org>
>> ---
>> tests/f2fs/020 | 50 ++++++++++++++++++++++++++++++++++++++++++++++
>> tests/f2fs/020.out | 2 ++
>> 2 files changed, 52 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..a6a08c8f
>> --- /dev/null
>> +++ b/tests/f2fs/020
>> @@ -0,0 +1,50 @@
>> +#! /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
>> +
>> +_cleanup()
>> +{
>> + _scratch_mkfs >> $seqres.full
>> +}
>> +
>> +_fixed_by_kernel_commit 061cf3a84bde \
>> + "f2fs: fix to do sanity check on ino and xnid"
>> +
>> +export MKFS_OPTIONS=""
>> +_require_scratch
>
> Same review points with patch 2/3,
>
>> +_require_command "$F2FS_INJECT_PROG" inject.f2fs
>> +
>> +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 -n user.abc -v 123 $testdir
>
> You can call `_require_attrs user` at first, then use "$SETFATTR_PROG"
Okay, will update them in v2.
>
>> +
>> +_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
>> +
>> +_scratch_mount
>> +mkdir $testdir/dir >> $seqres.full 2>&1
>
> May I ask what kind of failure will this case hit, if there's the bug?
Bug like syzbot reported, you can check the details in below commit:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=061cf3a84bde
Thanks,
>
> Thanks,
> Zorro
>
>> +_scratch_unmount
>> +
>> +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
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [f2fs-dev] [PATCH 3/3] f2fs/020: do sanity check on i_xattr_nid
2025-08-14 7:54 ` Chao Yu via Linux-f2fs-devel
@ 2025-08-14 21:10 ` Zorro Lang via Linux-f2fs-devel
0 siblings, 0 replies; 10+ messages in thread
From: Zorro Lang via Linux-f2fs-devel @ 2025-08-14 21:10 UTC (permalink / raw)
To: Chao Yu; +Cc: jaegeuk, Zorro Lang, fstests, linux-f2fs-devel
On Thu, Aug 14, 2025 at 03:54:59PM +0800, Chao Yu wrote:
> On 8/13/25 23:34, Zorro Lang wrote:
> > On Mon, Aug 11, 2025 at 05:44:15PM +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
> >>
> >> Signed-off-by: Chao Yu <chao@kernel.org>
> >> ---
> >> tests/f2fs/020 | 50 ++++++++++++++++++++++++++++++++++++++++++++++
> >> tests/f2fs/020.out | 2 ++
> >> 2 files changed, 52 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..a6a08c8f
> >> --- /dev/null
> >> +++ b/tests/f2fs/020
> >> @@ -0,0 +1,50 @@
> >> +#! /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
> >> +
> >> +_cleanup()
> >> +{
> >> + _scratch_mkfs >> $seqres.full
> >> +}
> >> +
> >> +_fixed_by_kernel_commit 061cf3a84bde \
> >> + "f2fs: fix to do sanity check on ino and xnid"
> >> +
> >> +export MKFS_OPTIONS=""
> >> +_require_scratch
> >
> > Same review points with patch 2/3,
> >
> >> +_require_command "$F2FS_INJECT_PROG" inject.f2fs
> >> +
> >> +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 -n user.abc -v 123 $testdir
> >
> > You can call `_require_attrs user` at first, then use "$SETFATTR_PROG"
>
> Okay, will update them in v2.
>
> >
> >> +
> >> +_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
> >> +
> >> +_scratch_mount
> >> +mkdir $testdir/dir >> $seqres.full 2>&1
> >
> > May I ask what kind of failure will this case hit, if there's the bug?
>
> Bug like syzbot reported, you can check the details in below commit:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=061cf3a84bde
So you hope to trigger a test failure by something likes:
"generic/361 _check_dmesg: something found in dmesg"
?
Did you try that, if it can fail this test on general kernel?
Thanks,
Zorro
>
> Thanks,
>
> >
> > Thanks,
> > Zorro
> >
> >> +_scratch_unmount
> >> +
> >> +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
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-08-14 21:10 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-11 9:44 [f2fs-dev] [PATCH 1/3] f2fs/018: check data eof after partial truncation on compressed cluster Chao Yu via Linux-f2fs-devel
2025-08-11 9:44 ` [f2fs-dev] [PATCH 2/3] f2fs/019: do sanity check on mapping table Chao Yu via Linux-f2fs-devel
2025-08-13 15:21 ` Zorro Lang via Linux-f2fs-devel
2025-08-14 7:51 ` Chao Yu via Linux-f2fs-devel
2025-08-11 9:44 ` [f2fs-dev] [PATCH 3/3] f2fs/020: do sanity check on i_xattr_nid Chao Yu via Linux-f2fs-devel
2025-08-13 15:34 ` Zorro Lang via Linux-f2fs-devel
2025-08-14 7:54 ` Chao Yu via Linux-f2fs-devel
2025-08-14 21:10 ` Zorro Lang via Linux-f2fs-devel
2025-08-12 8:56 ` [f2fs-dev] [PATCH 1/3] f2fs/018: check data eof after partial truncation on compressed cluster Zorro Lang via Linux-f2fs-devel
2025-08-12 12:36 ` 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).