From: Sheng Yong <shengyong2021@gmail.com>
To: Chao Yu <chao@kernel.org>, 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 19:27:42 +0800 [thread overview]
Message-ID: <e87b4e1c-f7b9-4aa4-94ce-2f805cefa5cb@gmail.com> (raw)
In-Reply-To: <7a49cf29-a721-450c-9bd1-c0a5de268ce1@kernel.org>
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-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 11:28 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 ` [f2fs-dev] [RFC PATCH v2 00/32] f2fs-tools: add testcases Chao Yu via Linux-f2fs-devel
2025-08-15 11:27 ` Sheng Yong [this message]
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=e87b4e1c-f7b9-4aa4-94ce-2f805cefa5cb@gmail.com \
--to=shengyong2021@gmail.com \
--cc=chao@kernel.org \
--cc=jaegeuk@kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=shengyong1@xiaomi.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.