| From e197c005dc8af29d1b7d11f7ce1feabe970936db Mon Sep 17 00:00:00 2001 |
| From: Theodore Ts'o <tytso@mit.edu> |
| Date: Mon, 28 Sep 2009 00:06:20 -0400 |
| Subject: [PATCH 39/85] ext4: Fix hueristic which avoids group preallocation for closed files |
| |
| (cherry picked from commit 71780577306fd1e76c7a92e3b308db624d03adb9) |
| |
| The hueristic was designed to avoid using locality group preallocation |
| when writing the last segment of a closed file. Fix it by move |
| setting size to the maximum of size and isize until after we check |
| whether size == isize. |
| |
| Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| fs/ext4/mballoc.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/fs/ext4/mballoc.c |
| +++ b/fs/ext4/mballoc.c |
| @@ -4162,7 +4162,6 @@ static void ext4_mb_group_or_file(struct |
| size = ac->ac_o_ex.fe_logical + ac->ac_o_ex.fe_len; |
| isize = (i_size_read(ac->ac_inode) + ac->ac_sb->s_blocksize - 1) |
| >> bsbits; |
| - size = max(size, isize); |
| |
| if ((size == isize) && |
| !ext4_fs_is_busy(sbi) && |
| @@ -4172,6 +4171,7 @@ static void ext4_mb_group_or_file(struct |
| } |
| |
| /* don't use group allocation for large files */ |
| + size = max(size, isize); |
| if (size >= sbi->s_mb_stream_request) { |
| ac->ac_flags |= EXT4_MB_STREAM_ALLOC; |
| return; |