Continue the shrinkage of the struct page definition by getting rid of the 'first tail page' and 'second 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. Rebased on next-20230111. I also added Sidhartha's patch on the end to save him the inconvenience of resending it after this patchset lands. Matthew Wilcox (Oracle) (27): 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 doc: Correct struct folio kernel-doc mm: Move page->deferred_list to folio->_deferred_list mm/huge_memory: Remove page_deferred_list() mm/huge_memory: Convert get_deferred_split_queue() to take a folio mm: Convert deferred_split_huge_page() to deferred_split_folio() Sidhartha Kumar (1): mm: remove the hugetlb field from struct page Documentation/core-api/pin_user_pages.rst | 29 ++-- Documentation/mm/transhuge.rst | 24 ++-- include/linux/huge_mm.h | 13 +- include/linux/mm.h | 139 ++++++++---------- include/linux/mm_types.h | 87 +++-------- 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 | 97 ++++++------- mm/hugetlb.c | 24 ++-- mm/internal.h | 18 +++ mm/page_alloc.c | 23 +-- mm/rmap.c | 167 +++++++++++----------- 15 files changed, 308 insertions(+), 352 deletions(-) -- 2.35.1