ext4: fix extents-test.c is not compiled when EXT4_KUNIT_TESTS=M
Now, only EXT4_KUNIT_TESTS=Y testcase will be compiled in 'extents.c'.
To solve this issue, the ext4 test code needs to be decoupled. The
'extents-test' module is compiled into 'ext4-test' module.
Fixes: cb1e0c1d1f ("ext4: kunit tests for extent splitting and conversion")
Signed-off-by: Ye Bin <yebin10@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/20260314075258.1317579-4-yebin@huaweicloud.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
parent
519b76ac0b
commit
9e1b14320b
|
|
@ -14,7 +14,8 @@ ext4-y := balloc.o bitmap.o block_validity.o dir.o ext4_jbd2.o extents.o \
|
|||
|
||||
ext4-$(CONFIG_EXT4_FS_POSIX_ACL) += acl.o
|
||||
ext4-$(CONFIG_EXT4_FS_SECURITY) += xattr_security.o
|
||||
ext4-test-objs += inode-test.o mballoc-test.o
|
||||
ext4-test-objs += inode-test.o mballoc-test.o \
|
||||
extents-test.o
|
||||
obj-$(CONFIG_EXT4_KUNIT_TESTS) += ext4-test.o
|
||||
ext4-$(CONFIG_FS_VERITY) += verity.o
|
||||
ext4-$(CONFIG_FS_ENCRYPTION) += crypto.o
|
||||
|
|
|
|||
|
|
@ -264,5 +264,17 @@ static inline void ext4_idx_store_pblock(struct ext4_extent_idx *ix,
|
|||
0xffff);
|
||||
}
|
||||
|
||||
extern int __ext4_ext_dirty(const char *where, unsigned int line,
|
||||
handle_t *handle, struct inode *inode,
|
||||
struct ext4_ext_path *path);
|
||||
extern int ext4_ext_zeroout(struct inode *inode, struct ext4_extent *ex);
|
||||
#if IS_ENABLED(CONFIG_EXT4_KUNIT_TESTS)
|
||||
extern int ext4_ext_space_root_idx_test(struct inode *inode, int check);
|
||||
extern struct ext4_ext_path *ext4_split_convert_extents_test(
|
||||
handle_t *handle, struct inode *inode,
|
||||
struct ext4_map_blocks *map,
|
||||
struct ext4_ext_path *path,
|
||||
int flags, unsigned int *allocated);
|
||||
#endif
|
||||
#endif /* _EXT4_EXTENTS */
|
||||
|
||||
|
|
|
|||
|
|
@ -282,8 +282,8 @@ static int extents_kunit_init(struct kunit *test)
|
|||
eh->eh_depth = 0;
|
||||
eh->eh_entries = cpu_to_le16(1);
|
||||
eh->eh_magic = EXT4_EXT_MAGIC;
|
||||
eh->eh_max =
|
||||
cpu_to_le16(ext4_ext_space_root_idx(&k_ctx.k_ei->vfs_inode, 0));
|
||||
eh->eh_max = cpu_to_le16(ext4_ext_space_root_idx_test(
|
||||
&k_ctx.k_ei->vfs_inode, 0));
|
||||
eh->eh_generation = 0;
|
||||
|
||||
/*
|
||||
|
|
@ -386,8 +386,8 @@ static void test_split_convert(struct kunit *test)
|
|||
|
||||
switch (param->type) {
|
||||
case TEST_SPLIT_CONVERT:
|
||||
path = ext4_split_convert_extents(NULL, inode, &map, path,
|
||||
param->split_flags, NULL);
|
||||
path = ext4_split_convert_extents_test(NULL, inode, &map,
|
||||
path, param->split_flags, NULL);
|
||||
break;
|
||||
case TEST_CREATE_BLOCKS:
|
||||
ext4_map_create_blocks_helper(test, inode, &map, param->split_flags);
|
||||
|
|
|
|||
|
|
@ -184,9 +184,9 @@ static int ext4_ext_get_access(handle_t *handle, struct inode *inode,
|
|||
* - ENOMEM
|
||||
* - EIO
|
||||
*/
|
||||
static int __ext4_ext_dirty(const char *where, unsigned int line,
|
||||
handle_t *handle, struct inode *inode,
|
||||
struct ext4_ext_path *path)
|
||||
int __ext4_ext_dirty(const char *where, unsigned int line,
|
||||
handle_t *handle, struct inode *inode,
|
||||
struct ext4_ext_path *path)
|
||||
{
|
||||
int err;
|
||||
|
||||
|
|
@ -3159,7 +3159,7 @@ static void ext4_zeroout_es(struct inode *inode, struct ext4_extent *ex)
|
|||
}
|
||||
|
||||
/* FIXME!! we need to try to merge to left or right after zero-out */
|
||||
static int ext4_ext_zeroout(struct inode *inode, struct ext4_extent *ex)
|
||||
int ext4_ext_zeroout(struct inode *inode, struct ext4_extent *ex)
|
||||
{
|
||||
ext4_fsblk_t ee_pblock;
|
||||
unsigned int ee_len;
|
||||
|
|
@ -6257,6 +6257,33 @@ out:
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_EXT4_KUNIT_TESTS
|
||||
#include "extents-test.c"
|
||||
#if IS_ENABLED(CONFIG_EXT4_KUNIT_TESTS)
|
||||
int ext4_ext_space_root_idx_test(struct inode *inode, int check)
|
||||
{
|
||||
return ext4_ext_space_root_idx(inode, check);
|
||||
}
|
||||
EXPORT_SYMBOL_FOR_EXT4_TEST(ext4_ext_space_root_idx_test);
|
||||
|
||||
struct ext4_ext_path *ext4_split_convert_extents_test(handle_t *handle,
|
||||
struct inode *inode, struct ext4_map_blocks *map,
|
||||
struct ext4_ext_path *path, int flags,
|
||||
unsigned int *allocated)
|
||||
{
|
||||
return ext4_split_convert_extents(handle, inode, map, path,
|
||||
flags, allocated);
|
||||
}
|
||||
EXPORT_SYMBOL_FOR_EXT4_TEST(ext4_split_convert_extents_test);
|
||||
|
||||
EXPORT_SYMBOL_FOR_EXT4_TEST(__ext4_ext_dirty);
|
||||
EXPORT_SYMBOL_FOR_EXT4_TEST(ext4_ext_zeroout);
|
||||
EXPORT_SYMBOL_FOR_EXT4_TEST(ext4_es_register_shrinker);
|
||||
EXPORT_SYMBOL_FOR_EXT4_TEST(ext4_es_unregister_shrinker);
|
||||
EXPORT_SYMBOL_FOR_EXT4_TEST(ext4_map_create_blocks);
|
||||
EXPORT_SYMBOL_FOR_EXT4_TEST(ext4_es_init_tree);
|
||||
EXPORT_SYMBOL_FOR_EXT4_TEST(ext4_es_lookup_extent);
|
||||
EXPORT_SYMBOL_FOR_EXT4_TEST(ext4_es_insert_extent);
|
||||
EXPORT_SYMBOL_FOR_EXT4_TEST(ext4_ext_insert_extent);
|
||||
EXPORT_SYMBOL_FOR_EXT4_TEST(ext4_find_extent);
|
||||
EXPORT_SYMBOL_FOR_EXT4_TEST(ext4_issue_zeroout);
|
||||
EXPORT_SYMBOL_FOR_EXT4_TEST(ext4_map_query_blocks);
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue