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 <c...@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

Reply via email to