summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/extent-tree.c
diff options
context:
space:
mode:
authorChris Mason2008-01-02 16:01:11 +0100
committerChris Mason2008-09-25 17:03:58 +0200
commit8f662a76c6af8eb367fa519e9bb9766040d9cea8 (patch)
tree3072a4d35c49e2c884f41d044dec4950bf95c3b3 /fs/btrfs/extent-tree.c
parentBtrfs: Fix NULL block groups on reading the inode (diff)
downloadkernel-qcow2-linux-8f662a76c6af8eb367fa519e9bb9766040d9cea8.tar.gz
kernel-qcow2-linux-8f662a76c6af8eb367fa519e9bb9766040d9cea8.tar.xz
kernel-qcow2-linux-8f662a76c6af8eb367fa519e9bb9766040d9cea8.zip
Btrfs: Add readahead to the online shrinker, and a mount -o alloc_start= for testing
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/extent-tree.c')
-rw-r--r--fs/btrfs/extent-tree.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index a421069e998b..d6243c2afc73 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -1630,11 +1630,11 @@ int btrfs_alloc_extent(struct btrfs_trans_handle *trans,
struct btrfs_path *path;
btrfs_set_stack_extent_refs(&extent_item, 1);
-#if 0
- new_hint = max(hint_byte, 16ULL * 1024 * 1024 * 1024);
+
+ new_hint = max(hint_byte, root->fs_info->alloc_start);
if (new_hint < btrfs_super_total_bytes(&info->super_copy))
hint_byte = new_hint;
-#endif
+
WARN_ON(num_bytes < root->sectorsize);
ret = find_free_extent(trans, root, num_bytes, empty_size,
search_start, search_end, hint_byte, ins,
@@ -2239,7 +2239,7 @@ static int relocate_one_reference(struct btrfs_root *extent_root,
free_extent_buffer(eb);
path->lowest_level = level;
- path->reada = 0;
+ path->reada = 2;
ret = btrfs_search_slot(trans, found_root, &found_key, path,
0, 1);
path->lowest_level = 0;
@@ -2372,6 +2372,7 @@ int btrfs_shrink_extent_tree(struct btrfs_root *root, u64 new_size)
block_group_cache = &info->block_group_cache;
path = btrfs_alloc_path();
root = root->fs_info->extent_root;
+ path->reada = 2;
again:
total_found = 0;