mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-13 23:21:09 -05:00
btrfs: remove roots ulist when checking data extent sharedness
Currently btrfs_is_data_extent_shared() is passing a ulist for the roots argument of find_parent_nodes(), however it does not use that ulist for anything and for this context that list always ends up with at most one element. Since find_parent_nodes() is able to deal with a NULL ulist for its roots argument, make btrfs_is_data_extent_shared() pass it NULL and avoid the burden of allocating memory for the unnused roots ulist, initializing it, releasing it and allocating one struct ulist_node for it during the call to find_parent_nodes(). Signed-off-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
committed by
David Sterba
parent
84a7949d40
commit
b629685803
@@ -1664,7 +1664,6 @@ struct btrfs_backref_share_check_ctx *btrfs_alloc_backref_share_check_ctx(void)
|
||||
return NULL;
|
||||
|
||||
ulist_init(&ctx->refs);
|
||||
ulist_init(&ctx->roots);
|
||||
|
||||
return ctx;
|
||||
}
|
||||
@@ -1675,7 +1674,6 @@ void btrfs_free_backref_share_ctx(struct btrfs_backref_share_check_ctx *ctx)
|
||||
return;
|
||||
|
||||
ulist_release(&ctx->refs);
|
||||
ulist_release(&ctx->roots);
|
||||
kfree(ctx);
|
||||
}
|
||||
|
||||
@@ -1718,7 +1716,6 @@ int btrfs_is_data_extent_shared(struct btrfs_inode *inode, u64 bytenr,
|
||||
};
|
||||
int level;
|
||||
|
||||
ulist_init(&ctx->roots);
|
||||
ulist_init(&ctx->refs);
|
||||
|
||||
trans = btrfs_join_transaction_nostart(root);
|
||||
@@ -1742,7 +1739,7 @@ int btrfs_is_data_extent_shared(struct btrfs_inode *inode, u64 bytenr,
|
||||
bool cached;
|
||||
|
||||
ret = find_parent_nodes(trans, fs_info, bytenr, elem.seq, &ctx->refs,
|
||||
&ctx->roots, NULL, &shared, false);
|
||||
NULL, NULL, &shared, false);
|
||||
if (ret == BACKREF_FOUND_SHARED) {
|
||||
/* this is the only condition under which we return 1 */
|
||||
ret = 1;
|
||||
@@ -1810,7 +1807,6 @@ int btrfs_is_data_extent_shared(struct btrfs_inode *inode, u64 bytenr,
|
||||
up_read(&fs_info->commit_root_sem);
|
||||
}
|
||||
out:
|
||||
ulist_release(&ctx->roots);
|
||||
ulist_release(&ctx->refs);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ struct btrfs_backref_shared_cache_entry {
|
||||
struct btrfs_backref_share_check_ctx {
|
||||
/* Ulists used during backref walking. */
|
||||
struct ulist refs;
|
||||
struct ulist roots;
|
||||
/*
|
||||
* A path from a root to a leaf that has a file extent item pointing to
|
||||
* a given data extent should never exceed the maximum b+tree height.
|
||||
|
||||
Reference in New Issue
Block a user