Skip to contentSkip to conversation

mballoc: don't change cpa if cur_distance is equal to new_distance

PATCH In review Coly Li 2 participants 2 messages Feb 6, 2011 – Feb 24, 2011 ext4 file system

lore
Share & tools
lore

Coly Li

author
#0 lore raw

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().

Cc Alex Tomas <[email protected]>
Cc Theodore Tso <[email protected]>
---
 fs/ext4/mballoc.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
fs/ext4/mballoc.c +1 -1
index 569cff6..af706f6 100644
@@ -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 */
Signature · 1 line
1.7.3.4
maintainer
#1 lore raw

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.