* [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
* [PATCH 2/4] ext4: remove unused argument in ext4_mb_generate_from_pa
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 ` 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
` (2 subsequent siblings)
3 siblings, 1 reply; 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 argument 'count' in function ext4_mb_generate_from_pa looks useless,
so clean it.
Signed-off-by: Robin Dong <sanbai@taobao.com>
---
fs/ext4/mballoc.c | 2 --
1 files changed, 0 insertions(+), 2 deletions(-)
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index 6b58247..d0fc76e 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -3312,7 +3312,6 @@ void ext4_mb_generate_from_pa(struct super_block *sb, void *bitmap,
ext4_group_t groupnr;
ext4_grpblk_t start;
int preallocated = 0;
- int count = 0;
int len;
/* all form of preallocation discards first load group,
@@ -3335,7 +3334,6 @@ void ext4_mb_generate_from_pa(struct super_block *sb, void *bitmap,
BUG_ON(groupnr != group);
ext4_set_bits(bitmap, start, len);
preallocated += len;
- count++;
}
mb_debug(1, "prellocated %u for group %u\n", preallocated, group);
}
--
1.7.4.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/4] ext4: remove unused argument in mb_find_extent
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-09-15 7:09 ` 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 9:17 ` [PATCH 1/4] ext4: use stream-alloc when mb_group_prealloc set to zero Ted Ts'o
3 siblings, 1 reply; 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 argument 'ord' in function mb_find_extent is redundant,
so remove it.
Signed-off-by: Robin Dong <sanbai@taobao.com>
---
fs/ext4/mballoc.c | 4 +---
1 files changed, 1 insertions(+), 3 deletions(-)
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index d0fc76e..99d123a 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -1390,7 +1390,6 @@ static int mb_find_extent(struct ext4_buddy *e4b, int order, int block,
{
int next = block;
int max;
- int ord;
void *buddy;
assert_spin_locked(ext4_group_lock_ptr(e4b->bd_sb, e4b->bd_group));
@@ -1432,9 +1431,8 @@ static int mb_find_extent(struct ext4_buddy *e4b, int order, int block,
if (mb_test_bit(next, EXT4_MB_BITMAP(e4b)))
break;
- ord = mb_find_order_for_block(e4b, next);
+ order = mb_find_order_for_block(e4b, next);
- order = ord;
block = next >> order;
ex->fe_len += 1 << order;
}
--
1.7.4.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/4] ext4: fix a wrong comment in __mb_check_buddy
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-09-15 7:09 ` [PATCH 3/4] ext4: remove unused argument in mb_find_extent Robin Dong
@ 2011-09-15 7:09 ` 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
3 siblings, 1 reply; 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 comment says the bit should be 0, but the after code assert the bit to be 1.
This makes people confused, so fix it.
Signed-off-by: Robin Dong <sanbai@taobao.com>
---
fs/ext4/mballoc.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index 99d123a..0b3d0ee 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -580,7 +580,7 @@ static int __mb_check_buddy(struct ext4_buddy *e4b, char *file,
continue;
}
- /* both bits in buddy2 must be 0 */
+ /* both bits in buddy2 must be 1 */
MB_CHECK_ASSERT(mb_test_bit(i << 1, buddy2));
MB_CHECK_ASSERT(mb_test_bit((i << 1) + 1, buddy2));
--
1.7.4.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/4] ext4: use stream-alloc when mb_group_prealloc set to zero
2011-09-15 7:09 [PATCH 1/4] ext4: use stream-alloc when mb_group_prealloc set to zero Robin Dong
` (2 preceding siblings ...)
2011-09-15 7:09 ` [PATCH 4/4] ext4: fix a wrong comment in __mb_check_buddy Robin Dong
@ 2011-10-26 9:17 ` Ted Ts'o
3 siblings, 0 replies; 8+ messages in thread
From: Ted Ts'o @ 2011-10-26 9:17 UTC (permalink / raw)
To: Robin Dong; +Cc: linux-ext4, Robin Dong
On Thu, Sep 15, 2011 at 03:09:37PM +0800, Robin Dong wrote:
> 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>
Thanks, applied.
- Ted
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/4] ext4: remove unused argument in ext4_mb_generate_from_pa
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
0 siblings, 0 replies; 8+ messages in thread
From: Ted Ts'o @ 2011-10-26 9:24 UTC (permalink / raw)
To: Robin Dong; +Cc: linux-ext4, Robin Dong
On Thu, Sep 15, 2011 at 03:09:38PM +0800, Robin Dong wrote:
> From: Robin Dong <sanbai@taobao.com>
>
> The argument 'count' in function ext4_mb_generate_from_pa looks useless,
> so clean it.
>
> Signed-off-by: Robin Dong <sanbai@taobao.com>
Thanks, applied.
- Ted
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 3/4] ext4: remove unused argument in mb_find_extent
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
0 siblings, 0 replies; 8+ messages in thread
From: Ted Ts'o @ 2011-10-26 9:34 UTC (permalink / raw)
To: Robin Dong; +Cc: linux-ext4, Robin Dong
On Thu, Sep 15, 2011 at 03:09:39PM +0800, Robin Dong wrote:
> From: Robin Dong <sanbai@taobao.com>
>
> The argument 'ord' in function mb_find_extent is redundant,
> so remove it.
>
> Signed-off-by: Robin Dong <sanbai@taobao.com>
Thanks, applied.
In both this and the previous patch, I changed "argument" to
"variable" for clarity/correctness in the git commit log.
- Ted
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 4/4] ext4: fix a wrong comment in __mb_check_buddy
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
0 siblings, 0 replies; 8+ messages in thread
From: Ted Ts'o @ 2011-10-26 12:53 UTC (permalink / raw)
To: Robin Dong; +Cc: linux-ext4, Robin Dong
On Thu, Sep 15, 2011 at 03:09:40PM +0800, Robin Dong wrote:
> From: Robin Dong <sanbai@taobao.com>
>
> The comment says the bit should be 0, but the after code assert the bit to be 1.
> This makes people confused, so fix it.
>
> Signed-off-by: Robin Dong <sanbai@taobao.com>
Thanks, applied.
- Ted
^ permalink raw reply [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).