]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.19-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Sep 2021 13:33:38 +0000 (15:33 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Sep 2021 13:33:38 +0000 (15:33 +0200)
added patches:
revert-btrfs-compression-don-t-try-to-compress-if-we-don-t-have-enough-pages.patch

queue-4.19/revert-btrfs-compression-don-t-try-to-compress-if-we-don-t-have-enough-pages.patch [new file with mode: 0644]
queue-4.19/series

diff --git a/queue-4.19/revert-btrfs-compression-don-t-try-to-compress-if-we-don-t-have-enough-pages.patch b/queue-4.19/revert-btrfs-compression-don-t-try-to-compress-if-we-don-t-have-enough-pages.patch
new file mode 100644 (file)
index 0000000..6cddef5
--- /dev/null
@@ -0,0 +1,61 @@
+From 4e9655763b82a91e4c341835bb504a2b1590f984 Mon Sep 17 00:00:00 2001
+From: Qu Wenruo <wqu@suse.com>
+Date: Wed, 25 Aug 2021 13:41:42 +0800
+Subject: Revert "btrfs: compression: don't try to compress if we don't have enough pages"
+
+From: Qu Wenruo <wqu@suse.com>
+
+commit 4e9655763b82a91e4c341835bb504a2b1590f984 upstream.
+
+This reverts commit f2165627319ffd33a6217275e5690b1ab5c45763.
+
+[BUG]
+It's no longer possible to create compressed inline extent after commit
+f2165627319f ("btrfs: compression: don't try to compress if we don't
+have enough pages").
+
+[CAUSE]
+For compression code, there are several possible reasons we have a range
+that needs to be compressed while it's no more than one page.
+
+- Compressed inline write
+  The data is always smaller than one sector and the test lacks the
+  condition to properly recognize a non-inline extent.
+
+- Compressed subpage write
+  For the incoming subpage compressed write support, we require page
+  alignment of the delalloc range.
+  And for 64K page size, we can compress just one page into smaller
+  sectors.
+
+For those reasons, the requirement for the data to be more than one page
+is not correct, and is already causing regression for compressed inline
+data writeback.  The idea of skipping one page to avoid wasting CPU time
+could be revisited in the future.
+
+[FIX]
+Fix it by reverting the offending commit.
+
+Reported-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org>
+Link: https://lore.kernel.org/linux-btrfs/afa2742.c084f5d6.17b6b08dffc@tnonline.net
+Fixes: f2165627319f ("btrfs: compression: don't try to compress if we don't have enough pages")
+CC: stable@vger.kernel.org # 4.4+
+Signed-off-by: Qu Wenruo <wqu@suse.com>
+Reviewed-by: David Sterba <dsterba@suse.com>
+Signed-off-by: David Sterba <dsterba@suse.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/btrfs/inode.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/fs/btrfs/inode.c
++++ b/fs/btrfs/inode.c
+@@ -530,7 +530,7 @@ again:
+        * inode has not been flagged as nocompress.  This flag can
+        * change at any time if we discover bad compression ratios.
+        */
+-      if (nr_pages > 1 && inode_need_compress(inode, start, end)) {
++      if (inode_need_compress(inode, start, end)) {
+               WARN_ON(pages);
+               pages = kcalloc(nr_pages, sizeof(struct page *), GFP_NOFS);
+               if (!pages) {
index 3f5fc31c1cafda0d009f82227027bb7b66b4056a..799aa28e231921b575fa33a0d9b927310ce4f277 100644 (file)
@@ -22,3 +22,4 @@ powerpc-module64-fix-comment-in-r_ppc64_entry-handling.patch
 powerpc-boot-delete-unneeded-.globl-_zimage_start.patch
 net-ll_temac-remove-left-over-debug-message.patch
 mm-page_alloc-speed-up-the-iteration-of-max_order.patch
+revert-btrfs-compression-don-t-try-to-compress-if-we-don-t-have-enough-pages.patch