diff options
author | Filipe Manana <fdmanana@suse.com> | 2014-10-06 22:14:25 +0100 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2014-11-20 17:14:26 -0800 |
commit | 3d7a820f713a1a3339139ea8c86a98437ae0a2c1 (patch) | |
tree | fc76571c64a9f7d7aaf4788c9fd426dcaa1f33e2 /fs/btrfs/inode.c | |
parent | 40ae837b43565c47ee171e704d05947fd5c2bae9 (diff) | |
download | linux-3d7a820f713a1a3339139ea8c86a98437ae0a2c1.tar.bz2 |
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 <fdmanana@suse.com>
Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r-- | fs/btrfs/inode.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index b759585fbc6a..d1a52850d17d 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -839,13 +839,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: |