Skip to content

Commit

Permalink
btrfs: remove roots ulist when checking data extent sharedness
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: David Sterba <[email protected]>
  • Loading branch information
fdmanana authored and kdave committed Dec 5, 2022
1 parent 84a7949 commit b629685
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 6 deletions.
6 changes: 1 addition & 5 deletions fs/btrfs/backref.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand All @@ -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);
}

Expand Down Expand Up @@ -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);
Expand All @@ -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;
Expand Down Expand Up @@ -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;
}
Expand Down
1 change: 0 additions & 1 deletion fs/btrfs/backref.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit b629685

Please sign in to comment.