|
@@ -621,13 +621,13 @@ static int ext2_check_descriptors(struct super_block *sb)
|
|
|
{
|
|
|
int i;
|
|
|
struct ext2_sb_info *sbi = EXT2_SB(sb);
|
|
|
- unsigned long first_block = le32_to_cpu(sbi->s_es->s_first_data_block);
|
|
|
- unsigned long last_block;
|
|
|
|
|
|
ext2_debug ("Checking group descriptors");
|
|
|
|
|
|
for (i = 0; i < sbi->s_groups_count; i++) {
|
|
|
struct ext2_group_desc *gdp = ext2_get_group_desc(sb, i, NULL);
|
|
|
+ ext2_fsblk_t first_block = ext2_group_first_block_no(sb, i);
|
|
|
+ ext2_fsblk_t last_block;
|
|
|
|
|
|
if (i == sbi->s_groups_count - 1)
|
|
|
last_block = le32_to_cpu(sbi->s_es->s_blocks_count) - 1;
|
|
@@ -663,7 +663,6 @@ static int ext2_check_descriptors(struct super_block *sb)
|
|
|
i, (unsigned long) le32_to_cpu(gdp->bg_inode_table));
|
|
|
return 0;
|
|
|
}
|
|
|
- first_block += EXT2_BLOCKS_PER_GROUP(sb);
|
|
|
}
|
|
|
return 1;
|
|
|
}
|
|
@@ -720,10 +719,9 @@ static unsigned long descriptor_loc(struct super_block *sb,
|
|
|
int nr)
|
|
|
{
|
|
|
struct ext2_sb_info *sbi = EXT2_SB(sb);
|
|
|
- unsigned long bg, first_data_block, first_meta_bg;
|
|
|
+ unsigned long bg, first_meta_bg;
|
|
|
int has_super = 0;
|
|
|
|
|
|
- first_data_block = le32_to_cpu(sbi->s_es->s_first_data_block);
|
|
|
first_meta_bg = le32_to_cpu(sbi->s_es->s_first_meta_bg);
|
|
|
|
|
|
if (!EXT2_HAS_INCOMPAT_FEATURE(sb, EXT2_FEATURE_INCOMPAT_META_BG) ||
|
|
@@ -732,7 +730,8 @@ static unsigned long descriptor_loc(struct super_block *sb,
|
|
|
bg = sbi->s_desc_per_block * nr;
|
|
|
if (ext2_bg_has_super(sb, bg))
|
|
|
has_super = 1;
|
|
|
- return (first_data_block + has_super + (bg * sbi->s_blocks_per_group));
|
|
|
+
|
|
|
+ return ext2_group_first_block_no(sb, bg) + has_super;
|
|
|
}
|
|
|
|
|
|
static int ext2_fill_super(struct super_block *sb, void *data, int silent)
|