btrfs: handle errors properly inside btrfs_submit_compressed_write()
authorQu Wenruo <wqu@suse.com>
Mon, 27 Sep 2021 07:21:51 +0000 (15:21 +0800)
committerDavid Sterba <dsterba@suse.com>
Tue, 26 Oct 2021 17:08:04 +0000 (19:08 +0200)
commit6853c64a6e763fedfeef214569ceea40008cc007
tree6d4079970cc420202b85ba9427a90ae075749df5
parent86ccbb4d2a2af4109430df518c995a4f7d14dfd2
btrfs: handle errors properly inside btrfs_submit_compressed_write()

Just like btrfs_submit_compressed_read(), there are quite some BUG_ON()s
inside btrfs_submit_compressed_write() for the bio submission path.

Fix them using the same method:

- For last bio, just endio the bio
  As in that case, one of the endio function of all these submitted bio
  will be able to free the compressed_bio

- For half-submitted bio, wait and finish the compressed_bio manually
  In this case, as long as all other bio finish, we're the only one
  referring the compressed bio, and can manually finish it.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/compression.c