diff options
author | Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> | 2008-07-11 19:27:31 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2008-07-11 19:27:31 -0400 |
commit | ed8f9c751feb3aebf7c0dd25e61481a16412bd6e (patch) | |
tree | 4919965c346c4dc25c94f97b7a7e83689c15502e | |
parent | 8a35694e1181a5c6d6496dca09407fc7fa4c86c2 (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>
-rw-r--r-- | fs/ext4/mballoc.c | 10 |
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) | |||
1749 | repeat: | 1745 | repeat: |
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; |