From: Chao Yu via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net>
To: Sheng Yong <shengyong2021@gmail.com>, jaegeuk@kernel.org
Cc: shengyong1@xiaomi.com, linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [f2fs-dev] [RFC PATCH v2 00/32] f2fs-tools: add testcases
Date: Fri, 15 Aug 2025 18:38:31 +0800 [thread overview]
Message-ID: <7a49cf29-a721-450c-9bd1-c0a5de268ce1@kernel.org> (raw)
In-Reply-To: <20250610123743.667183-1-shengyong1@xiaomi.com>
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-shengyong@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
next prev parent reply other threads:[~2025-08-15 10:38 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-10 12:37 [f2fs-dev] [RFC PATCH v2 00/32] f2fs-tools: add testcases Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 01/32] fsck.f2fs: do not finish/reset zone if dry-run is true Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 02/32] f2fs-tools: add option N to answer no for all questions Sheng Yong
2025-06-11 9:22 ` Chao Yu via Linux-f2fs-devel
2025-06-11 9:36 ` Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 03/32] f2fs-tools: cleanup {nid|segno}_in_journal Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 04/32] fsck.f2fs: fix invalidate checkpoint Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 05/32] dump.f2fs: print more info Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 06/32] f2fs-tools: add and export lookup_sit_in_journal Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 07/32] inject.f2fs: fix injecting sit/nat in journal Sheng Yong
2025-06-11 11:42 ` Chao Yu via Linux-f2fs-devel
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 08/32] inject.f2fs: fix injection on zoned device Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 09/32] inject.f2fs: fix and cleanup parsing numeric options Sheng Yong
2025-06-13 6:08 ` Chao Yu via Linux-f2fs-devel
2025-06-16 1:49 ` Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 10/32] inject.f2fs: add members in inject_cp Sheng Yong
2025-06-13 7:30 ` Chao Yu via Linux-f2fs-devel
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 11/32] inject.f2fs: add member `feature' in inject_sb Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 12/32] inject.f2fs: add members in inject_node Sheng Yong
2025-06-13 7:38 ` Chao Yu via Linux-f2fs-devel
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 13/32] inject.f2fs: add member `filename' in inject_dentry Sheng Yong
2025-06-13 7:55 ` Chao Yu via Linux-f2fs-devel
2025-06-16 2:01 ` Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 14/32] tests: prepare helper scripts for testcases Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 15/32] tests: add fsck testcase of fixing bad super magic Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 16/32] tests: add fsck testcase of fixing errors recorded in sb Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 17/32] tests: add fsck testcase of fixing cp crc Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 18/32] tests: add fsck testcase of fixing nat entry with invalid ino Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 19/32] tests: add fsck testcase of fixing nat entry with invalid blkaddr Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 20/32] tests: add fsck testcase of fixing sit entry type Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 21/32] tests: add fsck testcase of fixing sit entry vblocks Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 22/32] tests: add fsck testcase of fixing sit entry valid_map Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 23/32] tests: add fsck testcase of fixing sum entry nid Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 24/32] tests: add fsck testcase of fixing sum footer type Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 25/32] tests: add fsck testcase of fixing sum entry ofs_in_node Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 26/32] tests: add fsck testcase of fixing inode invalid i_addr Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 27/32] tests: add fsck testcase of fixing dentry hash code Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 28/32] tests: add fsck testcase of fixing lost dots Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 29/32] tests: add fsck testcase of fixing duplicated dots Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 30/32] tests: add fsck testcase of fixing loop fsync dnodes Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 31/32] tests: add inject testcase of injecting META area Sheng Yong
2025-06-10 12:37 ` [f2fs-dev] [RFC PATCH v2 32/32] tests: add inject testcase of injecting node block Sheng Yong
2025-08-15 10:38 ` Chao Yu via Linux-f2fs-devel [this message]
2025-08-15 11:27 ` [f2fs-dev] [RFC PATCH v2 00/32] f2fs-tools: add testcases Sheng Yong
2025-08-16 7:04 ` Chao Yu via Linux-f2fs-devel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7a49cf29-a721-450c-9bd1-c0a5de268ce1@kernel.org \
--to=linux-f2fs-devel@lists.sourceforge.net \
--cc=chao@kernel.org \
--cc=jaegeuk@kernel.org \
--cc=shengyong1@xiaomi.com \
--cc=shengyong2021@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).