Here is v2 of a series of mempolicy patches, this version based on mm-everything-2023-10-02-21-43, applicable also to next-20231003: 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. This replaces the "mempolicy: cleanups leading to NUMA mpol without vma" https://lore.kernel.org/linux-mm/2d872cef-7787-a7ca-10e-9d45a64c80b4@xxxxxxxxxx/ series of 12 based on 6.6-rc3 and posted on 2023-09-25. 01/12 hugetlbfs: drop shared NUMA mempolicy pretence v2: add reviewed-by Matthew hugetlb.h include pagemap.h for filemap_lock_folio() 02/12 kernfs: drop shared NUMA mempolicy hooks v2: add reviewed-by Matthew 03/12 mempolicy: fix migrate_pages(2) syscall return v2: add reviewed-by Matthew replace Yang Shi's qp->has_unmovable by qp->nr_failed remove ptl,addr,end to queue_folios_pmd() per Huang,Ying reword comments above queue_folios_pte_range() fix incorrect migrate_folio_add()ing per Huang,Ying which also fixes qp->nr_failed as count of folios 04/12 mempolicy trivia: delete those ancient pr_debug()s v2: add reviewed-by Matthew 05/12 mempolicy trivia: slightly more consistent naming v2: add reviewed-by Matthew 06/12 mempolicy trivia: use pgoff_t in shared mempolicy tree v2: declare struct shared_policy (the root) before struct sp_node reformat sp_lookup, mpol_shared_policy_lookup decls per Matthew 07/12 mempolicy: mpol_shared_policy_init() without pseudo-vma v2: sn,npol instead of n,new (but no optimization) per Matthew 08/12 mempolicy: remove confusing MPOL_MF_LAZY dead code v2: add reviewed-by Matthew 09/12 mm: add page_rmappable_folio() wrapper v2: move page_rmappable_folio() to mm/internal.h per Matthew 10/12 mempolicy: alloc_pages_mpol() for NUMA policy without vma v2: adjust to fit on top of earlier mm-unstable mods 11/12 mempolicy: mmap_lock is not needed while migrating folios v2: remove HugeTLBfs special casing of src->index 12/12 mempolicy: migration attempt to match interleave nodes v2: remove HugeTLBfs special casing of page->index fs/hugetlbfs/inode.c | 41 +- fs/kernfs/file.c | 49 -- fs/proc/task_mmu.c | 5 +- include/linux/gfp.h | 10 +- include/linux/hugetlb.h | 12 +- include/linux/mempolicy.h | 44 +- include/linux/mm.h | 2 +- include/uapi/linux/mempolicy.h | 2 +- ipc/shm.c | 21 +- mm/hugetlb.c | 38 +- mm/internal.h | 9 + mm/mempolicy.c | 988 ++++++++++++++++------------------- mm/page_alloc.c | 8 +- mm/shmem.c | 92 ++-- mm/swap.h | 9 +- mm/swap_state.c | 83 +-- 16 files changed, 630 insertions(+), 783 deletions(-) Hugh