btrfs: fix insert_reserved error handling
authorJosef Bacik <josef@toxicpanda.com>
Thu, 11 Oct 2018 19:54:22 +0000 (15:54 -0400)
committerDavid Sterba <dsterba@suse.com>
Fri, 19 Oct 2018 10:20:03 +0000 (12:20 +0200)
commit80ee54bfe8a3850015585ebc84e8d207fcae6831
tree51b838c96edf35674f5de3bb0f16c317b76694f2
parent49940bdd57779c78462da7aa5a8650b2fea8c2ff
btrfs: fix insert_reserved error handling

We were not handling the reserved byte accounting properly for data
references.  Metadata was fine, if it errored out the error paths would
free the bytes_reserved count and pin the extent, but it even missed one
of the error cases.  So instead move this handling up into
run_one_delayed_ref so we are sure that both cases are properly cleaned
up in case of a transaction abort.

CC: stable@vger.kernel.org # 4.18+
Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent-tree.c