提交 75c195a2 编写于 作者: C Chris Mason

Btrfs: make sure reserve_metadata_bytes doesn't leak out strange errors

The btrfs transaction code will return any errors that come from
reserve_metadata_bytes.  We need to make sure we don't return funny
things like 1 or EAGAIN.
Signed-off-by: NChris Mason <chris.mason@oracle.com>
上级 2cf8572d
......@@ -3474,6 +3474,8 @@ static int reserve_metadata_bytes(struct btrfs_trans_handle *trans,
if (ret < 0)
goto out;
ret = 0;
/*
* So if we were overcommitted it's possible that somebody else flushed
* out enough space and we simply didn't have enough space to reclaim,
......@@ -3496,10 +3498,13 @@ static int reserve_metadata_bytes(struct btrfs_trans_handle *trans,
goto out;
ret = -EAGAIN;
if (trans || committed)
if (trans)
goto out;
ret = -ENOSPC;
if (committed)
goto out;
trans = btrfs_join_transaction(root);
if (IS_ERR(trans))
goto out;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册