On 8/15/25 18:38, Chao Yu wrote:
Yong,
Could you please split this patchset to two, 1~13 and 14~32? and update
1~13 first? I guess 1~13 are almost clear to be merged.
Hi, Chao,
Sorry for the delay. I will split the patchset and send a new version ASAP.
Thanks,
shengyong
On 6/10/25 20:37, Sheng Yong wrote:
Hi, folks,
This patchset tries to add an auto testsuit for f2fs-tools, including
fsck.f2fs, inject.f2fs for now.
The patchset can splited into 3 parts:
PATCH 1~9: is a preparation for testcases. It fixes some errors in
fsck and inject, and do some cleanup and improvement for
f2fs-tools.
PATCH 10~13: add new injection members
PATCH 14~32: add testcases
thanks,
shengyong
-8<-
The following is almost quoted from v1:
The basic idea of these testcases are:
1. create f2fs image
2. corrupt the image by inject specific fields
3. fsck fixes the image
4. verify fsck output with expected message
Some helper scripts are provided:
* test_config.in: is used to derive basic configurations of all
testcases.
* runtests.in: is used to derive `runtests' which is used to run
testcases.
* filter.sed: removes unnecessary messages and cleanup arbitrary
values.
* helpers: provides helper functions
The usage of `runtests':
* run all testcases:
runtests
* run one testcase:
runtests <testcase directory path>
* cleanup previous results:
runtests clean
To run the testcases on Android, only have to change settings in
test_config:
* set path of $META and $DATA
* set path of tools
* push tests directory to an Android phone
NOTE TAHT: the testcases will format $META!!!
Some testcase requires root permission to mount the image and create
files.
Each testcase should have a sub-directory, where three files are needed:
* README: describe information of the testcase
* script: testcase itself
* expect.in: is used to derive expected output message
New files are generated in the testcase directory after test:
* log: output in detail
* expect: derived from expect.in
* out: output that will be compared with expect
* PASS: testcase is passed
* FAIL: testcase is failed, in which differ of out and expect is saved
The name of testcase directory has some optional prefix:
* f_: fsck testcase
* i_: inject testcase
* m_: mkfs testcase
But there are only fsck and inject testcases for now.
To run testcases, it's better to compile fsck.f2fs as statically linked
executable, or `make install' installs tools and libraries. Otherwise,
libtool compiles f2fs-tools in debug mode and create a wrapper script
to locate elf executable and libraries. However, dump.f2fs and
inject.f2fs cannot be used in the wrapper way.
v2: * add some fix and cleanup
* remove img.tar.gz from testcases
* add testcases for injection
* cleanup helpers script and simplify filter.sed and expected.in
v1:
https://lore.kernel.org/linux-f2fs-devel/20241029120956.4186731-1-shengy...@oppo.com/
Sheng Yong (32):
fsck.f2fs: do not finish/reset zone if dry-run is true
f2fs-tools: add option N to answer no for all questions
f2fs-tools: cleanup {nid|segno}_in_journal
fsck.f2fs: fix invalidate checkpoint
dump.f2fs: print more info
f2fs-tools: add and export lookup_sit_in_journal
inject.f2fs: fix injecting sit/nat in journal
inject.f2fs: fix injection on zoned device
inject.f2fs: fix and cleanup parsing numeric options
inject.f2fs: add members in inject_cp
inject.f2fs: add member `feature' in inject_sb
inject.f2fs: add members in inject_node
inject.f2fs: add member `filename' in inject_dentry
tests: prepare helper scripts for testcases
tests: add fsck testcase of fixing bad super magic
tests: add fsck testcase of fixing errors recorded in sb
tests: add fsck testcase of fixing cp crc
tests: add fsck testcase of fixing nat entry with invalid ino
tests: add fsck testcase of fixing nat entry with invalid blkaddr
tests: add fsck testcase of fixing sit entry type
tests: add fsck testcase of fixing sit entry vblocks
tests: add fsck testcase of fixing sit entry valid_map
tests: add fsck testcase of fixing sum entry nid
tests: add fsck testcase of fixing sum footer type
tests: add fsck testcase of fixing sum entry ofs_in_node
tests: add fsck testcase of fixing inode invalid i_addr
tests: add fsck testcase of fixing dentry hash code
tests: add fsck testcase of fixing lost dots
tests: add fsck testcase of fixing duplicated dots
tests: add fsck testcase of fixing loop fsync dnodes
tests: add inject testcase of injecting META area
tests: add inject testcase of injecting node block
.gitignore | 14 +
Makefile.am | 2 +-
configure.ac | 1 +
fsck/dump.c | 15 +-
fsck/f2fs.h | 12 +-
fsck/fsck.c | 2 +-
fsck/fsck.h | 4 +-
fsck/inject.c | 438 +++++++++++++++++++++-----
fsck/inject.h | 1 +
fsck/main.c | 14 +-
fsck/mount.c | 61 ++--
include/f2fs_fs.h | 1 +
lib/libf2fs_zoned.c | 6 +-
man/inject.f2fs.8 | 43 ++-
tests/Makefile.am | 26 ++
tests/f_cp_bad_crc/README | 5 +
tests/f_cp_bad_crc/expect.in | 4 +
tests/f_cp_bad_crc/script | 38 +++
tests/f_dentry_bad_hash/README | 8 +
tests/f_dentry_bad_hash/expect.in | 8 +
tests/f_dentry_bad_hash/script | 56 ++++
tests/f_dentry_dup_dots/README | 11 +
tests/f_dentry_dup_dots/expect.in | 26 ++
tests/f_dentry_dup_dots/script | 49 +++
tests/f_dentry_lost_dots/README | 7 +
tests/f_dentry_lost_dots/expect.in | 16 +
tests/f_dentry_lost_dots/script | 37 +++
tests/f_inode_bad_iaddr/README | 6 +
tests/f_inode_bad_iaddr/expect.in | 13 +
tests/f_inode_bad_iaddr/script | 50 +++
tests/f_loop_fsync_dnodes/README | 5 +
tests/f_loop_fsync_dnodes/expect.in | 6 +
tests/f_loop_fsync_dnodes/script | 46 +++
tests/f_nat_bad_blkaddr/README | 4 +
tests/f_nat_bad_blkaddr/expect.in | 12 +
tests/f_nat_bad_blkaddr/script | 25 ++
tests/f_nat_bad_ino/README | 4 +
tests/f_nat_bad_ino/expect.in | 12 +
tests/f_nat_bad_ino/script | 31 ++
tests/f_sb_bad_magic/README | 3 +
tests/f_sb_bad_magic/expect.in | 5 +
tests/f_sb_bad_magic/script | 15 +
tests/f_sb_errors/README | 5 +
tests/f_sb_errors/expect.in | 7 +
tests/f_sb_errors/script | 22 ++
tests/f_sit_bad_type/README | 5 +
tests/f_sit_bad_type/expect.in | 3 +
tests/f_sit_bad_type/script | 38 +++
tests/f_sit_bad_valid_map/README | 5 +
tests/f_sit_bad_valid_map/expect.in | 4 +
tests/f_sit_bad_valid_map/script | 43 +++
tests/f_sit_bad_vblocks/README | 5 +
tests/f_sit_bad_vblocks/expect.in | 3 +
tests/f_sit_bad_vblocks/script | 38 +++
tests/f_ssa_bad_nid/README | 5 +
tests/f_ssa_bad_nid/expect.in | 3 +
tests/f_ssa_bad_nid/script | 36 +++
tests/f_ssa_bad_ofs_in_node/README | 5 +
tests/f_ssa_bad_ofs_in_node/expect.in | 3 +
tests/f_ssa_bad_ofs_in_node/script | 36 +++
tests/f_ssa_bad_type/README | 5 +
tests/f_ssa_bad_type/expect.in | 3 +
tests/f_ssa_bad_type/script | 31 ++
tests/filter.sed | 69 ++++
tests/helpers | 269 ++++++++++++++++
tests/i_meta/README | 5 +
tests/i_meta/expect.in | 60 ++++
tests/i_meta/script | 212 +++++++++++++
tests/i_node/README | 5 +
tests/i_node/expect.in | 66 ++++
tests/i_node/script | 166 ++++++++++
tests/runtests.in | 48 +++
tests/test_config.in | 53 ++++
73 files changed, 2284 insertions(+), 116 deletions(-)
create mode 100644 tests/Makefile.am
create mode 100644 tests/f_cp_bad_crc/README
create mode 100644 tests/f_cp_bad_crc/expect.in
create mode 100644 tests/f_cp_bad_crc/script
create mode 100644 tests/f_dentry_bad_hash/README
create mode 100644 tests/f_dentry_bad_hash/expect.in
create mode 100644 tests/f_dentry_bad_hash/script
create mode 100644 tests/f_dentry_dup_dots/README
create mode 100644 tests/f_dentry_dup_dots/expect.in
create mode 100644 tests/f_dentry_dup_dots/script
create mode 100644 tests/f_dentry_lost_dots/README
create mode 100644 tests/f_dentry_lost_dots/expect.in
create mode 100644 tests/f_dentry_lost_dots/script
create mode 100644 tests/f_inode_bad_iaddr/README
create mode 100644 tests/f_inode_bad_iaddr/expect.in
create mode 100644 tests/f_inode_bad_iaddr/script
create mode 100644 tests/f_loop_fsync_dnodes/README
create mode 100644 tests/f_loop_fsync_dnodes/expect.in
create mode 100644 tests/f_loop_fsync_dnodes/script
create mode 100644 tests/f_nat_bad_blkaddr/README
create mode 100644 tests/f_nat_bad_blkaddr/expect.in
create mode 100644 tests/f_nat_bad_blkaddr/script
create mode 100644 tests/f_nat_bad_ino/README
create mode 100644 tests/f_nat_bad_ino/expect.in
create mode 100644 tests/f_nat_bad_ino/script
create mode 100644 tests/f_sb_bad_magic/README
create mode 100644 tests/f_sb_bad_magic/expect.in
create mode 100644 tests/f_sb_bad_magic/script
create mode 100644 tests/f_sb_errors/README
create mode 100644 tests/f_sb_errors/expect.in
create mode 100644 tests/f_sb_errors/script
create mode 100644 tests/f_sit_bad_type/README
create mode 100644 tests/f_sit_bad_type/expect.in
create mode 100644 tests/f_sit_bad_type/script
create mode 100644 tests/f_sit_bad_valid_map/README
create mode 100644 tests/f_sit_bad_valid_map/expect.in
create mode 100644 tests/f_sit_bad_valid_map/script
create mode 100644 tests/f_sit_bad_vblocks/README
create mode 100644 tests/f_sit_bad_vblocks/expect.in
create mode 100644 tests/f_sit_bad_vblocks/script
create mode 100644 tests/f_ssa_bad_nid/README
create mode 100644 tests/f_ssa_bad_nid/expect.in
create mode 100644 tests/f_ssa_bad_nid/script
create mode 100644 tests/f_ssa_bad_ofs_in_node/README
create mode 100644 tests/f_ssa_bad_ofs_in_node/expect.in
create mode 100644 tests/f_ssa_bad_ofs_in_node/script
create mode 100644 tests/f_ssa_bad_type/README
create mode 100644 tests/f_ssa_bad_type/expect.in
create mode 100644 tests/f_ssa_bad_type/script
create mode 100644 tests/filter.sed
create mode 100644 tests/helpers
create mode 100644 tests/i_meta/README
create mode 100644 tests/i_meta/expect.in
create mode 100644 tests/i_meta/script
create mode 100644 tests/i_node/README
create mode 100644 tests/i_node/expect.in
create mode 100644 tests/i_node/script
create mode 100644 tests/runtests.in
create mode 100644 tests/test_config.in
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel