Assorted improvements for swap-via-filesystem. This is a resend of these patches, rebased on current HEAD. The only substantial changes is that swap_dirty_folio has replaced swap_set_page_dirty. Currently swap-via-fs (SWP_FS_OPS) doesn't work for any filesystem. It has previously worked for NFS but that broke a few releases back. This series changes to use a new ->swap_rw rather than ->readpage and ->direct_IO. It also makes other improvements. There is a companion series already in linux-next which fixes various issues with NFS. Once both series land, a final patch is needed which changes NFS over to use ->swap_rw. Thanks, NeilBrown --- NeilBrown (10): MM: create new mm/swap.h header file. MM: drop swap_dirty_folio MM: move responsibility for setting SWP_FS_OPS to ->swap_activate MM: reclaim mustn't enter FS for SWP_FS_OPS swap-space MM: introduce ->swap_rw and use it for reads from SWP_FS_OPS swap-space MM: perform async writes to SWP_FS_OPS swap-space using ->swap_rw DOC: update documentation for swap_activate and swap_rw MM: submit multipage reads for SWP_FS_OPS swap-space MM: submit multipage write for SWP_FS_OPS swap-space VFS: Add FMODE_CAN_ODIRECT file flag Documentation/filesystems/locking.rst | 18 +- Documentation/filesystems/vfs.rst | 17 +- drivers/block/loop.c | 4 +- fs/cifs/file.c | 7 +- fs/fcntl.c | 9 +- fs/nfs/file.c | 20 ++- fs/open.c | 9 +- fs/overlayfs/file.c | 13 +- include/linux/fs.h | 4 + include/linux/swap.h | 7 +- include/linux/writeback.h | 7 + mm/madvise.c | 8 +- mm/memory.c | 2 +- mm/page_io.c | 247 +++++++++++++++++++------- mm/swap.h | 30 +++- mm/swap_state.c | 22 ++- mm/swapfile.c | 13 +- mm/vmscan.c | 38 ++-- 18 files changed, 347 insertions(+), 128 deletions(-) -- Signature