From: Sasha Levin Date: Mon, 2 Aug 2021 22:03:27 +0000 (-0400) Subject: Fixes for 4.4 X-Git-Tag: v4.4.278~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a0eb153af1150c6052b580fdb01b8433266f1a2b;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 4.4 Signed-off-by: Sasha Levin --- diff --git a/queue-4.4/btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch b/queue-4.4/btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch new file mode 100644 index 00000000000..f8473cfd8a2 --- /dev/null +++ b/queue-4.4/btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch @@ -0,0 +1,45 @@ +From 7ef2163ef0b3ea05f791859e2fa6ff6ef44d100c Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 2 Aug 2021 09:31:07 -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 bae05c5c75ba..92601775ec5e 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.4/series b/queue-4.4/series index ea42503d89c..9ae2af0750a 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -24,3 +24,4 @@ mlx4-fix-missing-error-code-in-mlx4_load_one.patch net-llc-fix-skb_over_panic.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