From: "Matthew Wilcox (Oracle)" <willy@xxxxxxxxxxxxx> This is an attempt to add a ->readahead op to replace ->readpages. I've converted two users, iomap/xfs and cifs. The cifs conversion is lacking fscache support, and that's just because I didn't want to do that work; I don't believe there's anything fundamental to it. But I wanted to do iomap because it is The Infrastructure Of The Future and cifs because it is the sole remaining user of add_to_page_cache_locked(), which enables the last two patches in the series. By the way, that gives CIFS access to the workingset shadow infrastructure, which it had to ignore before because it couldn't put pages onto the lru list at the right time. v2: Chris asked me to show what this would look like if we just have the implementation look up the pages in the page cache, and I managed to figure out some things I'd done wrong last time. It's even simpler than v1 (net 104 lines deleted). Matthew Wilcox (Oracle) (9): mm: Fix the return type of __do_page_cache_readahead readahead: Ignore return value of ->readpages XArray: Add xarray_for_each_range readahead: Put pages in cache earlier mm: Add readahead address space operation iomap,xfs: Convert from readpages to readahead cifs: Convert from readpages to readahead mm: Remove add_to_page_cache_locked mm: Unify all add_to_page_cache variants Documentation/core-api/xarray.rst | 10 +- Documentation/filesystems/locking.rst | 7 +- Documentation/filesystems/vfs.rst | 11 ++ fs/cifs/file.c | 143 +++++--------------------- fs/iomap/buffered-io.c | 72 +++---------- fs/iomap/trace.h | 2 +- fs/xfs/xfs_aops.c | 10 +- include/linux/fs.h | 2 + include/linux/iomap.h | 2 +- include/linux/pagemap.h | 25 ++--- include/linux/xarray.h | 30 ++++++ mm/filemap.c | 72 ++++--------- mm/internal.h | 2 +- mm/readahead.c | 76 +++++++++----- 14 files changed, 180 insertions(+), 284 deletions(-) -- 2.24.1