In add_new_gdb_meta_bg, we assume that group could be non first group in meta block group as we call ext4_meta_bg_first_block_no to get first block of meta block group rather than call ext4_group_first_block_no for passed group directly. Then ext4_bg_has_super should be called with first group in meta group rather than new added group. Or we can call ext4_group_first_block_no instead of ext4_meta_bg_first_block_no to assume only first group of meta group will be passed. Either way, ext4_meta_bg_first_block_no will be useless and could be removed. This patch do it in first way to make add_new_gdb_meta_bg support non first group in meta block group. Signed-off-by: Kemeng Shi <shikemeng@xxxxxxxxxxxxxxx> --- fs/ext4/resize.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c index b9507e432496..da832466ce74 100644 --- a/fs/ext4/resize.c +++ b/fs/ext4/resize.c @@ -110,12 +110,6 @@ static ext4_group_t ext4_meta_bg_first_group(struct super_block *sb, EXT4_DESC_PER_BLOCK_BITS(sb); } -static ext4_fsblk_t ext4_meta_bg_first_block_no(struct super_block *sb, - ext4_group_t group) { - group = ext4_meta_bg_first_group(sb, group); - return ext4_group_first_block_no(sb, group); -} - static ext4_grpblk_t ext4_group_overhead_blocks(struct super_block *sb, ext4_group_t group) { ext4_grpblk_t overhead; @@ -954,8 +948,9 @@ static int add_new_gdb_meta_bg(struct super_block *sb, unsigned long gdb_num = group / EXT4_DESC_PER_BLOCK(sb); int err; - gdblock = ext4_meta_bg_first_block_no(sb, group) + - ext4_bg_has_super(sb, group); + group = ext4_meta_bg_first_group(sb, group); + gdblock = ext4_group_first_block_no(sb, group) + + ext4_bg_has_super(sb, group); gdb_bh = ext4_sb_bread(sb, gdblock, 0); if (IS_ERR(gdb_bh)) return PTR_ERR(gdb_bh); -- 2.30.0