Message ID | 6a421fc3d13c9a6520e7e5c041ddb199116c91e6.1713052088.git.josef@toxicpanda.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | btrfs: delayed refs cleanups | expand |
On Sun, Apr 14, 2024 at 12:54 AM Josef Bacik <josef@toxicpanda.com> wrote: > > We have all the information we need in our btrfs_delayed_ref_node, which > we already pass into __btrfs_free_extent. Drop the extra arguments and > just extract the values from btrfs_delayed_ref_node. > > Signed-off-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: Filipe Manana <fdmanana@suse.com> Looks good, thanks. > --- > fs/btrfs/extent-tree.c | 23 ++++++++--------------- > 1 file changed, 8 insertions(+), 15 deletions(-) > > diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c > index 6a8108e151d7..540dadcefb92 100644 > --- a/fs/btrfs/extent-tree.c > +++ b/fs/btrfs/extent-tree.c > @@ -46,9 +46,7 @@ > > static int __btrfs_free_extent(struct btrfs_trans_handle *trans, > struct btrfs_delayed_ref_head *href, > - struct btrfs_delayed_ref_node *node, u64 parent, > - u64 root_objectid, u64 owner_objectid, > - u64 owner_offset, > + struct btrfs_delayed_ref_node *node, > struct btrfs_delayed_extent_op *extra_op); > static void __run_delayed_extent_op(struct btrfs_delayed_extent_op *extent_op, > struct extent_buffer *leaf, > @@ -1586,9 +1584,7 @@ static int run_delayed_data_ref(struct btrfs_trans_handle *trans, > } else if (node->action == BTRFS_ADD_DELAYED_REF) { > ret = __btrfs_inc_extent_ref(trans, node, extent_op); > } else if (node->action == BTRFS_DROP_DELAYED_REF) { > - ret = __btrfs_free_extent(trans, href, node, parent, > - node->ref_root, ref->objectid, > - ref->offset, extent_op); > + ret = __btrfs_free_extent(trans, href, node, extent_op); > } else { > BUG(); > } > @@ -1710,11 +1706,9 @@ static int run_delayed_tree_ref(struct btrfs_trans_handle *trans, > { > int ret = 0; > struct btrfs_fs_info *fs_info = trans->fs_info; > - struct btrfs_delayed_tree_ref *ref; > u64 parent = 0; > u64 ref_root = 0; > > - ref = btrfs_delayed_node_to_tree_ref(node); > trace_run_delayed_tree_ref(trans->fs_info, node); > > if (node->type == BTRFS_SHARED_BLOCK_REF_KEY) > @@ -1744,8 +1738,7 @@ static int run_delayed_tree_ref(struct btrfs_trans_handle *trans, > } else if (node->action == BTRFS_ADD_DELAYED_REF) { > ret = __btrfs_inc_extent_ref(trans, node, extent_op); > } else if (node->action == BTRFS_DROP_DELAYED_REF) { > - ret = __btrfs_free_extent(trans, href, node, parent, ref_root, > - ref->level, 0, extent_op); > + ret = __btrfs_free_extent(trans, href, node, extent_op); > } else { > BUG(); > } > @@ -3077,9 +3070,7 @@ static int do_free_extent_accounting(struct btrfs_trans_handle *trans, > */ > static int __btrfs_free_extent(struct btrfs_trans_handle *trans, > struct btrfs_delayed_ref_head *href, > - struct btrfs_delayed_ref_node *node, u64 parent, > - u64 root_objectid, u64 owner_objectid, > - u64 owner_offset, > + struct btrfs_delayed_ref_node *node, > struct btrfs_delayed_extent_op *extent_op) > { > struct btrfs_fs_info *info = trans->fs_info; > @@ -3099,6 +3090,8 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans, > u64 refs; > u64 bytenr = node->bytenr; > u64 num_bytes = node->num_bytes; > + u64 owner_objectid = btrfs_delayed_ref_owner(node); > + u64 owner_offset = btrfs_delayed_ref_offset(node); > bool skinny_metadata = btrfs_fs_incompat(info, SKINNY_METADATA); > u64 delayed_ref_root = href->owning_root; > > @@ -3124,7 +3117,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans, > skinny_metadata = false; > > ret = lookup_extent_backref(trans, path, &iref, bytenr, num_bytes, > - parent, root_objectid, owner_objectid, > + node->parent, node->ref_root, owner_objectid, > owner_offset); > if (ret == 0) { > /* > @@ -3226,7 +3219,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans, > } else if (WARN_ON(ret == -ENOENT)) { > abort_and_dump(trans, path, > "unable to find ref byte nr %llu parent %llu root %llu owner %llu offset %llu slot %d", > - bytenr, parent, root_objectid, owner_objectid, > + bytenr, node->parent, node->ref_root, owner_objectid, > owner_offset, path->slots[0]); > goto out; > } else { > -- > 2.43.0 > >
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 6a8108e151d7..540dadcefb92 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -46,9 +46,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans, struct btrfs_delayed_ref_head *href, - struct btrfs_delayed_ref_node *node, u64 parent, - u64 root_objectid, u64 owner_objectid, - u64 owner_offset, + struct btrfs_delayed_ref_node *node, struct btrfs_delayed_extent_op *extra_op); static void __run_delayed_extent_op(struct btrfs_delayed_extent_op *extent_op, struct extent_buffer *leaf, @@ -1586,9 +1584,7 @@ static int run_delayed_data_ref(struct btrfs_trans_handle *trans, } else if (node->action == BTRFS_ADD_DELAYED_REF) { ret = __btrfs_inc_extent_ref(trans, node, extent_op); } else if (node->action == BTRFS_DROP_DELAYED_REF) { - ret = __btrfs_free_extent(trans, href, node, parent, - node->ref_root, ref->objectid, - ref->offset, extent_op); + ret = __btrfs_free_extent(trans, href, node, extent_op); } else { BUG(); } @@ -1710,11 +1706,9 @@ static int run_delayed_tree_ref(struct btrfs_trans_handle *trans, { int ret = 0; struct btrfs_fs_info *fs_info = trans->fs_info; - struct btrfs_delayed_tree_ref *ref; u64 parent = 0; u64 ref_root = 0; - ref = btrfs_delayed_node_to_tree_ref(node); trace_run_delayed_tree_ref(trans->fs_info, node); if (node->type == BTRFS_SHARED_BLOCK_REF_KEY) @@ -1744,8 +1738,7 @@ static int run_delayed_tree_ref(struct btrfs_trans_handle *trans, } else if (node->action == BTRFS_ADD_DELAYED_REF) { ret = __btrfs_inc_extent_ref(trans, node, extent_op); } else if (node->action == BTRFS_DROP_DELAYED_REF) { - ret = __btrfs_free_extent(trans, href, node, parent, ref_root, - ref->level, 0, extent_op); + ret = __btrfs_free_extent(trans, href, node, extent_op); } else { BUG(); } @@ -3077,9 +3070,7 @@ static int do_free_extent_accounting(struct btrfs_trans_handle *trans, */ static int __btrfs_free_extent(struct btrfs_trans_handle *trans, struct btrfs_delayed_ref_head *href, - struct btrfs_delayed_ref_node *node, u64 parent, - u64 root_objectid, u64 owner_objectid, - u64 owner_offset, + struct btrfs_delayed_ref_node *node, struct btrfs_delayed_extent_op *extent_op) { struct btrfs_fs_info *info = trans->fs_info; @@ -3099,6 +3090,8 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans, u64 refs; u64 bytenr = node->bytenr; u64 num_bytes = node->num_bytes; + u64 owner_objectid = btrfs_delayed_ref_owner(node); + u64 owner_offset = btrfs_delayed_ref_offset(node); bool skinny_metadata = btrfs_fs_incompat(info, SKINNY_METADATA); u64 delayed_ref_root = href->owning_root; @@ -3124,7 +3117,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans, skinny_metadata = false; ret = lookup_extent_backref(trans, path, &iref, bytenr, num_bytes, - parent, root_objectid, owner_objectid, + node->parent, node->ref_root, owner_objectid, owner_offset); if (ret == 0) { /* @@ -3226,7 +3219,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans, } else if (WARN_ON(ret == -ENOENT)) { abort_and_dump(trans, path, "unable to find ref byte nr %llu parent %llu root %llu owner %llu offset %llu slot %d", - bytenr, parent, root_objectid, owner_objectid, + bytenr, node->parent, node->ref_root, owner_objectid, owner_offset, path->slots[0]); goto out; } else {
We have all the information we need in our btrfs_delayed_ref_node, which we already pass into __btrfs_free_extent. Drop the extra arguments and just extract the values from btrfs_delayed_ref_node. Signed-off-by: Josef Bacik <josef@toxicpanda.com> --- fs/btrfs/extent-tree.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-)