diff options
| author | Filipe Manana <fdmanana@suse.com> | 2025-10-20 14:39:52 +0300 |
|---|---|---|
| committer | David Sterba <dsterba@suse.com> | 2025-11-25 00:13:25 +0300 |
| commit | f7a32dd2a616c333cff2d6fb7e3d854ec8d3ae41 (patch) | |
| tree | fde658432fb449c3f60cad6aefe4ab4474217d6a | |
| parent | b70c32f10a049a6e7c7c718d6ce69554af1e9b3c (diff) | |
| download | linux-f7a32dd2a616c333cff2d6fb7e3d854ec8d3ae41.tar.xz | |
btrfs: reduce space_info critical section in btrfs_chunk_alloc()
There's no need to update local variables while holding the space_info's
spinlock, since the update isn't using anything from the space_info. So
move these updates outside the critical section to shorten it.
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
| -rw-r--r-- | fs/btrfs/block-group.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c index ec1e4fc0cd51..ebd4c514c2c8 100644 --- a/fs/btrfs/block-group.c +++ b/fs/btrfs/block-group.c @@ -4191,11 +4191,11 @@ int btrfs_chunk_alloc(struct btrfs_trans_handle *trans, should_alloc = should_alloc_chunk(fs_info, space_info, force); if (space_info->full) { /* No more free physical space */ + spin_unlock(&space_info->lock); if (should_alloc) ret = -ENOSPC; else ret = 0; - spin_unlock(&space_info->lock); return ret; } else if (!should_alloc) { spin_unlock(&space_info->lock); @@ -4207,16 +4207,16 @@ int btrfs_chunk_alloc(struct btrfs_trans_handle *trans, * recheck if we should continue with our allocation * attempt. */ + spin_unlock(&space_info->lock); wait_for_alloc = true; force = CHUNK_ALLOC_NO_FORCE; - spin_unlock(&space_info->lock); mutex_lock(&fs_info->chunk_mutex); mutex_unlock(&fs_info->chunk_mutex); } else { /* Proceed with allocation */ space_info->chunk_alloc = true; - wait_for_alloc = false; spin_unlock(&space_info->lock); + wait_for_alloc = false; } cond_resched(); |
