From: Andreas Gruenbacher <agruenba@redhat.com>
To: Linus Torvalds <torvalds@linux-foundation.org>,
Alexander Viro <viro@zeniv.linux.org.uk>,
Christoph Hellwig <hch@infradead.org>,
"Darrick J. Wong" <djwong@kernel.org>
Cc: Jan Kara <jack@suse.cz>, Matthew Wilcox <willy@infradead.org>,
cluster-devel@redhat.com, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org, ocfs2-devel@oss.oracle.com,
Andreas Gruenbacher <agruenba@redhat.com>
Subject: [PATCH v4 0/8] gfs2: Fix mmap + page fault deadlocks
Date: Sat, 24 Jul 2021 21:34:41 +0200 [thread overview]
Message-ID: <20210724193449.361667-1-agruenba@redhat.com> (raw)
Hi Linus et al.,
here's another update of this patch queue:
* Finally fix the typos Linus has pointed out twice already.
* Turn the previous fault_in_iov_iter helper that was used for reads
and writes into iov_iter_fault_in_writeable per Al's suggestion.
Use the existing iov_iter_fault_in_readable for writes.
* Add a done_before argument and an IOMAP_DIO_FAULT_RETRY flag to
iomap_dio_rw to allow iomap_dio_rw to return partial results and
resume with the rest of a request. This allows iomap_dio_rw to be
used with page faults disabled without having to repeat any I/O.
* Adjust the gfs2 patches accordingly.
With that, the two iov_ter patches and the three iomap patches should
hopefully be ready for mainline.
There's one remaining issue on the gfs2 side: during read requests, when
a writer now comes in in the middle of a read request, the read request
can currently return a result that never existed on disk. So we need
to ensure that we only resume read requests when we know that no writer
got in the way, and retry the entire request otherwise. It should be
relatively easy to add a mechanism to detect when a glock is "lost";
this won't affect the vfs or iomap patches.
Thanks a lot,
Andreas
Andreas Gruenbacher (8):
iov_iter: Introduce iov_iter_fault_in_writeable helper
gfs2: Add wrapper for iomap_file_buffered_write
gfs2: Fix mmap + page fault deadlocks for buffered I/O
iomap: Fix iomap_dio_rw return value for user copies
iomap: Add done_before argument to iomap_dio_rw
iomap: Support restarting direct I/O requests after user copy failures
iov_iter: Introduce noio flag to disable page faults
gfs2: Fix mmap + page fault deadlocks for direct I/O
fs/btrfs/file.c | 5 ++-
fs/ext4/file.c | 5 ++-
fs/gfs2/file.c | 95 +++++++++++++++++++++++++++++++++++++++----
fs/iomap/direct-io.c | 29 ++++++++++---
fs/xfs/xfs_file.c | 6 +--
fs/zonefs/super.c | 4 +-
include/linux/iomap.h | 11 ++++-
include/linux/mm.h | 3 ++
include/linux/uio.h | 2 +
lib/iov_iter.c | 60 ++++++++++++++++++++++++---
mm/gup.c | 57 ++++++++++++++++++++++++++
11 files changed, 246 insertions(+), 31 deletions(-)
--
2.26.3
next reply other threads:[~2021-07-24 19:35 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-24 19:34 Andreas Gruenbacher [this message]
2021-07-24 19:34 ` [PATCH v4 1/8] iov_iter: Introduce iov_iter_fault_in_writeable helper Andreas Gruenbacher
2021-07-24 19:52 ` Linus Torvalds
2021-07-24 20:24 ` Al Viro
2021-07-24 20:37 ` Linus Torvalds
2021-07-24 21:38 ` Andreas Gruenbacher
2021-07-24 21:57 ` Al Viro
2021-07-24 22:06 ` Andreas Gruenbacher
2021-07-24 23:39 ` Al Viro
2021-07-27 9:30 ` David Laight
2021-07-27 11:13 ` Andreas Gruenbacher
2021-07-27 17:51 ` Linus Torvalds
2021-07-24 19:34 ` [PATCH v4 2/8] gfs2: Add wrapper for iomap_file_buffered_write Andreas Gruenbacher
2021-07-24 19:34 ` [PATCH v4 3/8] gfs2: Fix mmap + page fault deadlocks for buffered I/O Andreas Gruenbacher
2021-07-24 19:34 ` [PATCH v4 4/8] iomap: Fix iomap_dio_rw return value for user copies Andreas Gruenbacher
2021-07-24 19:34 ` [PATCH v4 5/8] iomap: Add done_before argument to iomap_dio_rw Andreas Gruenbacher
2021-07-24 19:34 ` [PATCH v4 6/8] iomap: Support restarting direct I/O requests after user copy failures Andreas Gruenbacher
2021-07-24 19:34 ` [PATCH v4 7/8] iov_iter: Introduce noio flag to disable page faults Andreas Gruenbacher
2021-07-24 19:34 ` [PATCH v4 8/8] gfs2: Fix mmap + page fault deadlocks for direct I/O Andreas Gruenbacher
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210724193449.361667-1-agruenba@redhat.com \
--to=agruenba@redhat.com \
--cc=cluster-devel@redhat.com \
--cc=djwong@kernel.org \
--cc=hch@infradead.org \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ocfs2-devel@oss.oracle.com \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).