Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3d7a820f authored by Filipe Manana's avatar Filipe Manana Committed by Chris Mason
Browse files

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: default avatarFilipe Manana <fdmanana@suse.com>
Signed-off-by: default avatarChris Mason <clm@fb.com>
parent 40ae837b
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -839,13 +839,9 @@ static noinline int submit_compressed_extents(struct inode *inode,
		}
		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: