long sysval;
int len, mount_flags;
char *mtpt, *undo_file = NULL;
- dgrp_t new_group_desc_count;
- unsigned long new_desc_blocks;
#ifdef ENABLE_NLS
setlocale(LC_MESSAGES, "");
new_size &= ~((blk64_t)(1ULL << fs->cluster_ratio_bits) - 1);
}
- new_group_desc_count = ext2fs_div64_ceil(new_size -
- fs->super->s_first_data_block,
- EXT2_BLOCKS_PER_GROUP(fs->super));
- new_desc_blocks = ext2fs_div_ceil(new_group_desc_count,
- EXT2_DESC_PER_BLOCK(fs->super));
- if ((new_desc_blocks + fs->super->s_first_data_block) >
- EXT2_BLOCKS_PER_GROUP(fs->super)) {
- com_err(program_name, 0,
- _("New size results in too many block group "
- "descriptors.\n"));
- goto errout;
+ if (!ext2fs_has_feature_meta_bg(fs->super)) {
+ dgrp_t new_group_desc_count;
+ unsigned long new_desc_blocks;
+
+ new_group_desc_count = ext2fs_div64_ceil(new_size -
+ fs->super->s_first_data_block,
+ EXT2_BLOCKS_PER_GROUP(fs->super));
+ new_desc_blocks = ext2fs_div_ceil(new_group_desc_count,
+ EXT2_DESC_PER_BLOCK(fs->super));
+ if ((new_desc_blocks + fs->super->s_first_data_block) >
+ EXT2_BLOCKS_PER_GROUP(fs->super)) {
+ com_err(program_name, 0,
+ _("New size results in too many block group "
+ "descriptors.\n"));
+ goto errout;
+ }
}
if (!force && new_size < min_size) {