Patchwork [1/2,v2] ext4: check free block counters in ext4_mb_find_by_goal

login
register
mail settings
Submitter Yongqiang Yang
Date Sept. 6, 2012, 1:16 p.m.
Message ID <1346937415-2866-1-git-send-email-xiaoqiangnk@gmail.com>
Download mbox | patch
Permalink /patch/182187/
State Accepted, archived
Headers show

Comments

Yongqiang Yang - Sept. 6, 2012, 1:16 p.m.
Free block counters should be checked before doing allocation.

Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com>
---
 fs/ext4/mballoc.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
Theodore Ts'o - Sept. 24, 2012, 3:11 a.m.
On Thu, Sep 06, 2012 at 09:16:54PM +0800, Yongqiang Yang wrote:
> Free block counters should be checked before doing allocation.
> 
> Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com>

Thanks, applied.

						- Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index 6873571..5d4c21a 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -1659,10 +1659,13 @@  int ext4_mb_find_by_goal(struct ext4_allocation_context *ac,
 	int max;
 	int err;
 	struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb);
+	struct ext4_group_info *grp = ext4_get_group_info(ac->ac_sb, group);
 	struct ext4_free_extent ex;
 
 	if (!(ac->ac_flags & EXT4_MB_HINT_TRY_GOAL))
 		return 0;
+	if (grp->bb_free == 0)
+		return 0;
 
 	err = ext4_mb_load_buddy(ac->ac_sb, group, e4b);
 	if (err)