All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/16] Allow readpage to return a locked page
@ 2020-10-09 14:30 ` Matthew Wilcox (Oracle)
  0 siblings, 0 replies; 80+ messages in thread
From: Matthew Wilcox (Oracle) @ 2020-10-09 14:30 UTC (permalink / raw)
  To: linux-fsdevel
  Cc: Matthew Wilcox (Oracle),
	linux-mm, v9fs-developer, linux-kernel, linux-afs, ceph-devel,
	linux-cifs, ecryptfs, linux-um, linux-mtd, Richard Weinberger,
	linux-xfs

Linus recently made the page lock more fair.  That means that the old
pattern where we returned from ->readpage with the page unlocked and
then attempted to re-lock it will send us to the back of the queue for
this page's lock.

A further benefit is that a synchronous readpage implementation allows
us to return an error to someone who might actually care about it.
There's no need to SetPageError, but I don't want to learn about how
a dozen filesystems handle I/O errors (hint: they're all different),
so I have not attempted to change that.  Except for iomap.

Ideally all filesystems would return from ->readpage with the page
Uptodate and Locked, but it's a bit painful to convert all the
asynchronous readpage implementations to synchronous.  The first 14
filesystems converted are already synchronous.  The last two patches
convert iomap to synchronous readpage.

This patchset is against iomap-for-next.  Andrew, it would make merging
the THP patchset much easier if you could merge at least the first patch
adding AOP_UPDATED_PAGE during the merge window which opens next week.

Matthew Wilcox (Oracle) (16):
  mm: Add AOP_UPDATED_PAGE return value
  mm: Inline wait_on_page_read into its one caller
  9p: Tell the VFS that readpage was synchronous
  afs: Tell the VFS that readpage was synchronous
  ceph: Tell the VFS that readpage was synchronous
  cifs: Tell the VFS that readpage was synchronous
  cramfs: Tell the VFS that readpage was synchronous
  ecryptfs: Tell the VFS that readpage was synchronous
  fuse: Tell the VFS that readpage was synchronous
  hostfs: Tell the VFS that readpage was synchronous
  jffs2: Tell the VFS that readpage was synchronous
  ubifs: Tell the VFS that readpage was synchronous
  udf: Tell the VFS that readpage was synchronous
  vboxsf: Tell the VFS that readpage was synchronous
  iomap: Inline iomap_iop_set_range_uptodate into its one caller
  iomap: Make readpage synchronous

 Documentation/filesystems/locking.rst |  7 +-
 Documentation/filesystems/vfs.rst     | 21 ++++--
 fs/9p/vfs_addr.c                      |  6 +-
 fs/afs/file.c                         |  3 +-
 fs/ceph/addr.c                        |  9 +--
 fs/cifs/file.c                        |  8 ++-
 fs/cramfs/inode.c                     |  5 +-
 fs/ecryptfs/mmap.c                    | 11 ++--
 fs/fuse/file.c                        |  2 +
 fs/hostfs/hostfs_kern.c               |  2 +
 fs/iomap/buffered-io.c                | 92 ++++++++++++++-------------
 fs/jffs2/file.c                       |  6 +-
 fs/ubifs/file.c                       | 16 +++--
 fs/udf/file.c                         |  3 +-
 fs/vboxsf/file.c                      |  2 +
 include/linux/fs.h                    |  5 ++
 mm/filemap.c                          | 33 +++++-----
 17 files changed, 135 insertions(+), 96 deletions(-)

-- 
2.28.0


^ permalink raw reply	[flat|nested] 80+ messages in thread

end of thread, other threads:[~2020-10-16  6:36 UTC | newest]

Thread overview: 80+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-09 14:30 [PATCH v2 00/16] Allow readpage to return a locked page Matthew Wilcox (Oracle)
2020-10-09 14:30 ` Matthew Wilcox (Oracle)
2020-10-09 14:30 ` Matthew Wilcox (Oracle)
2020-10-09 14:30 ` [PATCH v2 01/16] mm: Add AOP_UPDATED_PAGE return value Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-15  9:06   ` Christoph Hellwig
2020-10-15  9:06     ` Christoph Hellwig
2020-10-15  9:06     ` Christoph Hellwig
2020-10-15 14:06     ` Matthew Wilcox
2020-10-15 14:06       ` Matthew Wilcox
2020-10-15 14:06       ` Matthew Wilcox
2020-10-09 14:30 ` [PATCH v2 02/16] mm: Inline wait_on_page_read into its one caller Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-15  9:08   ` Christoph Hellwig
2020-10-15  9:08     ` Christoph Hellwig
2020-10-09 14:30 ` [PATCH v2 03/16] 9p: Tell the VFS that readpage was synchronous Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30 ` [PATCH v2 04/16] afs: " Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30 ` [PATCH v2 05/16] ceph: " Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30 ` [PATCH v2 06/16] cifs: " Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30 ` [PATCH v2 07/16] cramfs: " Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30 ` [PATCH v2 08/16] ecryptfs: " Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30 ` [PATCH v2 09/16] fuse: " Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30 ` [PATCH v2 10/16] hostfs: " Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30 ` [PATCH v2 11/16] jffs2: " Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:30   ` Matthew Wilcox (Oracle)
2020-10-09 14:31 ` [PATCH v2 12/16] ubifs: " Matthew Wilcox (Oracle)
2020-10-09 14:31   ` Matthew Wilcox (Oracle)
2020-10-09 14:31   ` Matthew Wilcox (Oracle)
2020-10-09 14:31 ` [PATCH v2 13/16] udf: " Matthew Wilcox (Oracle)
2020-10-09 14:31   ` Matthew Wilcox (Oracle)
2020-10-09 14:31   ` Matthew Wilcox (Oracle)
2020-10-09 14:31 ` [PATCH v2 14/16] vboxsf: " Matthew Wilcox (Oracle)
2020-10-09 14:31   ` Matthew Wilcox (Oracle)
2020-10-09 14:31   ` Matthew Wilcox (Oracle)
2020-10-09 14:31 ` [PATCH v2 15/16] iomap: Inline iomap_iop_set_range_uptodate into its one caller Matthew Wilcox (Oracle)
2020-10-09 14:31   ` Matthew Wilcox (Oracle)
2020-10-15  9:08   ` Christoph Hellwig
2020-10-15  9:08     ` Christoph Hellwig
2020-10-15  9:08     ` Christoph Hellwig
2020-10-09 14:31 ` [PATCH v2 16/16] iomap: Make readpage synchronous Matthew Wilcox (Oracle)
2020-10-09 14:31   ` Matthew Wilcox (Oracle)
2020-10-15  9:42   ` Christoph Hellwig
2020-10-15  9:42     ` Christoph Hellwig
2020-10-15  9:42     ` Christoph Hellwig
2020-10-15 16:43     ` Matthew Wilcox
2020-10-15 16:43       ` Matthew Wilcox
2020-10-15 16:43       ` Matthew Wilcox
2020-10-15 17:58       ` Christoph Hellwig
2020-10-15 17:58         ` Christoph Hellwig
2020-10-15 17:58         ` Christoph Hellwig
2020-10-15 19:03         ` Matthew Wilcox
2020-10-15 19:03           ` Matthew Wilcox
2020-10-15 19:03           ` Matthew Wilcox
2020-10-16  6:35           ` Christoph Hellwig
2020-10-16  6:35             ` Christoph Hellwig
2020-10-16  6:35             ` Christoph Hellwig
2020-10-15  9:02 ` [PATCH v2 00/16] Allow readpage to return a locked page Christoph Hellwig
2020-10-15  9:02   ` Christoph Hellwig
2020-10-15  9:02   ` Christoph Hellwig
2020-10-15 11:49   ` Matthew Wilcox
2020-10-15 11:49     ` Matthew Wilcox
2020-10-15 11:49     ` Matthew Wilcox

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.