Thread (99 messages) flat view 99 messages, 12 authors, 2021-10-25

Re: [PATCH v7 15/19] iomap: Support partial direct I/O on user copy failures

From: Andreas Gruenbacher <agruenba@redhat.com>
Date: 2021-09-28 15:06:02
Also in: lkml, ocfs2-devel

On Thu, Sep 9, 2021 at 1:22 PM Christoph Hellwig [off-list ref] wrote:
On Fri, Aug 27, 2021 at 06:49:22PM +0200, Andreas Gruenbacher wrote:
quoted
In iomap_dio_rw, when iomap_apply returns an -EFAULT error and the
IOMAP_DIO_PARTIAL flag is set, complete the request synchronously and
return a partial result.  This allows the caller to deal with the page
fault and retry the remainder of the request.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
---
 fs/iomap/direct-io.c  | 6 ++++++
 include/linux/iomap.h | 7 +++++++
 2 files changed, 13 insertions(+)
diff --git a/fs/iomap/direct-io.c b/fs/iomap/direct-io.c
index 8054f5d6c273..ba88fe51b77a 100644
--- a/fs/iomap/direct-io.c
+++ b/fs/iomap/direct-io.c
@@ -561,6 +561,12 @@ __iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter,
              ret = iomap_apply(inode, pos, count, iomap_flags, ops, dio,
                              iomap_dio_actor);
              if (ret <= 0) {
+                     if (ret == -EFAULT && dio->size &&
+                         (dio_flags & IOMAP_DIO_PARTIAL)) {
+                             wait_for_completion = true;
+                             ret = 0;
Do we need a NOWAIT check here to skip the wait_for_completion
for that case?
Hmm, you're probably right, yes. I'll add that.

Thanks,
Andreas
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help