As I threatened ;-) previously, here are a number of filesystem changes that I'm going to try to push into 5.18. Trond's going to take the first two through the NFS tree, so I'll drop them as soon as they appear in -next. I should probably send patches 3 and 6 as bugfixes before 5.18. Review & testing appreciated. This is all against current Linus tree as of today. xfstests running now against xfs, with a root of ext4, so that's at least partially tested. I probably shan't do detailed testing of any of the filesystems I modified here since it's pretty much all mechanical. Matthew Wilcox (Oracle) (56): Convert NFS from readpages to readahead readahead: Remove read_cache_pages() iomap: Fix iomap_invalidatepage tracepoint fs: read_mapping_page() should take a struct file argument fs/remap_range: Pass the file pointer to read_mapping_folio() scsicam: Fix use of page cache buffer: Add folio_buffers() fs: Convert is_partially_uptodate to folios fs: Turn do_invalidatepage() into folio_invalidate() btrfs: Use folio_invalidate() ceph: Use folio_invalidate() ext4: Use folio_invalidate() fs: Add invalidate_folio() aops method iomap: Remove iomap_invalidatepage() fs: Turn block_invalidatepage into block_invalidate_folio fs: Remove noop_invalidatepage() 9p: Convert to invalidate_folio afs: Convert directory aops to invalidate_folio afs: Convert invalidatepage to invalidate_folio btrfs: Convert from invalidatepage to invalidate_folio ceph: Convert from invalidatepage to invalidate_folio cifs: Convert from invalidatepage to invalidate_folio erofs: Convert from invalidatepage to invalidate_folio ext4: Convert invalidatepage to invalidate_folio f2fs: Convert invalidatepage to invalidate_folio gfs2: Convert invalidatepage to invalidate_folio jfs: Convert from invalidatepage to invalidate_folio nfs: Convert from invalidatepage to invalidate_folio orangefs: Convert from invalidatepage to invalidate_folio reiserfs: Convert from invalidatepage to invalidate_folio ubifs: Convert from invalidatepage to invalidate_folio fs: Remove aops->invalidatepage fs: Add aops->launder_folio 9p: Convert from launder_page to launder_folio afs: Convert from launder_page to launder_folio cifs: Convert from launder_page to launder_folio fuse: Convert from launder_page to launder_folio nfs: Convert from launder_page to launder_folio orangefs: Convert launder_page to launder_folio fs: Remove aops->launder_page fs: Add aops->dirty_folio fscache: Convert fscache_set_page_dirty() to fscache_dirty_folio() btrfs: Convert from set_page_dirty to dirty_folio fs: Convert trivial uses of __set_page_dirty_nobuffers to filemap_dirty_folio btrfs: Convert extent_range_redirty_for_io() to use folios afs: Convert afs_dir_set_page_dirty() to afs_dir_dirty_folio() f2fs: Convert f2fs_set_meta_page_dirty to f2fs_dirty_meta_folio f2fs: Convert f2fs_set_data_page_dirty to f2fs_dirty_data_folio f2fs: Convert f2fs_set_node_page_dirty to f2fs_dirty_node_folio ubifs: Convert ubifs_set_page_dirty to ubifs_dirty_folio mm: Convert swap_set_page_dirty() to swap_dirty_folio() nilfs: Convert nilfs_set_page_dirty() to nilfs_dirty_folio() fs: Convert __set_page_dirty_buffers to block_dirty_folio fs: Convert __set_page_dirty_no_writeback to noop_dirty_folio fb_defio: Use noop_dirty_folio() fs: Remove aops ->set_page_dirty .../filesystems/caching/netfs-api.rst | 7 +- Documentation/filesystems/locking.rst | 42 +++--- Documentation/filesystems/vfs.rst | 46 +++---- block/fops.c | 3 +- drivers/dax/device.c | 3 +- drivers/scsi/scsicam.c | 8 +- drivers/video/fbdev/core/fb_defio.c | 9 +- fs/9p/vfs_addr.c | 37 ++--- fs/adfs/inode.c | 3 +- fs/affs/file.c | 6 +- fs/afs/dir.c | 18 +-- fs/afs/file.c | 28 ++-- fs/afs/internal.h | 6 +- fs/afs/write.c | 10 +- fs/aio.c | 2 +- fs/bfs/file.c | 3 +- fs/btrfs/ctree.h | 3 + fs/btrfs/disk-io.c | 47 +++---- fs/btrfs/extent-io-tree.h | 4 +- fs/btrfs/extent_io.c | 35 ++--- fs/btrfs/inode.c | 84 ++++++------ fs/buffer.c | 96 +++++++------ fs/ceph/addr.c | 83 ++++++------ fs/ceph/cache.h | 13 +- fs/cifs/file.c | 39 +++--- fs/ecryptfs/mmap.c | 5 +- fs/erofs/super.c | 17 ++- fs/exfat/inode.c | 3 +- fs/ext2/inode.c | 9 +- fs/ext4/inode.c | 127 +++++++++--------- fs/f2fs/checkpoint.c | 31 ++--- fs/f2fs/compress.c | 2 +- fs/f2fs/data.c | 56 ++++---- fs/f2fs/f2fs.h | 5 +- fs/f2fs/node.c | 29 ++-- fs/fat/inode.c | 3 +- fs/fscache/io.c | 28 ++-- fs/fuse/dax.c | 3 +- fs/fuse/dir.c | 2 +- fs/fuse/file.c | 16 +-- fs/gfs2/aops.c | 43 +++--- fs/gfs2/meta_io.c | 6 +- fs/hfs/inode.c | 6 +- fs/hfsplus/inode.c | 6 +- fs/hostfs/hostfs_kern.c | 2 +- fs/hpfs/file.c | 3 +- fs/hugetlbfs/inode.c | 2 +- fs/iomap/buffered-io.c | 46 +++---- fs/iomap/trace.h | 2 +- fs/jbd2/journal.c | 2 +- fs/jbd2/transaction.c | 31 +++-- fs/jfs/inode.c | 3 +- fs/jfs/jfs_metapage.c | 14 +- fs/libfs.c | 15 +-- fs/minix/inode.c | 3 +- fs/mpage.c | 2 +- fs/nfs/file.c | 34 ++--- fs/nfs/nfstrace.h | 6 +- fs/nfs/read.c | 21 +-- fs/nfs/write.c | 8 +- fs/nilfs2/inode.c | 41 +++--- fs/nilfs2/mdt.c | 3 +- fs/ntfs/aops.c | 21 ++- fs/ntfs3/inode.c | 2 +- fs/ocfs2/aops.c | 4 +- fs/omfs/file.c | 3 +- fs/orangefs/inode.c | 121 ++++++++--------- fs/reiserfs/inode.c | 40 +++--- fs/reiserfs/journal.c | 4 +- fs/remap_range.c | 16 +-- fs/sysv/itree.c | 3 +- fs/ubifs/file.c | 34 ++--- fs/udf/file.c | 3 +- fs/udf/inode.c | 3 +- fs/ufs/inode.c | 3 +- fs/vboxsf/file.c | 2 +- fs/xfs/xfs_aops.c | 7 +- fs/zonefs/super.c | 4 +- include/linux/buffer_head.h | 9 +- include/linux/fs.h | 14 +- include/linux/fscache.h | 8 +- include/linux/iomap.h | 5 +- include/linux/jbd2.h | 4 +- include/linux/mm.h | 3 - include/linux/nfs_fs.h | 5 +- include/linux/pagemap.h | 31 ++++- include/linux/swap.h | 2 +- include/trace/events/ext4.h | 30 ++--- mm/filemap.c | 8 +- mm/page-writeback.c | 36 +++-- mm/page_io.c | 15 ++- mm/readahead.c | 76 ----------- mm/rmap.c | 4 +- mm/secretmem.c | 2 +- mm/shmem.c | 2 +- mm/swap_state.c | 2 +- mm/truncate.c | 42 +++--- 97 files changed, 871 insertions(+), 967 deletions(-) -- 2.34.1