Home Home > GIT Browse > SLE15-AZURE
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony Iliopoulos <ailiopoulos@suse.com>2019-06-12 16:19:23 +0200
committerAnthony Iliopoulos <ailiopoulos@suse.com>2019-06-12 16:19:23 +0200
commitd875624dd3ab9bf1e88dfe23a8fd3a5d565e6196 (patch)
tree79910eec9b1e8a5b0fd7adadd20eb791829284c5
parentcf774b72c097866f271cb67d90e78a8a77477968 (diff)
xfs: remove xfs_start_page_writeback (bsc#1138015).
-rw-r--r--patches.fixes/xfs-remove-xfs_start_page_writeback.patch102
-rw-r--r--series.conf1
2 files changed, 103 insertions, 0 deletions
diff --git a/patches.fixes/xfs-remove-xfs_start_page_writeback.patch b/patches.fixes/xfs-remove-xfs_start_page_writeback.patch
new file mode 100644
index 0000000000..096c185e0f
--- /dev/null
+++ b/patches.fixes/xfs-remove-xfs_start_page_writeback.patch
@@ -0,0 +1,102 @@
+From 1b65d3dd2d5e938b035b2ad73d0b47f35b5ef9a0 Mon Sep 17 00:00:00 2001
+From: Christoph Hellwig <hch@lst.de>
+Date: Wed, 11 Jul 2018 22:26:03 -0700
+Subject: [PATCH] xfs: remove xfs_start_page_writeback
+Git-commit: 1b65d3dd2d5e938b035b2ad73d0b47f35b5ef9a0
+Patch-mainline: v4.19-rc1
+References: bsc#1138015
+
+This helper only has two callers, one of them with a constant error
+argument. Remove it to make pending changes to the code a little easier.
+
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Reviewed-by: Brian Foster <bfoster@redhat.com>
+Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
+Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
+Acked-by: Anthony Iliopoulos <ailiopoulos@suse.com>
+
+---
+ fs/xfs/xfs_aops.c | 46 ++++++++++++++++++++--------------------------
+ 1 file changed, 20 insertions(+), 26 deletions(-)
+
+diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
+index 71b4ca60ff40..af9224ea4ebf 100644
+--- a/fs/xfs/xfs_aops.c
++++ b/fs/xfs/xfs_aops.c
+@@ -494,30 +494,6 @@ xfs_map_blocks(
+ return 0;
+ }
+
+-STATIC void
+-xfs_start_page_writeback(
+- struct page *page,
+- int clear_dirty)
+-{
+- ASSERT(PageLocked(page));
+- ASSERT(!PageWriteback(page));
+-
+- /*
+- * if the page was not fully cleaned, we need to ensure that the higher
+- * layers come back to it correctly. That means we need to keep the page
+- * dirty, and for WB_SYNC_ALL writeback we need to ensure the
+- * PAGECACHE_TAG_TOWRITE index mark is not removed so another attempt to
+- * write this page in this writeback sweep will be made.
+- */
+- if (clear_dirty) {
+- clear_page_dirty_for_io(page);
+- set_page_writeback(page);
+- } else
+- set_page_writeback_keepwrite(page);
+-
+- unlock_page(page);
+-}
+-
+ /*
+ * Submit the bio for an ioend. We are passed an ioend with a bio attached to
+ * it, and we submit that bio. The ioend may be used for multiple bio
+@@ -858,6 +834,8 @@ xfs_writepage_map(
+ }
+
+ ASSERT(wpc->ioend || list_empty(&submit_list));
++ ASSERT(PageLocked(page));
++ ASSERT(!PageWriteback(page));
+
+ /*
+ * On error, we have to fail the ioend here because we have locked
+@@ -877,7 +855,21 @@ xfs_writepage_map(
+ * treated correctly on error.
+ */
+ if (count) {
+- xfs_start_page_writeback(page, !error);
++ /*
++ * If the page was not fully cleaned, we need to ensure that the
++ * higher layers come back to it correctly. That means we need
++ * to keep the page dirty, and for WB_SYNC_ALL writeback we need
++ * to ensure the PAGECACHE_TAG_TOWRITE index mark is not removed
++ * so another attempt to write this page in this writeback sweep
++ * will be made.
++ */
++ if (error) {
++ set_page_writeback_keepwrite(page);
++ } else {
++ clear_page_dirty_for_io(page);
++ set_page_writeback(page);
++ }
++ unlock_page(page);
+
+ /*
+ * Preserve the original error if there was one, otherwise catch
+@@ -902,7 +894,9 @@ xfs_writepage_map(
+ * race with a partial page truncate on a sub-page block sized
+ * filesystem. In that case we need to mark the page clean.
+ */
+- xfs_start_page_writeback(page, 1);
++ clear_page_dirty_for_io(page);
++ set_page_writeback(page);
++ unlock_page(page);
+ end_page_writeback(page);
+ }
+
+--
+2.16.4
+
diff --git a/series.conf b/series.conf
index ade06c3ff3..ca5da0ef1c 100644
--- a/series.conf
+++ b/series.conf
@@ -18115,6 +18115,7 @@
patches.fixes/xfs-remove-the-imap_valid-flag.patch
patches.fixes/xfs-don-t-look-at-buffer-heads-in-xfs_add_to_ioend.patch
patches.fixes/xfs-move-all-writeback-buffer_head-manipulation-into.patch
+ patches.fixes/xfs-remove-xfs_start_page_writeback.patch
patches.fixes/xfs-detect-and-fix-bad-summary-counts-at-mount.patch
patches.fixes/xfs-refactor-unmount-record-write.patch
patches.fixes/xfs-force-summary-counter-recalc-at-next-mount.patch