2011-02-06 04:28:06

by Coly Li

[permalink] [raw]
Subject: [PATCH 5/5] mballoc: don't change cpa if cur_distance is equal to new_distance

In ext4_mb_check_group_pa(), cur_distance is selected to return only
when it's smaller than new_distance, this is unreasonable. If
cur_distance is equal to new_distance, current code will return
new_distance to update cpa from ext4_mb_use_preallocated(), which doesn't
make any sense.

This patch makes new_distance to return only when it's smaller then
cur_distance, which avoids unnecessary cpa update in
ext4_mb_use_preallocated().

Signed-off-by: Coly Li <[email protected]>
Cc: Alex Tomas <[email protected]>
Cc: Theodore Tso <[email protected]>
---
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 569cff6..af706f6 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -3181,7 +3181,7 @@ ext4_mb_check_group_pa(ext4_fsblk_t goal_block,
cur_distance = abs(goal_block - cpa->pa_pstart);
new_distance = abs(goal_block - pa->pa_pstart);

- if (cur_distance < new_distance)
+ if (cur_distance <= new_distance)
return cpa;

/* drop the previous reference */
--
1.7.3.4


2011-02-24 19:10:54

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH 5/5] mballoc: don't change cpa if cur_distance is equal to new_distance

Added to the ext4 patch queue, albeit with a rewritten patch
description.

- Ted

commit 5a54b2f199fdf19533f96c3e285b70c6729e1e4a
Author: Coly Li <[email protected]>
Date: Thu Feb 24 14:10:05 2011 -0500

ext4: mballoc: don't replace the current preallocation group unnecessarily

In ext4_mb_check_group_pa(), the current preallocation space is
replaced with a new preallocation space when the two have the same
distance from the goal block.

This doesn't actually gain us anything, so change things so that the
function only switches to the new preallocation group if its distance
from the goal block is strictly smaller than the current preallocaiton
group's distance from the goal block.

Signed-off-by: Coly Li <[email protected]>
Signed-off-by: "Theodore Ts'o" <[email protected]>