Re: [PATCH v2 0/8] Return head pages from find_*_entry

From: Hugh Dickins
Date: Tue Sep 15 2020 - 04:26:09 EST


On Thu, 10 Sep 2020, Matthew Wilcox (Oracle) wrote:

> This patch series started out as part of the THP patch set, but it has
> some nice effects along the way and it seems worth splitting it out and
> submitting separately.
>
> Currently find_get_entry() and find_lock_entry() return the page
> corresponding to the requested index, but the first thing most callers do
> is find the head page, which we just threw away. As part of auditing
> all the callers, I found some misuses of the APIs and some plain
> inefficiencies that I've fixed.
>
> The diffstat is unflattering, but I added more kernel-doc and a new wrapper.
>
> v2:
> - Rework how shmem_getpage_gfp() handles getting a head page back from
> find_lock_entry()
> - Renamed find_get_swap_page() to find_get_incore_page()
> - Make sure find_get_incore_page() doesn't return a head page
> - Fix the missing include of linux/shmem_fs.h
> - Move find_get_entry and find_lock_entry prototypes to mm/internal.h
> - Rename thp_valid_index() to thp_contains()
> - Fix thp_contains() for hugetlbfs and swapcache
> - Add find_lock_head() wrapper around pagecache_get_page()
>
> Matthew Wilcox (Oracle) (8):
> mm: Factor find_get_incore_page out of mincore_page
> mm: Use find_get_incore_page in memcontrol
> mm: Optimise madvise WILLNEED
> proc: Optimise smaps for shmem entries
> i915: Use find_lock_page instead of find_lock_entry
> mm: Convert find_get_entry to return the head page
> mm/shmem: Return head page from find_lock_entry
> mm: Add find_lock_head
>
> drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 4 +--
> fs/proc/task_mmu.c | 8 +----
> include/linux/pagemap.h | 43 +++++++++++++++++-----
> include/linux/swap.h | 7 ++++
> mm/filemap.c | 44 +++++++++++------------
> mm/internal.h | 3 ++
> mm/madvise.c | 21 ++++++-----
> mm/memcontrol.c | 24 ++-----------
> mm/mincore.c | 28 ++-------------
> mm/shmem.c | 20 +++++------
> mm/swap_state.c | 32 +++++++++++++++++
> 11 files changed, 127 insertions(+), 107 deletions(-)
>
> --
> 2.28.0

I was testing mmotm today (plus the shmem.c and swap_state.c
fixes that you posted, but I did not try the madvise.c one) -
my usual tmpfs swapping loads (plus hyperactive khugepaged to
maximize the THPs). It behaved well, no problems found.

But I probably won't get to try your series of 12 for a few days.

Hugh