mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 03:10:12 +00:00
Btrfs: fix a bug on overcommit stuff
When overcommitting, we should check the sum of pinned space and bytes for delayed item. Signed-off-by: Liu Bo <liubo2009@cn.fujitsu.com>
This commit is contained in:
parent
9d47c7671d
commit
d9b0218f6c
1 changed files with 4 additions and 1 deletions
|
@ -3611,12 +3611,15 @@ static int may_commit_transaction(struct btrfs_root *root,
|
|||
if (space_info != delayed_rsv->space_info)
|
||||
return -ENOSPC;
|
||||
|
||||
spin_lock(&space_info->lock);
|
||||
spin_lock(&delayed_rsv->lock);
|
||||
if (delayed_rsv->size < bytes) {
|
||||
if (space_info->bytes_pinned + delayed_rsv->size < bytes) {
|
||||
spin_unlock(&delayed_rsv->lock);
|
||||
spin_unlock(&space_info->lock);
|
||||
return -ENOSPC;
|
||||
}
|
||||
spin_unlock(&delayed_rsv->lock);
|
||||
spin_unlock(&space_info->lock);
|
||||
|
||||
commit:
|
||||
trans = btrfs_join_transaction(root);
|
||||
|
|
Loading…
Reference in a new issue