]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 4.9
authorSasha Levin <sashal@kernel.org>
Mon, 2 Aug 2021 22:03:26 +0000 (18:03 -0400)
committerSasha Levin <sashal@kernel.org>
Mon, 2 Aug 2021 22:03:26 +0000 (18:03 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-4.9/btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch [new file with mode: 0644]
queue-4.9/series

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 (file)
index 0000000..e47e92e
--- /dev/null
@@ -0,0 +1,45 @@
+From e8946fc13a6c7f8f16bccde027c7fd998242990c Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 2 Aug 2021 09:30:34 -0500
+Subject: btrfs: mark compressed range uptodate only if all bio succeed
+
+From: Goldwyn Rodrigues <rgoldwyn@suse.com>
+
+[ 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 <rgoldwyn@suse.com>
+Reviewed-by: David Sterba <dsterba@suse.com>
+Signed-off-by: David Sterba <dsterba@suse.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
index dcc1d0aeaac88f9865b0f2d5d650ea1e656804f0..d4407acd9bfd333aa50ad09bde789024c9f035a3 100644 (file)
@@ -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