From: Theodore Ts'o Date: Mon, 31 May 2010 02:49:22 +0000 (-0400) Subject: ext4: Fix accounting of reserved metadata blocks X-Git-Tag: firefly_0821_release~10186^2~1345 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=5d11fc79a018ac6f347b6e8cc39d8dc5c52bb064;p=firefly-linux-kernel-4.4.55.git ext4: Fix accounting of reserved metadata blocks commit ee5f4d9cdf32fd99172d11665c592a288c2b1ff4 upstream (as of v2.6.33-rc3) Commit 0637c6f had a typo which caused the reserved metadata blocks to not be released correctly. Fix this. Signed-off-by: "Theodore Ts'o" Signed-off-by: Greg Kroah-Hartman --- diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index e7248baa728b..c3e1d0fda4d0 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -1118,9 +1118,9 @@ static void ext4_da_update_reserve_space(struct inode *inode, int used) * only when we have written all of the delayed * allocation blocks. */ - mdb_free = ei->i_allocated_meta_blocks; + mdb_free = ei->i_reserved_meta_blocks; + ei->i_reserved_meta_blocks = 0; percpu_counter_sub(&sbi->s_dirtyblocks_counter, mdb_free); - ei->i_allocated_meta_blocks = 0; } spin_unlock(&EXT4_I(inode)->i_block_reservation_lock); @@ -1931,8 +1931,8 @@ static void ext4_da_release_space(struct inode *inode, int to_free) * only when we have written all of the delayed * allocation blocks. */ - to_free += ei->i_allocated_meta_blocks; - ei->i_allocated_meta_blocks = 0; + to_free += ei->i_reserved_meta_blocks; + ei->i_reserved_meta_blocks = 0; } /* update fs dirty blocks counter */