aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Fasheh <mfasheh@suse.com>2010-03-11 21:43:46 -0500
committerJoel Becker <joel.becker@oracle.com>2010-03-18 16:22:42 -0400
commitb22b63ebafb97b66d1054e69941ee049d790c6cf (patch)
tree98c6049f6ab23ad71ed4ba6dad43558296ae69b6
parentfcefd25ac89239cb57fa198f125a79ff85468c75 (diff)
ocfs2: Always try for maximum bits with new local alloc windows
What we were doing before was to ask for the current window size as the maximum allocation. This had the effect of limiting the amount of allocation we could get for the local alloc during times when the window size was shrunk due to fragmentation. In some cases, that could actually *increase* fragmentation by artificially limiting the number of bits we can accept. So while we still want to ask for a minimum number of bits equal to window size, there is no reason why we should limit the number of bits the local alloc should accept. Hence always allow the maximum number of local alloc bits. Signed-off-by: Mark Fasheh <mfasheh@suse.com> Signed-off-by: Joel Becker <joel.becker@oracle.com>
-rw-r--r--fs/ocfs2/localalloc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/ocfs2/localalloc.c b/fs/ocfs2/localalloc.c
index ca992d91f511..171c691b42a0 100644
--- a/fs/ocfs2/localalloc.c
+++ b/fs/ocfs2/localalloc.c
@@ -984,8 +984,7 @@ static int ocfs2_local_alloc_reserve_for_window(struct ocfs2_super *osb,
984 } 984 }
985 985
986retry_enospc: 986retry_enospc:
987 (*ac)->ac_bits_wanted = osb->local_alloc_bits; 987 (*ac)->ac_bits_wanted = osb->local_alloc_default_bits;
988
989 status = ocfs2_reserve_cluster_bitmap_bits(osb, *ac); 988 status = ocfs2_reserve_cluster_bitmap_bits(osb, *ac);
990 if (status == -ENOSPC) { 989 if (status == -ENOSPC) {
991 if (ocfs2_recalc_la_window(osb, OCFS2_LA_EVENT_ENOSPC) == 990 if (ocfs2_recalc_la_window(osb, OCFS2_LA_EVENT_ENOSPC) ==
@@ -1061,6 +1060,7 @@ retry_enospc:
1061 OCFS2_LA_DISABLED) 1060 OCFS2_LA_DISABLED)
1062 goto bail; 1061 goto bail;
1063 1062
1063 ac->ac_bits_wanted = osb->local_alloc_default_bits;
1064 status = ocfs2_claim_clusters(osb, handle, ac, 1064 status = ocfs2_claim_clusters(osb, handle, ac,
1065 osb->local_alloc_bits, 1065 osb->local_alloc_bits,
1066 &cluster_off, 1066 &cluster_off,