summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/ctree.h
diff options
context:
space:
mode:
authorFilipe Manana <fdmanana@suse.com>2024-05-06 13:27:29 +0100
committerDavid Sterba <dsterba@suse.com>2024-07-11 15:33:17 +0200
commite2844cce75c9e61a27dcc29f0773afe970cde296 (patch)
tree7fa42f9d311b06f1015b5f4550d1f1f4b3e429ef /fs/btrfs/ctree.h
parentd25f4ec17624b1b18ff2e0a3e9c2baa71c8a86f2 (diff)
downloadlinux-stable-e2844cce75c9e61a27dcc29f0773afe970cde296.tar.gz
linux-stable-e2844cce75c9e61a27dcc29f0773afe970cde296.tar.bz2
linux-stable-e2844cce75c9e61a27dcc29f0773afe970cde296.zip
btrfs: remove inode_lock from struct btrfs_root and use xarray locks
Currently we use the spinlock inode_lock from struct btrfs_root to serialize access to two different data structures: 1) The delayed inodes xarray (struct btrfs_root::delayed_nodes); 2) The inodes xarray (struct btrfs_root::inodes). Instead of using our own lock, we can use the spinlock that is part of the xarray implementation, by using the xa_lock() and xa_unlock() APIs and using the xarray APIs with the double underscore prefix that don't take the xarray locks and assume the caller is using xa_lock() and xa_unlock(). So remove the spinlock inode_lock from struct btrfs_root and use the corresponding xarray locks. This brings 2 benefits: 1) We reduce the size of struct btrfs_root, from 1336 bytes down to 1328 bytes on a 64 bits release kernel config; 2) We reduce lock contention by not using anymore the same lock for changing two different and unrelated xarrays. Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: Filipe Manana <fdmanana@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/ctree.h')
-rw-r--r--fs/btrfs/ctree.h1
1 files changed, 0 insertions, 1 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index aa2568f86dc9..1004cb934b4a 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -221,7 +221,6 @@ struct btrfs_root {
struct list_head root_list;
- spinlock_t inode_lock;
/*
* Xarray that keeps track of in-memory inodes, protected by the lock
* @inode_lock.