diff --git a/[refs] b/[refs] index 2d314998407d..1876fe83cfa2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2cf8572dac62cc2ff7e995173e95b6c694401b3f +refs/heads/master: 75c195a2cac2c3c8366c0b87de2d6814c4f4d638 diff --git a/trunk/fs/btrfs/extent-tree.c b/trunk/fs/btrfs/extent-tree.c index 06a5ee29b446..4d08ed79405d 100644 --- a/trunk/fs/btrfs/extent-tree.c +++ b/trunk/fs/btrfs/extent-tree.c @@ -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;