From: Jiasheng Jiang Date: Wed, 14 Jan 2026 14:44:50 +0000 (+0000) Subject: btrfs: zoned: remove redundant space_info lock and variable in do_allocation_zoned() X-Git-Tag: v7.1-rc1~231^2~111 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=08ef56661f69d40081ef782cd6a162bb0777af74;p=thirdparty%2Fkernel%2Flinux.git btrfs: zoned: remove redundant space_info lock and variable in do_allocation_zoned() In do_allocation_zoned(), the code acquires space_info->lock before block_group->lock. However, the critical section does not access or modify any members of the space_info structure. Thus, the lock is redundant as it provides no necessary synchronization here. This change simplifies the locking logic and aligns the function with other zoned paths, such as __btrfs_add_free_space_zoned(), which only rely on block_group->lock. Since the 'space_info' local variable is no longer used after removing the lock calls, it is also removed. Removing this unnecessary lock reduces contention on the global space_info lock, improving concurrency in the zoned allocation path. Reviewed-by: Boris Burkov Reviewed-by: Johannes Thumshirn Reviewed-by: Naohiro Aota Signed-off-by: Jiasheng Jiang Reviewed-by: David Sterba Signed-off-by: David Sterba --- diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 098e64106d022..c341b97d54e9f 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -4013,9 +4013,8 @@ static int do_allocation_clustered(struct btrfs_block_group *block_group, * Lock nesting * ============ * - * space_info::lock - * block_group::lock - * fs_info::treelog_bg_lock + * block_group::lock + * fs_info::treelog_bg_lock */ /* @@ -4028,7 +4027,6 @@ static int do_allocation_zoned(struct btrfs_block_group *block_group, struct btrfs_block_group **bg_ret) { struct btrfs_fs_info *fs_info = block_group->fs_info; - struct btrfs_space_info *space_info = block_group->space_info; struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl; u64 start = block_group->start; u64 num_bytes = ffe_ctl->num_bytes; @@ -4089,7 +4087,6 @@ static int do_allocation_zoned(struct btrfs_block_group *block_group, */ } - spin_lock(&space_info->lock); spin_lock(&block_group->lock); spin_lock(&fs_info->treelog_bg_lock); spin_lock(&fs_info->relocation_bg_lock); @@ -4191,7 +4188,6 @@ out: spin_unlock(&fs_info->relocation_bg_lock); spin_unlock(&fs_info->treelog_bg_lock); spin_unlock(&block_group->lock); - spin_unlock(&space_info->lock); return ret; }