From 423c544db35639e526dd7495b49cf35ee52a5dd5 Mon Sep 17 00:00:00 2001 From: Josef Bacik Date: Tue, 30 Sep 2008 14:40:06 -0400 Subject: [PATCH] --- yaml --- r: 128963 b: refs/heads/master c: 45b8c9a8b1e15bf79c2c17ec217adf96785f8011 h: refs/heads/master i: 128961: dd8cd6d01d744777d368637637a81789e7be4d1d 128959: 877dc9886e4b39cfa1e86c54ab2480cac1572859 v: v3 --- [refs] | 2 +- trunk/fs/btrfs/extent-tree.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 104784f2895f..a314717092c8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d352ac68148b69937d39ca5d48bcc4478e118dbf +refs/heads/master: 45b8c9a8b1e15bf79c2c17ec217adf96785f8011 diff --git a/trunk/fs/btrfs/extent-tree.c b/trunk/fs/btrfs/extent-tree.c index 8043b9d584a9..64e14ddf6232 100644 --- a/trunk/fs/btrfs/extent-tree.c +++ b/trunk/fs/btrfs/extent-tree.c @@ -2238,7 +2238,10 @@ static int noinline find_free_extent(struct btrfs_trans_handle *trans, total_needed += empty_size; new_group: - block_group = btrfs_lookup_first_block_group(info, search_start); + block_group = btrfs_lookup_block_group(info, search_start); + if (!block_group) + block_group = btrfs_lookup_first_block_group(info, + search_start); /* * Ok this looks a little tricky, buts its really simple. First if we @@ -2255,8 +2258,10 @@ static int noinline find_free_extent(struct btrfs_trans_handle *trans, if (!block_group || (!block_group_bits(block_group, data) && last_ptr && *last_ptr)) { if (search_start != orig_search_start) { - if (last_ptr && *last_ptr) + if (last_ptr && *last_ptr) { + total_needed += empty_cluster; *last_ptr = 0; + } search_start = orig_search_start; goto new_group; } else if (!chunk_alloc_done && allowed_chunk_alloc) {