Commit 13553e52 authored by Josef Bacik's avatar Josef Bacik

Btrfs: don't try to commit in btrfs_block_rsv_check

We will try and reserve metadata bytes in btrfs_block_rsv_check and if we cannot
because we have a transaction open it will return EAGAIN, so we do not need to
try and commit the transaction again.
Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
parent dabdb640
...@@ -3708,7 +3708,6 @@ int btrfs_block_rsv_check(struct btrfs_trans_handle *trans, ...@@ -3708,7 +3708,6 @@ int btrfs_block_rsv_check(struct btrfs_trans_handle *trans,
u64 min_reserved, int min_factor) u64 min_reserved, int min_factor)
{ {
u64 num_bytes = 0; u64 num_bytes = 0;
int commit_trans = 0;
int ret = -ENOSPC; int ret = -ENOSPC;
if (!block_rsv) if (!block_rsv)
...@@ -3720,13 +3719,12 @@ int btrfs_block_rsv_check(struct btrfs_trans_handle *trans, ...@@ -3720,13 +3719,12 @@ int btrfs_block_rsv_check(struct btrfs_trans_handle *trans,
if (min_reserved > num_bytes) if (min_reserved > num_bytes)
num_bytes = min_reserved; num_bytes = min_reserved;
if (block_rsv->reserved >= num_bytes) { if (block_rsv->reserved >= num_bytes)
ret = 0; ret = 0;
} else { else
num_bytes -= block_rsv->reserved; num_bytes -= block_rsv->reserved;
commit_trans = 1;
}
spin_unlock(&block_rsv->lock); spin_unlock(&block_rsv->lock);
if (!ret) if (!ret)
return 0; return 0;
...@@ -3736,26 +3734,7 @@ int btrfs_block_rsv_check(struct btrfs_trans_handle *trans, ...@@ -3736,26 +3734,7 @@ int btrfs_block_rsv_check(struct btrfs_trans_handle *trans,
return 0; return 0;
} }
if (commit_trans) { return ret;
struct btrfs_space_info *sinfo = block_rsv->space_info;
if (trans)
return -EAGAIN;
spin_lock(&sinfo->lock);
if (sinfo->bytes_pinned < num_bytes) {
spin_unlock(&sinfo->lock);
return -ENOSPC;
}
spin_unlock(&sinfo->lock);
trans = btrfs_join_transaction(root);
BUG_ON(IS_ERR(trans));
ret = btrfs_commit_transaction(trans, root);
return 0;
}
return -ENOSPC;
} }
int btrfs_block_rsv_migrate(struct btrfs_block_rsv *src_rsv, int btrfs_block_rsv_migrate(struct btrfs_block_rsv *src_rsv,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment