diff options
author | Mark Fasheh <mfasheh@suse.com> | 2010-02-24 16:34:09 -0500 |
---|---|---|
committer | Joel Becker <joel.becker@oracle.com> | 2010-05-05 21:17:31 -0400 |
commit | 33d5d380d667ad264675cfdb297dfc3c5b6542cc (patch) | |
tree | 9dcaaf4cb17559d502ee835f0aa18c46ee8c09a0 /fs/ocfs2/suballoc.c | |
parent | e3b4a97dbe9741a3227c3ed857a0632532fcd386 (diff) |
ocfs2: allocate btree internal block groups from the global bitmap
Otherwise, the need for a very large contiguous allocation tends to
wreak havoc on many inode allocation reservations on the local alloc, thus
ruining any chances for contiguousness.
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
Diffstat (limited to 'fs/ocfs2/suballoc.c')
-rw-r--r-- | fs/ocfs2/suballoc.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c index f20bcbf64ce0..df95707c8b10 100644 --- a/fs/ocfs2/suballoc.c +++ b/fs/ocfs2/suballoc.c | |||
@@ -755,7 +755,7 @@ int ocfs2_reserve_new_metadata_blocks(struct ocfs2_super *osb, | |||
755 | status = ocfs2_reserve_suballoc_bits(osb, (*ac), | 755 | status = ocfs2_reserve_suballoc_bits(osb, (*ac), |
756 | EXTENT_ALLOC_SYSTEM_INODE, | 756 | EXTENT_ALLOC_SYSTEM_INODE, |
757 | (u32)osb->slot_num, NULL, | 757 | (u32)osb->slot_num, NULL, |
758 | ALLOC_NEW_GROUP); | 758 | ALLOC_GROUPS_FROM_GLOBAL|ALLOC_NEW_GROUP); |
759 | 759 | ||
760 | 760 | ||
761 | if (status >= 0) { | 761 | if (status >= 0) { |
@@ -1871,6 +1871,8 @@ int __ocfs2_claim_clusters(struct ocfs2_super *osb, | |||
1871 | && ac->ac_which != OCFS2_AC_USE_MAIN); | 1871 | && ac->ac_which != OCFS2_AC_USE_MAIN); |
1872 | 1872 | ||
1873 | if (ac->ac_which == OCFS2_AC_USE_LOCAL) { | 1873 | if (ac->ac_which == OCFS2_AC_USE_LOCAL) { |
1874 | WARN_ON(min_clusters > 1); | ||
1875 | |||
1874 | status = ocfs2_claim_local_alloc_bits(osb, | 1876 | status = ocfs2_claim_local_alloc_bits(osb, |
1875 | handle, | 1877 | handle, |
1876 | ac, | 1878 | ac, |