From: Chris Mason Date: Wed, 27 Jul 2011 19:57:44 +0000 (-0400) Subject: Btrfs: make sure reserve_metadata_bytes doesn't leak out strange errors X-Git-Tag: upstream/snapshot3+hdmi~8981^2~56^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=75c195a2cac2c3c8366c0b87de2d6814c4f4d638;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git 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: Chris Mason --- diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 06a5ee2..4d08ed7 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -3474,6 +3474,8 @@ again: 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 @@ again: 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;