X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;ds=sidebyside;f=ldiskfs%2Fkernel_patches%2Fpatches%2Fsles12sp3%2Fext4-corrupted-inode-block-bitmaps-handling-patches.patch;h=10234019c50a848a67bf997dce58a92234e7f0a4;hb=1a52fde2e8c2c5b13ed3d1b8f81055a6e352a671;hp=90b5deaf7bbfcf941a98dbd88f6978cd9062ae35;hpb=66bb2d13f8c4eb9670c8c98655221593f8aaf77d;p=fs%2Flustre-release.git diff --git a/ldiskfs/kernel_patches/patches/sles12sp3/ext4-corrupted-inode-block-bitmaps-handling-patches.patch b/ldiskfs/kernel_patches/patches/sles12sp3/ext4-corrupted-inode-block-bitmaps-handling-patches.patch index 90b5dea..1023401 100644 --- a/ldiskfs/kernel_patches/patches/sles12sp3/ext4-corrupted-inode-block-bitmaps-handling-patches.patch +++ b/ldiskfs/kernel_patches/patches/sles12sp3/ext4-corrupted-inode-block-bitmaps-handling-patches.patch @@ -7,10 +7,10 @@ diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c 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)); @@ -35,18 +35,18 @@ index e069155..692b5e4 100644 + 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); @@ -59,7 +59,7 @@ index e069155..692b5e4 100644 + 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)) { @@ -74,18 +74,18 @@ index e069155..692b5e4 100644 + 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 @@ -124,45 +124,6 @@ diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c 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;