Btrfs: allocator tweaks
authorChris Mason <chris.mason@oracle.com>
Fri, 27 Apr 2007 15:42:05 +0000 (11:42 -0400)
committerDavid Woodhouse <dwmw2@hera.kernel.org>
Fri, 27 Apr 2007 15:42:05 +0000 (11:42 -0400)
Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/disk-io.c
fs/btrfs/extent-tree.c

index 2489ffa5fb38425693ea4492d48c7851ec3b46fd..e1b6e13a5ae8ba8c2d7ca8683d486eef10cef2d3 100644 (file)
@@ -94,9 +94,6 @@ struct buffer_head *btrfs_find_tree_block(struct btrfs_root *root, u64 blocknr)
        } while (bh != head);
 out_unlock:
        unlock_page(page);
-       if (ret) {
-               touch_buffer(ret);
-       }
        page_cache_release(page);
        return ret;
 }
index 71e3b311fc42feb20a2c973fd3e3da6e1b61c7f8..aca5802a8a1e8659def1071cc738f9a929e2c135 100644 (file)
@@ -311,7 +311,10 @@ int btrfs_finish_extent_commit(struct btrfs_trans_handle *trans, struct
                        clear_radix_bit(pinned_radix, gang[i]);
                }
        }
-       root->fs_info->block_group_cache = NULL;
+       if (root->fs_info->block_group_cache) {
+               root->fs_info->block_group_cache->last_alloc =
+                       root->fs_info->block_group_cache->first_free;
+       }
        return 0;
 }
 
@@ -578,7 +581,7 @@ check_failed:
                                if (last_block < search_start)
                                        last_block = search_start;
                                hole_size = key.objectid - last_block;
-                               if (hole_size > num_blocks) {
+                               if (hole_size >= num_blocks) {
                                        ins->objectid = last_block;
                                        ins->offset = hole_size;
                                        goto check_pending;