Btrfs: send, avoid unnecessary inode item lookup in the btree
PATCH 1/1 Btrfs: send, avoid unnecessary inode item lookup in the btree
Regardless of whether the caller is interested or not in knowing the inode's generation (dir_gen != NULL), get_first_ref always does a btree lookup to get the inode item. Avoid this useless lookup if dir_gen parameter is NULL (which is in some cases).
Signed-off-by Filipe David Borba Manana <[email protected]>
--- fs/btrfs/send.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
fs/btrfs/send.c +7 -6
@@ -1667,10 +1667,12 @@ static int get_first_ref(struct btrfs_root *root, u64 ino, goto out;btrfs_release_path (path); - ret =get_inode_info (root, parent_dir,NULL , dir_gen,NULL ,NULL , -NULL ,NULL ); -if (ret <0 ) - goto out; +if (dir_gen) { + ret =get_inode_info (root, parent_dir,NULL , dir_gen,NULL , +NULL ,NULL ,NULL ); +if (ret <0 ) + goto out; + } *dir = parent_dir;
@@ -1686,13 +1688,12 @@ static int is_first_ref(struct btrfs_root *root,int ret;struct fs_path *tmp_name;u64 tmp_dir; -u64 tmp_dir_gen; tmp_name =fs_path_alloc ();if (!tmp_name)return -ENOMEM ; - ret =get_first_ref (root, ino, &tmp_dir, &tmp_dir_gen, tmp_name); + ret =get_first_ref (root, ino, &tmp_dir,NULL , tmp_name);if (ret <0 ) goto out;
Signature · 1 line
1.7.10.4