From: Sasha Levin Date: Mon, 2 Aug 2021 22:03:24 +0000 (-0400) Subject: Fixes for 4.19 X-Git-Tag: v4.4.278~14 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8a1fe8e4b7fac3ce42f61daa1e49348b94d17596;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 4.19 Signed-off-by: Sasha Levin --- diff --git a/queue-4.19/btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch b/queue-4.19/btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch new file mode 100644 index 00000000000..b32d7ca72ed --- /dev/null +++ b/queue-4.19/btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch @@ -0,0 +1,46 @@ +From 792ea230b1d6f4453604b105926e4ec7e56f736a Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 2 Aug 2021 09:32:06 -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 | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c +index c71e534ca7ef..919c033b9e31 100644 +--- a/fs/btrfs/compression.c ++++ b/fs/btrfs/compression.c +@@ -270,8 +270,7 @@ static void end_compressed_bio_write(struct bio *bio) + cb->start, + cb->start + cb->len - 1, + NULL, +- bio->bi_status ? +- BLK_STS_OK : BLK_STS_NOTSUPP); ++ !cb->errors); + cb->compressed_pages[0]->mapping = NULL; + + end_compressed_writeback(inode, cb); +-- +2.30.2 + diff --git a/queue-4.19/series b/queue-4.19/series index c7d14aa442e..f4c57625b4e 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -28,3 +28,4 @@ can-hi311x-fix-a-signedness-bug-in-hi3110_cmd.patch powerpc-pseries-fix-regression-while-building-external-modules.patch revert-perf-map-fix-dso-nsinfo-refcounting.patch i40e-add-additional-info-to-phy-type-error.patch +btrfs-mark-compressed-range-uptodate-only-if-all-bio.patch