aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext4/super.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ext4/super.c')
-rw-r--r--fs/ext4/super.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index dd4ff9c87358..54450fa1af39 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -1358,13 +1358,17 @@ static int ext4_check_descriptors (struct super_block * sb)
1358 ext4_fsblk_t inode_table; 1358 ext4_fsblk_t inode_table;
1359 struct ext4_group_desc * gdp = NULL; 1359 struct ext4_group_desc * gdp = NULL;
1360 int desc_block = 0; 1360 int desc_block = 0;
1361 int flexbg_flag = 0;
1361 int i; 1362 int i;
1362 1363
1364 if (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_FLEX_BG))
1365 flexbg_flag = 1;
1366
1363 ext4_debug ("Checking group descriptors"); 1367 ext4_debug ("Checking group descriptors");
1364 1368
1365 for (i = 0; i < sbi->s_groups_count; i++) 1369 for (i = 0; i < sbi->s_groups_count; i++)
1366 { 1370 {
1367 if (i == sbi->s_groups_count - 1) 1371 if (i == sbi->s_groups_count - 1 || flexbg_flag)
1368 last_block = ext4_blocks_count(sbi->s_es) - 1; 1372 last_block = ext4_blocks_count(sbi->s_es) - 1;
1369 else 1373 else
1370 last_block = first_block + 1374 last_block = first_block +
@@ -1409,7 +1413,8 @@ static int ext4_check_descriptors (struct super_block * sb)
1409 le16_to_cpu(gdp->bg_checksum)); 1413 le16_to_cpu(gdp->bg_checksum));
1410 return 0; 1414 return 0;
1411 } 1415 }
1412 first_block += EXT4_BLOCKS_PER_GROUP(sb); 1416 if (!flexbg_flag)
1417 first_block += EXT4_BLOCKS_PER_GROUP(sb);
1413 gdp = (struct ext4_group_desc *) 1418 gdp = (struct ext4_group_desc *)
1414 ((__u8 *)gdp + EXT4_DESC_SIZE(sb)); 1419 ((__u8 *)gdp + EXT4_DESC_SIZE(sb));
1415 } 1420 }