diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index 9087183602e4..82c9a5c6fa6f 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -1291,9 +1291,11 @@ void ext4_mb_generate_buddy(struct super_block *sb, * If we intend to continue, we consider group descriptor * corrupt and update bb_free using bitmap value */ + s64 correction = (s64)grp->bb_free - (s64)free; + percpu_counter_sub(&sbi->s_freeclusters_counter, correction); + grp->bb_free = free; - ext4_mark_group_bitmap_corrupted(sb, group, - EXT4_GROUP_INFO_BBITMAP_CORRUPT); + set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, &grp->bb_state); } mb_set_largest_free_order(sb, grp); mb_update_avg_fragment_size(sb, grp);