summary refs log tree commit diff
path: root/fs/btrfs/backref.h
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.com>2019-05-15 15:31:04 +0200
committerDavid Sterba <dsterba@suse.com>2019-07-01 13:34:53 +0200
commit5911c8fe05c54c9f74a6467650e6493e4808cd01 (patch)
tree039d2c9ea71a7d7f74d7a1ba483e8bf989d8737a /fs/btrfs/backref.h
parent9b4e675a9978800995f83af0ed90e890ca501f31 (diff)
downloadlinux-5911c8fe05c54c9f74a6467650e6493e4808cd01.tar.gz
btrfs: fiemap: preallocate ulists for btrfs_check_shared
btrfs_check_shared looks up parents of a given extent and uses ulists
for that. These are allocated and freed repeatedly. Preallocation in the
caller will avoid the overhead and also allow us to use the GFP_KERNEL
as it is happens before the extent locks are taken.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/backref.h')
-rw-r--r--fs/btrfs/backref.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/btrfs/backref.h b/fs/btrfs/backref.h
index 54d58988483a..777f61dc081e 100644
--- a/fs/btrfs/backref.h
+++ b/fs/btrfs/backref.h
@@ -57,7 +57,8 @@ int btrfs_find_one_extref(struct btrfs_root *root, u64 inode_objectid,
 			  u64 start_off, struct btrfs_path *path,
 			  struct btrfs_inode_extref **ret_extref,
 			  u64 *found_off);
-int btrfs_check_shared(struct btrfs_root *root, u64 inum, u64 bytenr);
+int btrfs_check_shared(struct btrfs_root *root, u64 inum, u64 bytenr,
+		struct ulist *roots, struct ulist *tmp_ulist);
 
 int __init btrfs_prelim_ref_init(void);
 void __cold btrfs_prelim_ref_exit(void);