index e069155..692b5e4 100644
--- a/fs/ext4/balloc.c
+++ b/fs/ext4/balloc.c
-@@ -185,25 +185,17 @@ static int ext4_init_block_bitmap(struct super_block *sb,
+@@ -183,25 +183,17 @@ static int ext4_init_block_bitmap(struct
+ unsigned int bit, bit_max;
struct ext4_sb_info *sbi = EXT4_SB(sb);
ext4_fsblk_t start, tmp;
- int flex_bg = 0;
- struct ext4_group_info *grp;
J_ASSERT_BH(bh, buffer_locked(bh));
+ EXT4_GROUP_INFO_IBITMAP_CORRUPT,
+ "Checksum bad for group %u",
+ block_group);
- return -EFSBADCRC;
+ return -EFSBADCRC;
}
memset(bh->b_data, 0, sb->s_blocksize);
-@@ -367,7 +359,6 @@ static void ext4_validate_block_bitmap(struct super_block *sb,
+@@ -370,7 +362,6 @@ static int ext4_validate_block_bitmap(st
{
ext4_fsblk_t blk;
struct ext4_group_info *grp = ext4_get_group_info(sb, block_group);
- struct ext4_sb_info *sbi = EXT4_SB(sb);
if (buffer_verified(bh))
- return 0;
-@@ -377,22 +367,19 @@ static void ext4_validate_block_bitmap(struct super_block *sb,
+ return 0;
+@@ -381,22 +372,19 @@ static int ext4_validate_block_bitmap(st
if (unlikely(!ext4_block_bitmap_csum_verify(sb, block_group,
desc, bh))) {
ext4_unlock_group(sb, block_group);
+ EXT4_GROUP_INFO_BBITMAP_CORRUPT,
+ "bg %u: bad block bitmap checksum",
+ block_group);
- return -EFSBADCRC;
+ return -EFSBADCRC;
}
blk = ext4_valid_block_bitmap(sb, desc, block_group, bh);
if (unlikely(blk != 0)) {
+ EXT4_GROUP_INFO_BBITMAP_CORRUPT,
+ "bg %u: block %llu: invalid block bitmap",
+ block_group, blk);
- return -EFSCORRUPTED;
+ return -EFSCORRUPTED;
}
set_buffer_verified(bh);
-@@ -445,8 +432,6 @@ ext4_read_block_bitmap_nowait(struct super_block *sb, ext4_group_t block_group)
+@@ -467,8 +455,6 @@ ext4_read_block_bitmap_nowait(struct sup
ext4_unlock_group(sb, block_group);
unlock_buffer(bh);
- if (err) {
+ if (err) {
- ext4_error(sb, "Failed to init block bitmap for group "
- "%u: %d", block_group, err);
- goto out;
- }
- goto verify;
+ goto out;
+ }
+ goto verify;
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 3c41773..63a63b6 100644
--- a/fs/ext4/ext4.h
index fc65310..92bcc8d 100644
--- a/fs/ext4/ialloc.c
+++ b/fs/ext4/ialloc.c
-@@ -70,25 +70,15 @@ static unsigned ext4_init_inode_bitmap(struct super_block *sb,
- ext4_group_t block_group,
- struct ext4_group_desc *gdp)
- {
-- struct ext4_group_info *grp;
-- struct ext4_sb_info *sbi = EXT4_SB(sb);
- J_ASSERT_BH(bh, buffer_locked(bh));
-
- /* If checksum is bad mark all blocks and inodes use to prevent
- * allocation, essentially implementing a per-group read-only flag. */
- if (!ext4_group_desc_csum_verify(sb, block_group, gdp)) {
-- grp = ext4_get_group_info(sb, block_group);
-- if (!EXT4_MB_GRP_BBITMAP_CORRUPT(grp))
-- percpu_counter_sub(&sbi->s_freeclusters_counter,
-- grp->bb_free);
-- set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, &grp->bb_state);
-- if (!EXT4_MB_GRP_IBITMAP_CORRUPT(grp)) {
-- int count;
-- count = ext4_free_inodes_count(sb, gdp);
-- percpu_counter_sub(&sbi->s_freeinodes_counter,
-- count);
-- }
-- set_bit(EXT4_GROUP_INFO_IBITMAP_CORRUPT_BIT, &grp->bb_state);
-+ ext4_corrupted_block_group(sb, block_group,
-+ EXT4_GROUP_INFO_BBITMAP_CORRUPT |
-+ EXT4_GROUP_INFO_IBITMAP_CORRUPT,
-+ "Checksum bad for group %u", block_group);
- return -EFSBADCRC;
- }
-
-@@ -193,8 +180,6 @@ verify:
- ext4_unlock_group(sb, block_group);
- unlock_buffer(bh);
- if (err) {
-- ext4_error(sb, "Failed to init inode bitmap for group "
-- "%u: %d", block_group, err);
- goto out;
- }
- return bh;
@@ -337,14 +318,9 @@ out:
if (!fatal)
fatal = err;