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

Reply via email to