All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] ext4: use stream-alloc when mb_group_prealloc set to zero
@ 2011-09-15  7:09 Robin Dong
  2011-09-15  7:09 ` [PATCH 2/4] ext4: remove unused argument in ext4_mb_generate_from_pa Robin Dong
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Robin Dong @ 2011-09-15  7:09 UTC (permalink / raw)
  To: linux-ext4; +Cc: Robin Dong

From: Robin Dong <sanbai@taobao.com>

The kernel will crash on 

ext4_mb_mark_diskspace_used:
	BUG_ON(ac->ac_b_ex.fe_len <= 0);

after we set /sys/fs/ext4/sda/mb_group_prealloc to zero and create new files in an ext4 filesystem.

The reason is: ac_b_ex.fe_len also set to zero(mb_group_prealloc) in ext4_mb_normalize_group_request
because the ac_flags contains EXT4_MB_HINT_GROUP_ALLOC.

I think when someone set mb_group_prealloc to zero, it means DO NOT USE GROUP PREALLOCATION,
so we should set alloc-strategy to STREAM in this case.

Signed-off-by: Robin Dong <sanbai@taobao.com>
---
 fs/ext4/mballoc.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index 17a5a57..6b58247 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -3969,6 +3969,11 @@ static void ext4_mb_group_or_file(struct ext4_allocation_context *ac)
 		return;
 	}
 
+	if (sbi->s_mb_group_prealloc <= 0) {
+		ac->ac_flags |= EXT4_MB_STREAM_ALLOC;
+		return;
+	}
+
 	/* don't use group allocation for large files */
 	size = max(size, isize);
 	if (size > sbi->s_mb_stream_request) {
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2011-10-26 12:53 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-15  7:09 [PATCH 1/4] ext4: use stream-alloc when mb_group_prealloc set to zero Robin Dong
2011-09-15  7:09 ` [PATCH 2/4] ext4: remove unused argument in ext4_mb_generate_from_pa Robin Dong
2011-10-26  9:24   ` Ted Ts'o
2011-09-15  7:09 ` [PATCH 3/4] ext4: remove unused argument in mb_find_extent Robin Dong
2011-10-26  9:34   ` Ted Ts'o
2011-09-15  7:09 ` [PATCH 4/4] ext4: fix a wrong comment in __mb_check_buddy Robin Dong
2011-10-26 12:53   ` Ted Ts'o
2011-10-26  9:17 ` [PATCH 1/4] ext4: use stream-alloc when mb_group_prealloc set to zero Ted Ts'o

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.