|
@@ -1358,13 +1358,17 @@ static int ext4_check_descriptors (struct super_block * sb)
|
|
|
ext4_fsblk_t inode_table;
|
|
|
struct ext4_group_desc * gdp = NULL;
|
|
|
int desc_block = 0;
|
|
|
+ int flexbg_flag = 0;
|
|
|
int i;
|
|
|
|
|
|
+ if (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_FLEX_BG))
|
|
|
+ flexbg_flag = 1;
|
|
|
+
|
|
|
ext4_debug ("Checking group descriptors");
|
|
|
|
|
|
for (i = 0; i < sbi->s_groups_count; i++)
|
|
|
{
|
|
|
- if (i == sbi->s_groups_count - 1)
|
|
|
+ if (i == sbi->s_groups_count - 1 || flexbg_flag)
|
|
|
last_block = ext4_blocks_count(sbi->s_es) - 1;
|
|
|
else
|
|
|
last_block = first_block +
|
|
@@ -1409,7 +1413,8 @@ static int ext4_check_descriptors (struct super_block * sb)
|
|
|
le16_to_cpu(gdp->bg_checksum));
|
|
|
return 0;
|
|
|
}
|
|
|
- first_block += EXT4_BLOCKS_PER_GROUP(sb);
|
|
|
+ if (!flexbg_flag)
|
|
|
+ first_block += EXT4_BLOCKS_PER_GROUP(sb);
|
|
|
gdp = (struct ext4_group_desc *)
|
|
|
((__u8 *)gdp + EXT4_DESC_SIZE(sb));
|
|
|
}
|