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