aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>2008-07-11 19:27:31 -0400
committerTheodore Ts'o <tytso@mit.edu>2008-07-11 19:27:31 -0400
commited8f9c751feb3aebf7c0dd25e61481a16412bd6e (patch)
tree4919965c346c4dc25c94f97b7a7e83689c15502e /fs
parent8a35694e1181a5c6d6496dca09407fc7fa4c86c2 (diff)
ext4: start searching for the right extent from the goal group.
With mballoc we search for the best extent using different criteria. We should always use the goal group when we are starting with a new criteria. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Mingming Cao <cmm@us.ibm.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs')
-rw-r--r--fs/ext4/mballoc.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index ba3aad27f442..bdb9f299157a 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -1736,10 +1736,6 @@ ext4_mb_regular_allocator(struct ext4_allocation_context *ac)
1736 ac->ac_g_ex.fe_start = sbi->s_mb_last_start; 1736 ac->ac_g_ex.fe_start = sbi->s_mb_last_start;
1737 spin_unlock(&sbi->s_md_lock); 1737 spin_unlock(&sbi->s_md_lock);
1738 } 1738 }
1739
1740 /* searching for the right group start from the goal value specified */
1741 group = ac->ac_g_ex.fe_group;
1742
1743 /* Let's just scan groups to find more-less suitable blocks */ 1739 /* Let's just scan groups to find more-less suitable blocks */
1744 cr = ac->ac_2order ? 0 : 1; 1740 cr = ac->ac_2order ? 0 : 1;
1745 /* 1741 /*
@@ -1749,6 +1745,12 @@ ext4_mb_regular_allocator(struct ext4_allocation_context *ac)
1749repeat: 1745repeat:
1750 for (; cr < 4 && ac->ac_status == AC_STATUS_CONTINUE; cr++) { 1746 for (; cr < 4 && ac->ac_status == AC_STATUS_CONTINUE; cr++) {
1751 ac->ac_criteria = cr; 1747 ac->ac_criteria = cr;
1748 /*
1749 * searching for the right group start
1750 * from the goal value specified
1751 */
1752 group = ac->ac_g_ex.fe_group;
1753
1752 for (i = 0; i < EXT4_SB(sb)->s_groups_count; group++, i++) { 1754 for (i = 0; i < EXT4_SB(sb)->s_groups_count; group++, i++) {
1753 struct ext4_group_info *grp; 1755 struct ext4_group_info *grp;
1754 struct ext4_group_desc *desc; 1756 struct ext4_group_desc *desc;