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

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 (file)
index 0000000..f8473cf
--- /dev/null
@@ -0,0 +1,45 @@
+From 7ef2163ef0b3ea05f791859e2fa6ff6ef44d100c Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 2 Aug 2021 09:31:07 -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 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
+
index ea42503d89c244529c356b8bc556af3d3e745967..9ae2af0750ad7da760bdf1e259ca4f8333bb8085 100644 (file)
@@ -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