This THP prep patchset changes several page cache iteration APIs to only return head pages. - It's only possible to tag head pages in the page cache, so only return head pages, not all their subpages. - Factor a lot of common code out of the various batch lookup routines - Add mapping_seek_hole_data() - Unify find_get_entries() and pagevec_lookup_entries() - Make find_get_entries only return head pages, like find_get_entry(). These are only loosely connected, but they seem to make sense together as a series. v4: - Add FGP_ENTRY, remove find_get_entry and find_lock_entry - Rename xas_find_get_entry to find_get_entry - Add "Optimise get_shadow_from_swap_cache" - Move "iomap: Use mapping_seek_hole_data" to this patch series - Rebase against next-20201112 Matthew Wilcox (Oracle) (16): mm: Make pagecache tagged lookups return only head pages mm/shmem: Use pagevec_lookup in shmem_unlock_mapping mm/swap: Optimise get_shadow_from_swap_cache mm: Add FGP_ENTRY mm/filemap: Rename find_get_entry to mapping_get_entry mm/filemap: Add helper for finding pages mm/filemap: Add mapping_seek_hole_data iomap: Use mapping_seek_hole_data mm: Add and use find_lock_entries mm: Add an 'end' parameter to find_get_entries mm: Add an 'end' parameter to pagevec_lookup_entries mm: Remove nr_entries parameter from pagevec_lookup_entries mm: Pass pvec directly to find_get_entries mm: Remove pagevec_lookup_entries mm/truncate,shmem: Handle truncates that split THPs mm/filemap: Return only head pages from find_get_entries fs/iomap/seek.c | 125 ++------------ include/linux/pagemap.h | 6 +- include/linux/pagevec.h | 4 - mm/filemap.c | 351 +++++++++++++++++++++++++--------------- mm/internal.h | 7 +- mm/shmem.c | 218 ++++++------------------- mm/swap.c | 38 +---- mm/swap_state.c | 7 +- mm/truncate.c | 249 +++++++++++----------------- 9 files changed, 390 insertions(+), 615 deletions(-) -- 2.28.0