Continue the shrinkage of the struct page definition by getting rid of the 'first tail page' fields. I originally did this patch set before Hugh's rewrite of the subpages_mapcount, so it needed substantial updates; hope I didn't miss anything. I hope you like the new names for compound_mapcount and subpages_mapcount. Matthew Wilcox (Oracle) (22): mm: Remove folio_pincount_ptr() and head_compound_pincount() mm: Convert head_subpages_mapcount() into folio_nr_pages_mapped() doc: Clarify refcount section by referring to folios & pages mm: Convert total_compound_mapcount() to folio_total_mapcount() mm: Convert page_remove_rmap() to use a folio internally mm: Convert page_add_anon_rmap() to use a folio internally mm: Convert page_add_file_rmap() to use a folio internally mm: Add folio_add_new_anon_rmap() page_alloc: Use folio fields directly mm: Use a folio in hugepage_add_anon_rmap() and hugepage_add_new_anon_rmap() mm: Use entire_mapcount in __page_dup_rmap() mm/debug: Remove call to head_compound_mapcount() hugetlb: Remove uses of folio_mapcount_ptr mm: Convert page_mapcount() to use folio_entire_mapcount() mm: Remove head_compound_mapcount() and _ptr functions mm: Reimplement compound_order() mm: Reimplement compound_nr() mm: Convert set_compound_page_dtor() and set_compound_order() to folios mm: Convert is_transparent_hugepage() to use a folio mm: Convert destroy_large_folio() to use folio_dtor hugetlb: Remove uses of compound_dtor and compound_nr mm: Remove 'First tail page' members from struct page Documentation/core-api/pin_user_pages.rst | 29 ++-- Documentation/mm/transhuge.rst | 18 +-- include/linux/mm.h | 141 ++++++++---------- include/linux/mm_types.h | 53 +------ include/linux/rmap.h | 11 +- kernel/crash_core.c | 4 +- mm/debug.c | 8 +- mm/folio-compat.c | 8 ++ mm/gup.c | 8 +- mm/huge_memory.c | 12 +- mm/hugetlb.c | 24 ++-- mm/internal.h | 18 +++ mm/page_alloc.c | 23 +-- mm/rmap.c | 167 +++++++++++----------- 14 files changed, 250 insertions(+), 274 deletions(-) -- 2.35.1