Skip to content

Commit 82e6381

Browse files
zhangyi089tytso
authored andcommitted
ext4: initialize superblock fields in the kballoc-test.c kunit tests
Various changes in the "ext4: better scalability for ext4 block allocation" patch series have resulted in kunit test failures, most notably in the test_new_blocks_simple and the test_mb_mark_used tests. The root cause of these failures is that various in-memory ext4 data structures were not getting initialized, and while previous versions of the functions exercised by the unit tests didn't use these structure members, this was arguably a test bug. Since one of the patches in the block allocation scalability patches is a fix which is has a cc:stable tag, this commit also has a cc:stable tag. CC: stable@vger.kernel.org Link: https://lore.kernel.org/r/20250714130327.1830534-1-libaokun1@huawei.com Link: https://patch.msgid.link/20250725021550.3177573-1-yi.zhang@huaweicloud.com Link: https://patch.msgid.link/20250725021654.3188798-1-yi.zhang@huaweicloud.com Reported-by: Guenter Roeck <linux@roeck-us.net> Closes: https://lore.kernel.org/linux-ext4/b0635ad0-7ebf-4152-a69b-58e7e87d5085@roeck-us.net/ Tested-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Zhang Yi <yi.zhang@huawei.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
1 parent 90f097b commit 82e6381

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

fs/ext4/mballoc-test.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ static struct super_block *mbt_ext4_alloc_super_block(void)
155155
bgl_lock_init(sbi->s_blockgroup_lock);
156156

157157
sbi->s_es = &fsb->es;
158+
sbi->s_sb = sb;
158159
sb->s_fs_info = sbi;
159160

160161
up_write(&sb->s_umount);
@@ -802,6 +803,10 @@ static void test_mb_mark_used(struct kunit *test)
802803
KUNIT_ASSERT_EQ(test, ret, 0);
803804

804805
grp->bb_free = EXT4_CLUSTERS_PER_GROUP(sb);
806+
grp->bb_largest_free_order = -1;
807+
grp->bb_avg_fragment_size_order = -1;
808+
INIT_LIST_HEAD(&grp->bb_largest_free_order_node);
809+
INIT_LIST_HEAD(&grp->bb_avg_fragment_size_node);
805810
mbt_generate_test_ranges(sb, ranges, TEST_RANGE_COUNT);
806811
for (i = 0; i < TEST_RANGE_COUNT; i++)
807812
test_mb_mark_used_range(test, &e4b, ranges[i].start,
@@ -875,6 +880,10 @@ static void test_mb_free_blocks(struct kunit *test)
875880
ext4_unlock_group(sb, TEST_GOAL_GROUP);
876881

877882
grp->bb_free = 0;
883+
grp->bb_largest_free_order = -1;
884+
grp->bb_avg_fragment_size_order = -1;
885+
INIT_LIST_HEAD(&grp->bb_largest_free_order_node);
886+
INIT_LIST_HEAD(&grp->bb_avg_fragment_size_node);
878887
memset(bitmap, 0xff, sb->s_blocksize);
879888

880889
mbt_generate_test_ranges(sb, ranges, TEST_RANGE_COUNT);

0 commit comments

Comments
 (0)