[PATCH v3 00/12] Overhaul multi-page lookups for THP

From: Matthew Wilcox (Oracle)
Date: Mon Oct 26 2020 - 00:15:01 EST


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. Another ~30 MM patches to come after this batch to
enable THPs for filesystems.

Matthew Wilcox (Oracle) (12):
mm: Make pagecache tagged lookups return only head pages
mm/shmem: Use pagevec_lookup in shmem_unlock_mapping
mm/filemap: Add helper for finding pages
mm/filemap: Add 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

include/linux/pagemap.h | 5 +-
include/linux/pagevec.h | 4 -
mm/filemap.c | 275 +++++++++++++++++++++++++++-------------
mm/internal.h | 5 +
mm/shmem.c | 213 +++++++------------------------
mm/swap.c | 38 +-----
mm/truncate.c | 249 ++++++++++++++----------------------
7 files changed, 335 insertions(+), 454 deletions(-)

--
2.28.0