All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/13] Allow readpage to return a locked page
@ 2020-09-17 15:10 ` Matthew Wilcox (Oracle)
  0 siblings, 0 replies; 75+ messages in thread
From: Matthew Wilcox (Oracle) @ 2020-09-17 15:10 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

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.

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.  These ones are
already synchronous, so convert them while I work on iomap.

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.

Please review your filesystem carefully.  I've tried to catch all the
places where a filesystem calls its own internal readpage implementation
without going through ->readpage, but I may have missed some.

Matthew Wilcox (Oracle) (13):
  mm: Add AOP_UPDATED_PAGE return value
  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

 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/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                          | 12 ++++++++++--
 16 files changed, 80 insertions(+), 38 deletions(-)

-- 
2.28.0


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

end of thread, other threads:[~2020-09-24 13:46 UTC | newest]

Thread overview: 75+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-17 15:10 [PATCH 00/13] Allow readpage to return a locked page Matthew Wilcox (Oracle)
2020-09-17 15:10 ` Matthew Wilcox (Oracle)
2020-09-17 15:10 ` Matthew Wilcox (Oracle)
2020-09-17 15:10 ` [PATCH 01/13] mm: Add AOP_UPDATED_PAGE return value Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 22:03   ` Matthew Wilcox
2020-09-17 22:03     ` Matthew Wilcox
2020-09-17 22:03     ` Matthew Wilcox
2020-09-17 15:10 ` [PATCH 02/13] 9p: Tell the VFS that readpage was synchronous Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-18  5:59   ` [V9fs-developer] " Dominique Martinet
2020-09-18  5:59     ` Dominique Martinet
2020-09-18  5:59     ` Dominique Martinet
2020-09-18 11:19     ` Matthew Wilcox
2020-09-18 11:19       ` Matthew Wilcox
2020-09-18 11:19       ` Matthew Wilcox
2020-09-18 12:30   ` Dominique Martinet
2020-09-18 12:30     ` Dominique Martinet
2020-09-18 12:30     ` Dominique Martinet
2020-09-17 15:10 ` [PATCH 03/13] afs: " Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10 ` [PATCH 04/13] ceph: " Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 16:49   ` Jeff Layton
2020-09-17 16:49     ` Jeff Layton
2020-09-17 16:49     ` Jeff Layton
2020-09-17 16:49     ` Jeff Layton
2020-09-17 15:10 ` [PATCH 05/13] cifs: " Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10 ` [PATCH 06/13] cramfs: " Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10 ` [PATCH 07/13] ecryptfs: " Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10 ` [PATCH 08/13] fuse: " Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10 ` [PATCH 09/13] hostfs: " Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10 ` [PATCH 10/13] jffs2: " Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10 ` [PATCH 11/13] ubifs: " Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 20:46   ` Richard Weinberger
2020-09-17 20:46     ` Richard Weinberger
2020-09-17 20:46     ` Richard Weinberger
2020-09-17 20:46     ` Richard Weinberger
2020-09-17 20:46     ` Richard Weinberger
2020-09-17 15:10 ` [PATCH 12/13] udf: " Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-24  9:00   ` Jan Kara
2020-09-24  9:00     ` Jan Kara
2020-09-24  9:00     ` Jan Kara
2020-09-17 15:10 ` [PATCH 13/13] vboxsf: " Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 15:10   ` Matthew Wilcox (Oracle)
2020-09-17 22:56 ` [PATCH 14/13] iomap: Inline iomap_iop_set_range_uptodate into its one caller Matthew Wilcox (Oracle)
2020-09-17 22:56   ` [PATCH 15/13] iomap: Inline iomap_read_finish " Matthew Wilcox (Oracle)
2020-09-19  6:31     ` Christoph Hellwig
2020-09-17 22:56   ` [PATCH 16/13] iomap: Make readpage synchronous Matthew Wilcox (Oracle)
2020-09-19  6:39     ` Christoph Hellwig
2020-09-19  6:43       ` Christoph Hellwig
2020-09-19 17:03         ` Matthew Wilcox
2020-09-19 17:10       ` Matthew Wilcox
2020-09-19  6:31   ` [PATCH 14/13] iomap: Inline iomap_iop_set_range_uptodate into its one caller Christoph Hellwig

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.