aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs')
-rw-r--r--fs/btrfs/ctree.c2
-rw-r--r--fs/btrfs/extent-tree.c3
-rw-r--r--fs/btrfs/inode.c14
-rw-r--r--fs/btrfs/relocation.c6
4 files changed, 20 insertions, 5 deletions
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
index f7a0a64b868f..f61c16c1481a 100644
--- a/fs/btrfs/ctree.c
+++ b/fs/btrfs/ctree.c
@@ -48,8 +48,6 @@ struct btrfs_path *btrfs_alloc_path(void)
48{ 48{
49 struct btrfs_path *path; 49 struct btrfs_path *path;
50 path = kmem_cache_zalloc(btrfs_path_cachep, GFP_NOFS); 50 path = kmem_cache_zalloc(btrfs_path_cachep, GFP_NOFS);
51 if (path)
52 path->reada = 1;
53 return path; 51 return path;
54} 52}
55 53
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 96be62450318..1ba2cc58eab5 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -347,7 +347,7 @@ static int caching_kthread(void *data)
347 */ 347 */
348 path->skip_locking = 1; 348 path->skip_locking = 1;
349 path->search_commit_root = 1; 349 path->search_commit_root = 1;
350 path->reada = 2; 350 path->reada = 1;
351 351
352 key.objectid = last; 352 key.objectid = last;
353 key.offset = 0; 353 key.offset = 0;
@@ -8556,6 +8556,7 @@ int btrfs_read_block_groups(struct btrfs_root *root)
8556 path = btrfs_alloc_path(); 8556 path = btrfs_alloc_path();
8557 if (!path) 8557 if (!path)
8558 return -ENOMEM; 8558 return -ENOMEM;
8559 path->reada = 1;
8559 8560
8560 cache_gen = btrfs_super_cache_generation(&root->fs_info->super_copy); 8561 cache_gen = btrfs_super_cache_generation(&root->fs_info->super_copy);
8561 if (cache_gen != 0 && 8562 if (cache_gen != 0 &&
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index dd5938a7de21..6228a304b547 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -4242,7 +4242,9 @@ static int btrfs_real_readdir(struct file *filp, void *dirent,
4242 filp->f_pos = 2; 4242 filp->f_pos = 2;
4243 } 4243 }
4244 path = btrfs_alloc_path(); 4244 path = btrfs_alloc_path();
4245 path->reada = 2; 4245 if (!path)
4246 return -ENOMEM;
4247 path->reada = 1;
4246 4248
4247 btrfs_set_key_type(&key, key_type); 4249 btrfs_set_key_type(&key, key_type);
4248 key.offset = filp->f_pos; 4250 key.offset = filp->f_pos;
@@ -5043,7 +5045,15 @@ again:
5043 5045
5044 if (!path) { 5046 if (!path) {
5045 path = btrfs_alloc_path(); 5047 path = btrfs_alloc_path();
5046 BUG_ON(!path); 5048 if (!path) {
5049 err = -ENOMEM;
5050 goto out;
5051 }
5052 /*
5053 * Chances are we'll be called again, so go ahead and do
5054 * readahead
5055 */
5056 path->reada = 1;
5047 } 5057 }
5048 5058
5049 ret = btrfs_lookup_file_extent(trans, root, path, 5059 ret = btrfs_lookup_file_extent(trans, root, path,
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index 09c30d37d43e..5872b41581f4 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -676,6 +676,8 @@ struct backref_node *build_backref_tree(struct reloc_control *rc,
676 err = -ENOMEM; 676 err = -ENOMEM;
677 goto out; 677 goto out;
678 } 678 }
679 path1->reada = 1;
680 path2->reada = 2;
679 681
680 node = alloc_backref_node(cache); 682 node = alloc_backref_node(cache);
681 if (!node) { 683 if (!node) {
@@ -1996,6 +1998,7 @@ static noinline_for_stack int merge_reloc_root(struct reloc_control *rc,
1996 path = btrfs_alloc_path(); 1998 path = btrfs_alloc_path();
1997 if (!path) 1999 if (!path)
1998 return -ENOMEM; 2000 return -ENOMEM;
2001 path->reada = 1;
1999 2002
2000 reloc_root = root->reloc_root; 2003 reloc_root = root->reloc_root;
2001 root_item = &reloc_root->root_item; 2004 root_item = &reloc_root->root_item;
@@ -3297,6 +3300,7 @@ static int find_data_references(struct reloc_control *rc,
3297 path = btrfs_alloc_path(); 3300 path = btrfs_alloc_path();
3298 if (!path) 3301 if (!path)
3299 return -ENOMEM; 3302 return -ENOMEM;
3303 path->reada = 1;
3300 3304
3301 root = read_fs_root(rc->extent_root->fs_info, ref_root); 3305 root = read_fs_root(rc->extent_root->fs_info, ref_root);
3302 if (IS_ERR(root)) { 3306 if (IS_ERR(root)) {
@@ -3665,6 +3669,7 @@ static noinline_for_stack int relocate_block_group(struct reloc_control *rc)
3665 path = btrfs_alloc_path(); 3669 path = btrfs_alloc_path();
3666 if (!path) 3670 if (!path)
3667 return -ENOMEM; 3671 return -ENOMEM;
3672 path->reada = 1;
3668 3673
3669 ret = prepare_to_relocate(rc); 3674 ret = prepare_to_relocate(rc);
3670 if (ret) { 3675 if (ret) {
@@ -4090,6 +4095,7 @@ int btrfs_recover_relocation(struct btrfs_root *root)
4090 path = btrfs_alloc_path(); 4095 path = btrfs_alloc_path();
4091 if (!path) 4096 if (!path)
4092 return -ENOMEM; 4097 return -ENOMEM;
4098 path->reada = -1;
4093 4099
4094 key.objectid = BTRFS_TREE_RELOC_OBJECTID; 4100 key.objectid = BTRFS_TREE_RELOC_OBJECTID;
4095 key.type = BTRFS_ROOT_ITEM_KEY; 4101 key.type = BTRFS_ROOT_ITEM_KEY;