aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext4/mballoc.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ext4/mballoc.c')
-rw-r--r--fs/ext4/mballoc.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index b882868f4661..5dcb826401bb 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -2842,6 +2842,14 @@ ext4_mb_mark_diskspace_used(struct ext4_allocation_context *ac,
2842 spin_unlock(sb_bgl_lock(sbi, ac->ac_b_ex.fe_group)); 2842 spin_unlock(sb_bgl_lock(sbi, ac->ac_b_ex.fe_group));
2843 percpu_counter_sub(&sbi->s_freeblocks_counter, ac->ac_b_ex.fe_len); 2843 percpu_counter_sub(&sbi->s_freeblocks_counter, ac->ac_b_ex.fe_len);
2844 2844
2845 if (sbi->s_log_groups_per_flex) {
2846 ext4_group_t flex_group = ext4_flex_group(sbi,
2847 ac->ac_b_ex.fe_group);
2848 spin_lock(sb_bgl_lock(sbi, flex_group));
2849 sbi->s_flex_groups[flex_group].free_blocks -= ac->ac_b_ex.fe_len;
2850 spin_unlock(sb_bgl_lock(sbi, flex_group));
2851 }
2852
2845 err = ext4_journal_dirty_metadata(handle, bitmap_bh); 2853 err = ext4_journal_dirty_metadata(handle, bitmap_bh);
2846 if (err) 2854 if (err)
2847 goto out_err; 2855 goto out_err;
@@ -4342,6 +4350,13 @@ do_more:
4342 spin_unlock(sb_bgl_lock(sbi, block_group)); 4350 spin_unlock(sb_bgl_lock(sbi, block_group));
4343 percpu_counter_add(&sbi->s_freeblocks_counter, count); 4351 percpu_counter_add(&sbi->s_freeblocks_counter, count);
4344 4352
4353 if (sbi->s_log_groups_per_flex) {
4354 ext4_group_t flex_group = ext4_flex_group(sbi, block_group);
4355 spin_lock(sb_bgl_lock(sbi, flex_group));
4356 sbi->s_flex_groups[flex_group].free_blocks += count;
4357 spin_unlock(sb_bgl_lock(sbi, flex_group));
4358 }
4359
4345 ext4_mb_release_desc(&e4b); 4360 ext4_mb_release_desc(&e4b);
4346 4361
4347 *freed += count; 4362 *freed += count;