From: Filipe Manana Date: Mon, 6 Oct 2014 21:14:25 +0000 (+0100) Subject: Btrfs: process all async extents on compressed write failure X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=709deb00a91d73dea126afd9920aaabc6e89d059;p=linux Btrfs: process all async extents on compressed write failure If we had an error when processing one of the async extents from our list, we were not processing the remaining async extents, meaning we would leak those async_extent structs, never release the pages with the compressed data and never unlock and clear the dirty flag from the inode's pages (those that correspond to the uncompressed content). Signed-off-by: Filipe Manana Signed-off-by: Chris Mason (cherry picked from commit 3d7a820f713a1a3339139ea8c86a98437ae0a2c1) --- diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index ec68eaef05d7e..43651692a9509 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -830,13 +830,9 @@ retry: } alloc_hint = ins.objectid + ins.offset; kfree(async_extent); - if (ret) - goto out; cond_resched(); } - ret = 0; -out: - return ret; + return 0; out_free_reserve: btrfs_free_reserved_extent(root, ins.objectid, ins.offset, 1); out_free: