]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
btrfs: use iget5_locked_rcu
authorMateusz Guzik <mjguzik@gmail.com>
Tue, 11 Jun 2024 17:38:23 +0000 (19:38 +0200)
committerChristian Brauner <brauner@kernel.org>
Wed, 12 Jun 2024 12:10:00 +0000 (14:10 +0200)
With 20 threads each walking a dedicated 1000 dirs * 1000 files
directory tree to stat(2) on a 32 core + 24GB ram vm:

before: 3.54s user 892.30s system 1966% cpu 45.549 total
after:  3.28s user 738.66s system 1955% cpu 37.932 total (-16.7%)

Benchmark can be found here: https://people.freebsd.org/~mjg/fstree.tgz

Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Mateusz Guzik <mjguzik@gmail.com>
Link: https://lore.kernel.org/r/20240611173824.535995-3-mjguzik@gmail.com
Acked-by: David Sterba <dsterba@suse.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/btrfs/inode.c

index 753db965f7c042007be2f1cd7fa90fd8afc4e6da..cbb2c92b6c084df01d058dcdd8971b23494b68a3 100644 (file)
@@ -5587,7 +5587,7 @@ static struct inode *btrfs_iget_locked(struct super_block *s, u64 ino,
        args.ino = ino;
        args.root = root;
 
-       inode = iget5_locked(s, hashval, btrfs_find_actor,
+       inode = iget5_locked_rcu(s, hashval, btrfs_find_actor,
                             btrfs_init_locked_inode,
                             (void *)&args);
        return inode;