2011-01-24 16:43:22

by Coly Li

[permalink] [raw]
Subject: [PATCH] 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 is unnecessary and a wast of CPU cycles.

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]>
---
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 851f49b..5f564d7 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -3188,7 +3188,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 */
--
Coly Li