mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 16:44:58 +02:00
btrfs: reduce block group critical section in pin_down_extent()
There's no need to update the bytes_reserved and bytes_may_use fields of the space_info while holding the block group's spinlock. We are only making the critical section longer than necessary. So move the space_info updates outside of the block group's critical section. Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
c0d0b13d27
commit
585416766d
|
|
@ -2594,15 +2594,15 @@ static int pin_down_extent(struct btrfs_trans_handle *trans,
|
|||
struct btrfs_block_group *cache,
|
||||
u64 bytenr, u64 num_bytes, int reserved)
|
||||
{
|
||||
const u64 reserved_bytes = (reserved ? num_bytes : 0);
|
||||
|
||||
spin_lock(&cache->space_info->lock);
|
||||
spin_lock(&cache->lock);
|
||||
cache->pinned += num_bytes;
|
||||
btrfs_space_info_update_bytes_pinned(cache->space_info, num_bytes);
|
||||
if (reserved) {
|
||||
cache->reserved -= num_bytes;
|
||||
cache->space_info->bytes_reserved -= num_bytes;
|
||||
}
|
||||
cache->reserved -= reserved_bytes;
|
||||
spin_unlock(&cache->lock);
|
||||
cache->space_info->bytes_reserved -= reserved_bytes;
|
||||
btrfs_space_info_update_bytes_pinned(cache->space_info, num_bytes);
|
||||
spin_unlock(&cache->space_info->lock);
|
||||
|
||||
btrfs_set_extent_bit(&trans->transaction->pinned_extents, bytenr,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user