From: Jan Kara Date: Tue, 19 Jun 2018 14:45:16 +0000 (-0400) Subject: libext2fs: don't create filesystems with meta_bg and resize_inode X-Git-Tag: v1.44.3-rc1~61 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=42e77d5db53e3ec09b5dc507169d15de219799e3;p=thirdparty%2Fe2fsprogs.git libext2fs: don't create filesystems with meta_bg and resize_inode ext2fs_initialize() may end up enabling meta_bg feature for filesystem which have resize_inode. Such combination is invalid to make sure we disable resize_inode when enabling meta_bg. Reviewed-by: Andreas Dilger Signed-off-by: Jan Kara Signed-off-by: Theodore Ts'o --- diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c index e1eff22ea..8c9e97fee 100644 --- a/lib/ext2fs/initialize.c +++ b/lib/ext2fs/initialize.c @@ -382,6 +382,13 @@ ipg_retry: retval = EXT2_ET_RES_GDT_BLOCKS; goto cleanup; } + /* Enable meta_bg if we'd lose more than 3/4 of a BG to GDT blocks. */ + if (super->s_reserved_gdt_blocks + fs->desc_blocks > + super->s_blocks_per_group * 3 / 4) { + ext2fs_set_feature_meta_bg(fs->super); + ext2fs_clear_feature_resize_inode(fs->super); + set_field(s_reserved_gdt_blocks, 0); + } /* * Calculate the maximum number of bookkeeping blocks per @@ -392,11 +399,6 @@ ipg_retry: overhead = (int) (3 + fs->inode_blocks_per_group + super->s_reserved_gdt_blocks); - /* Enable meta_bg if we'd lose more than 3/4 of a BG to GDT blocks. */ - if (super->s_reserved_gdt_blocks + fs->desc_blocks > - super->s_blocks_per_group * 3 / 4) - ext2fs_set_feature_meta_bg(fs->super); - if (ext2fs_has_feature_meta_bg(fs->super)) overhead++; else