diff for duplicates of <20220407011257.114287-9-sashal@kernel.org>
diff --git a/a/1.txt b/N1/1.txt
index 4293119..e7cc9e5 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,44 +1,6 @@
-From: Andreas Gruenbacher <agruenba@redhat.com>
-
-[ Upstream commit 52f3f033a5dbd023307520af1ff551cadfd7f037 ]
-
-During lockless buffered reads, filemap_read() holds page cache page
-references while trying to copy data to the user-space buffer. The
-calling process isn't holding the inode glock, but the page references
-it holds prevent those pages from being removed from the page cache, and
-that prevents the underlying inode glock from being moved to another
-node. Thus, we can end up in the same kinds of distributed deadlock
-situations as with normal (non-lockless) buffered reads.
-
-Fix that by disabling page faults during lockless reads as well.
-
-Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- fs/gfs2/file.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c
-index f6d3b3e13d72..c39c102f5005 100644
---- a/fs/gfs2/file.c
-+++ b/fs/gfs2/file.c
-@@ -850,14 +850,16 @@ static ssize_t gfs2_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
- return ret;
- iocb->ki_flags &= ~IOCB_DIRECT;
- }
-+ pagefault_disable();
- iocb->ki_flags |= IOCB_NOIO;
- ret = generic_file_read_iter(iocb, to);
- iocb->ki_flags &= ~IOCB_NOIO;
-+ pagefault_enable();
- if (ret >= 0) {
- if (!iov_iter_count(to))
- return ret;
- written = ret;
-- } else {
-+ } else if (ret != -EFAULT) {
- if (ret != -EAGAIN)
- return ret;
- if (iocb->ki_flags & IOCB_NOWAIT)
---
-2.35.1
\ No newline at end of file
+A non-text attachment was scrubbed...
+Name: not available
+Type: application/octet-stream
+Size: 1476 bytes
+Desc: not available
+URL: <http://listman.redhat.com/archives/cluster-devel/attachments/20220406/dbf33f90/attachment.obj>
\ No newline at end of file
diff --git a/a/content_digest b/N1/content_digest
index e34630c..1339afe 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -5,20 +5,13 @@
"From\0Sasha Levin <sashal\@kernel.org>\0"
]
[
- "Subject\0[PATCH AUTOSEL 5.15 09/27] gfs2: Disable page faults during lockless buffered reads\0"
+ "Subject\0[Cluster-devel] [PATCH AUTOSEL 5.15 09/27] gfs2: Disable page faults during lockless buffered reads\0"
]
[
"Date\0Wed, 6 Apr 2022 21:12:39 -0400\0"
]
[
- "To\0linux-kernel\@vger.kernel.org",
- " stable\@vger.kernel.org\0"
-]
-[
- "Cc\0Andreas Gruenbacher <agruenba\@redhat.com>",
- " Sasha Levin <sashal\@kernel.org>",
- " rpeterso\@redhat.com",
- " cluster-devel\@redhat.com\0"
+ "To\0cluster-devel.redhat.com\0"
]
[
"\0000:1\0"
@@ -27,50 +20,12 @@
"b\0"
]
[
- "From: Andreas Gruenbacher <agruenba\@redhat.com>\n",
- "\n",
- "[ Upstream commit 52f3f033a5dbd023307520af1ff551cadfd7f037 ]\n",
- "\n",
- "During lockless buffered reads, filemap_read() holds page cache page\n",
- "references while trying to copy data to the user-space buffer. The\n",
- "calling process isn't holding the inode glock, but the page references\n",
- "it holds prevent those pages from being removed from the page cache, and\n",
- "that prevents the underlying inode glock from being moved to another\n",
- "node. Thus, we can end up in the same kinds of distributed deadlock\n",
- "situations as with normal (non-lockless) buffered reads.\n",
- "\n",
- "Fix that by disabling page faults during lockless reads as well.\n",
- "\n",
- "Signed-off-by: Andreas Gruenbacher <agruenba\@redhat.com>\n",
- "Signed-off-by: Sasha Levin <sashal\@kernel.org>\n",
- "---\n",
- " fs/gfs2/file.c | 4 +++-\n",
- " 1 file changed, 3 insertions(+), 1 deletion(-)\n",
- "\n",
- "diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c\n",
- "index f6d3b3e13d72..c39c102f5005 100644\n",
- "--- a/fs/gfs2/file.c\n",
- "+++ b/fs/gfs2/file.c\n",
- "\@\@ -850,14 +850,16 \@\@ static ssize_t gfs2_file_read_iter(struct kiocb *iocb, struct iov_iter *to)\n",
- " \t\t\treturn ret;\n",
- " \t\tiocb->ki_flags &= ~IOCB_DIRECT;\n",
- " \t}\n",
- "+\tpagefault_disable();\n",
- " \tiocb->ki_flags |= IOCB_NOIO;\n",
- " \tret = generic_file_read_iter(iocb, to);\n",
- " \tiocb->ki_flags &= ~IOCB_NOIO;\n",
- "+\tpagefault_enable();\n",
- " \tif (ret >= 0) {\n",
- " \t\tif (!iov_iter_count(to))\n",
- " \t\t\treturn ret;\n",
- " \t\twritten = ret;\n",
- "-\t} else {\n",
- "+\t} else if (ret != -EFAULT) {\n",
- " \t\tif (ret != -EAGAIN)\n",
- " \t\t\treturn ret;\n",
- " \t\tif (iocb->ki_flags & IOCB_NOWAIT)\n",
- "-- \n",
- "2.35.1"
+ "A non-text attachment was scrubbed...\n",
+ "Name: not available\n",
+ "Type: application/octet-stream\n",
+ "Size: 1476 bytes\n",
+ "Desc: not available\n",
+ "URL: <http://listman.redhat.com/archives/cluster-devel/attachments/20220406/dbf33f90/attachment.obj>"
]
-9c2beadcfb8674584ec168687f26554ffd89aeddbe74f62889123e7d9888a604
+46449da239230656b3520c007d4b4098b6768c0f7479df7b92888067558d4598
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.