| From 240246f6b913b0c23733cfd2def1d283f8cc9bbe Mon Sep 17 00:00:00 2001 |
| From: Goldwyn Rodrigues <rgoldwyn@suse.de> |
| Date: Fri, 9 Jul 2021 11:29:22 -0500 |
| Subject: btrfs: mark compressed range uptodate only if all bio succeed |
| |
| From: Goldwyn Rodrigues <rgoldwyn@suse.de> |
| |
| commit 240246f6b913b0c23733cfd2def1d283f8cc9bbe upstream. |
| |
| In compression write endio sequence, the range which the compressed_bio |
| writes is marked as uptodate if the last bio of the compressed (sub)bios |
| is completed successfully. There could be previous bio which may |
| have failed which is recorded in cb->errors. |
| |
| Set the writeback range as uptodate only if cb->errors is zero, as opposed |
| to checking only the last bio's status. |
| |
| Backporting notes: in all versions up to 4.4 the last argument is always |
| replaced by "!cb->errors". |
| |
| CC: stable@vger.kernel.org # 4.4+ |
| Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com> |
| Reviewed-by: David Sterba <dsterba@suse.com> |
| Signed-off-by: David Sterba <dsterba@suse.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| fs/btrfs/compression.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/fs/btrfs/compression.c |
| +++ b/fs/btrfs/compression.c |
| @@ -340,7 +340,7 @@ static void end_compressed_bio_write(str |
| cb->compressed_pages[0]->mapping = cb->inode->i_mapping; |
| btrfs_writepage_endio_finish_ordered(cb->compressed_pages[0], |
| cb->start, cb->start + cb->len - 1, |
| - bio->bi_status == BLK_STS_OK); |
| + !cb->errors); |
| cb->compressed_pages[0]->mapping = NULL; |
| |
| end_compressed_writeback(inode, cb); |