|
@@ -307,6 +307,7 @@ static ext4_fsblk_t ext4_valid_block_bitmap(struct super_block *sb,
|
|
|
ext4_group_t block_group,
|
|
|
struct buffer_head *bh)
|
|
|
{
|
|
|
+ struct ext4_sb_info *sbi = EXT4_SB(sb);
|
|
|
ext4_grpblk_t offset;
|
|
|
ext4_grpblk_t next_zero_bit;
|
|
|
ext4_fsblk_t blk;
|
|
@@ -326,14 +327,14 @@ static ext4_fsblk_t ext4_valid_block_bitmap(struct super_block *sb,
|
|
|
/* check whether block bitmap block number is set */
|
|
|
blk = ext4_block_bitmap(sb, desc);
|
|
|
offset = blk - group_first_block;
|
|
|
- if (!ext4_test_bit(offset, bh->b_data))
|
|
|
+ if (!ext4_test_bit(EXT4_B2C(sbi, offset), bh->b_data))
|
|
|
/* bad block bitmap */
|
|
|
return blk;
|
|
|
|
|
|
/* check whether the inode bitmap block number is set */
|
|
|
blk = ext4_inode_bitmap(sb, desc);
|
|
|
offset = blk - group_first_block;
|
|
|
- if (!ext4_test_bit(offset, bh->b_data))
|
|
|
+ if (!ext4_test_bit(EXT4_B2C(sbi, offset), bh->b_data))
|
|
|
/* bad block bitmap */
|
|
|
return blk;
|
|
|
|
|
@@ -341,9 +342,10 @@ static ext4_fsblk_t ext4_valid_block_bitmap(struct super_block *sb,
|
|
|
blk = ext4_inode_table(sb, desc);
|
|
|
offset = blk - group_first_block;
|
|
|
next_zero_bit = ext4_find_next_zero_bit(bh->b_data,
|
|
|
- offset + EXT4_SB(sb)->s_itb_per_group,
|
|
|
- offset);
|
|
|
- if (next_zero_bit < offset + EXT4_SB(sb)->s_itb_per_group)
|
|
|
+ EXT4_B2C(sbi, offset + EXT4_SB(sb)->s_itb_per_group),
|
|
|
+ EXT4_B2C(sbi, offset));
|
|
|
+ if (next_zero_bit <
|
|
|
+ EXT4_B2C(sbi, offset + EXT4_SB(sb)->s_itb_per_group))
|
|
|
/* bad bitmap for inode tables */
|
|
|
return blk;
|
|
|
return 0;
|