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