From 0727bd7a60694d429d4eab57d82b9a7033d5df0d Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Mon, 2 Aug 2021 18:03:25 -0400 Subject: [PATCH] Fixes for 4.14 Signed-off-by: Sasha Levin --- ...essed-range-uptodate-only-if-all-bio.patch | 45 +++++++++++++++++++ queue-4.14/series | 1 + 2 files changed, 46 insertions(+) create mode 100644 queue-4.14/btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch diff --git a/queue-4.14/btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch b/queue-4.14/btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch new file mode 100644 index 00000000000..999229b9058 --- /dev/null +++ b/queue-4.14/btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch @@ -0,0 +1,45 @@ +From c6a68b51d5351bf61a4eab61120b56c903205368 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 2 Aug 2021 09:31:37 -0500 +Subject: btrfs: mark compressed range uptodate only if all bio succeed + +From: Goldwyn Rodrigues + +[ Upstream commit 240246f6b913b0c23733cfd2def1d283f8cc9bbe ] + +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 +Reviewed-by: David Sterba +Signed-off-by: David Sterba +Signed-off-by: Sasha Levin +--- + fs/btrfs/compression.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c +index ccd9c709375e..24341c97c13f 100644 +--- a/fs/btrfs/compression.c ++++ b/fs/btrfs/compression.c +@@ -286,7 +286,7 @@ static void end_compressed_bio_write(struct bio *bio) + cb->start, + cb->start + cb->len - 1, + NULL, +- bio->bi_status ? 0 : 1); ++ !cb->errors); + cb->compressed_pages[0]->mapping = NULL; + + end_compressed_writeback(inode, cb); +-- +2.30.2 + diff --git a/queue-4.14/series b/queue-4.14/series index 5454a053ab5..25d331c5df6 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -36,3 +36,4 @@ tulip-windbond-840-fix-missing-pci_disable_device-in.patch sis900-fix-missing-pci_disable_device-in-probe-and-r.patch can-hi311x-fix-a-signedness-bug-in-hi3110_cmd.patch revert-perf-map-fix-dso-nsinfo-refcounting.patch +btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch -- 2.47.3