[PATCH 00/12] mempolicy: cleanups leading to NUMA mpol without vma

From: Hugh Dickins
Date: Mon Sep 25 2023 - 04:18:12 EST


Here is a series of patches based on v6.6-rc3: mostly cleanups in
mm/mempolicy.c, but finally removing the pseudo-vma from shmem folio
allocation, and removing the mmap_lock around folio migration for
mbind and migrate_pages syscalls.

Applies cleanly to any v6.6-rc so far, but not quite to mm-unstable or
linux-next: a couple of rejects in mm/mempolicy.c (clashing with the
vma_start_write() in do_mbind() and the foliation in mpol_misplaced())
and in mm/swap_state.c (clashing with zswap mods). Adjustments will
also be needed if hugetlb page->index changes to PAGE_SIZE: interleave
has to co-operate with that. After some review, a v2 will probably be
issued, based then on mm-unstable.

01/12 hugetlbfs: drop shared NUMA mempolicy pretence
02/12 kernfs: drop shared NUMA mempolicy hooks
03/12 mempolicy: fix migrate_pages(2) syscall return
04/12 mempolicy trivia: delete those ancient pr_debug()s
05/12 mempolicy trivia: slightly more consistent naming
06/12 mempolicy trivia: use pgoff_t in shared mempolicy tree
07/12 mempolicy: mpol_shared_policy_init() without pseudo-vma
08/12 mempolicy: remove confusing MPOL_MF_LAZY dead code
09/12 mm: add page_rmappable_folio() wrapper
10/12 mempolicy: alloc_pages_mpol() for NUMA policy without vma
11/12 mempolicy: mmap_lock is not needed while migrating folios
12/12 mempolicy: migration attempt to match interleave nodes

fs/hugetlbfs/inode.c | 41 +-
fs/kernfs/file.c | 49 --
fs/proc/task_mmu.c | 5 +-
include/linux/gfp.h | 10 +-
include/linux/huge_mm.h | 13 +
include/linux/hugetlb.h | 11 -
include/linux/mempolicy.h | 36 +-
include/linux/mm.h | 2 +-
include/uapi/linux/mempolicy.h | 2 +-
ipc/shm.c | 21 +-
mm/hugetlb.c | 38 +-
mm/mempolicy.c | 952 ++++++++++++++++-------------------
mm/page_alloc.c | 8 +-
mm/shmem.c | 102 ++--
mm/swap.h | 9 +-
mm/swap_state.c | 86 ++--
16 files changed, 617 insertions(+), 768 deletions(-)

Hugh