[PATCH v4 00/16] Overhaul multi-page lookups for THP
From: Matthew Wilcox (Oracle)
Date: Thu Nov 12 2020 - 16:27:35 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.
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