]> www.infradead.org Git - users/hch/misc.git/commitdiff
btrfs: avoid unnecessary path allocation at fixup_inode_link_count()
authorFilipe Manana <fdmanana@suse.com>
Mon, 1 Sep 2025 11:43:42 +0000 (12:43 +0100)
committerDavid Sterba <dsterba@suse.com>
Tue, 23 Sep 2025 06:49:20 +0000 (08:49 +0200)
There's no need to allocate a path as our single caller already has a
path that we can use. So pass the caller's path and use it.

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 b4e901da9e8ba0e2e19c9b854fc4ffe3f597b25f..5754333ae732df78eaa30618af780faa0905b77f 100644 (file)
@@ -1728,19 +1728,15 @@ process_slot:
  * will free the inode.
  */
 static noinline int fixup_inode_link_count(struct walk_control *wc,
+                                          struct btrfs_path *path,
                                           struct btrfs_inode *inode)
 {
        struct btrfs_trans_handle *trans = wc->trans;
        struct btrfs_root *root = inode->root;
-       struct btrfs_path *path;
        int ret;
        u64 nlink = 0;
        const u64 ino = btrfs_ino(inode);
 
-       path = btrfs_alloc_path();
-       if (!path)
-               return -ENOMEM;
-
        ret = count_inode_refs(inode, path);
        if (ret < 0)
                goto out;
@@ -1776,7 +1772,7 @@ static noinline int fixup_inode_link_count(struct walk_control *wc,
        }
 
 out:
-       btrfs_free_path(path);
+       btrfs_release_path(path);
        return ret;
 }
 
@@ -1821,7 +1817,7 @@ static noinline int fixup_inode_link_counts(struct walk_control *wc,
                        break;
                }
 
-               ret = fixup_inode_link_count(wc, inode);
+               ret = fixup_inode_link_count(wc, path, inode);
                iput(&inode->vfs_inode);
                if (ret)
                        break;