From: Sasha Levin Date: Mon, 2 Aug 2021 22:03:26 +0000 (-0400) Subject: Fixes for 4.9 X-Git-Tag: v4.4.278~12 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5cd1e2834be471f9d0b2e8add8e089d4a6e564f0;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 4.9 Signed-off-by: Sasha Levin --- diff --git a/queue-4.9/btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch b/queue-4.9/btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch new file mode 100644 index 00000000000..e47e92e1309 --- /dev/null +++ b/queue-4.9/btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch @@ -0,0 +1,45 @@ +From e8946fc13a6c7f8f16bccde027c7fd998242990c Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 2 Aug 2021 09:30:34 -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 d4d8b7e36b2f..2534e44cfd40 100644 +--- a/fs/btrfs/compression.c ++++ b/fs/btrfs/compression.c +@@ -290,7 +290,7 @@ static void end_compressed_bio_write(struct bio *bio) + cb->start, + cb->start + cb->len - 1, + NULL, +- bio->bi_error ? 0 : 1); ++ !cb->errors); + cb->compressed_pages[0]->mapping = NULL; + + end_compressed_writeback(inode, cb); +-- +2.30.2 + diff --git a/queue-4.9/series b/queue-4.9/series index dcc1d0aeaac..d4407acd9bf 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -30,3 +30,4 @@ net-llc-fix-skb_over_panic.patch net-mlx5-fix-flow-table-chaining.patch tulip-windbond-840-fix-missing-pci_disable_device-in.patch sis900-fix-missing-pci_disable_device-in-probe-and-r.patch +btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch