]> www.infradead.org Git - users/hch/misc.git/commitdiff
btrfs: avoid path allocations when dropping extents during log replay
authorFilipe Manana <fdmanana@suse.com>
Mon, 1 Sep 2025 14:51:19 +0000 (15:51 +0100)
committerDavid Sterba <dsterba@suse.com>
Tue, 23 Sep 2025 06:49:20 +0000 (08:49 +0200)
We can avoid a path allocation in the btrfs_drop_extents() calls we have
at replay_one_extent() and replay_one_buffer() by passing the path we
already have in those contextes as it's unused by the time they call
btrfs_drop_extents().

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/tree-log.c

index 5754333ae732df78eaa30618af780faa0905b77f..a912ccdf14855c3b527125bbf0c4f0c533b38dfb 100644 (file)
@@ -738,6 +738,7 @@ static noinline int replay_one_extent(struct walk_control *wc, struct btrfs_path
        drop_args.start = start;
        drop_args.end = extent_end;
        drop_args.drop_cache = true;
+       drop_args.path = path;
        ret = btrfs_drop_extents(trans, root, inode, &drop_args);
        if (ret) {
                btrfs_abort_transaction(trans, ret);
@@ -2676,6 +2677,7 @@ static int replay_one_buffer(struct extent_buffer *eb,
                                drop_args.start = from;
                                drop_args.end = (u64)-1;
                                drop_args.drop_cache = true;
+                               drop_args.path = path;
                                ret = btrfs_drop_extents(trans, root, inode,  &drop_args);
                                if (ret) {
                                        btrfs_abort_transaction(trans, ret);