While discussing a series of hugetlb fixes in [1], it became evident that the hugetlb specific page state information is stored in a somewhat haphazard manner. Code dealing with state information would be easier to read, understand and maintain if this information was stored in a consistent manner.
This series uses page.private of the hugetlb head page for storing a set of hugetlb specific page flags. Routines are priovided for test, set and clear of the flags. [1] https://lore.kernel.org/r/20210106084739.63318-1-songmuc...@bytedance.com v2 -> v3 Fixed !CONFIG_HUGETLB_PAGE build bug and moved BUILD_BUG_ON to hugetlb_init (Oscar) Enhanced patch 3 (HPageTemporary flag) commit message (Oscar) Fixed typo enhanced coment in scan_movable_pages (Miaohe) Patch -> v2 Went back to functions similar to 'normal' page flags (Matthew/Muchun) Decided to leave check in unmap_and_move_huge_page and print warning RFC -> PATCH Simplified to use a single set of flag manipulation routines (Oscar) Moved flags and routines to hugetlb.h (Muchun) Changed format of page flag names (Muchun) Changed subpool routine names (Matthew) More comments in code (Oscar) Based on v5.11-rc4-mmotm-2021-01-21-20-07 Mike Kravetz (5): hugetlb: use page.private for hugetlb specific page flags hugetlb: convert page_huge_active() HPageMigratable flag hugetlb: only set HPageMigratable for migratable hstates hugetlb: convert PageHugeTemporary() to HPageTemporary flag hugetlb: convert PageHugeFreed to HPageFreed flag fs/hugetlbfs/inode.c | 14 +--- include/linux/hugetlb.h | 91 ++++++++++++++++++++++ include/linux/page-flags.h | 6 -- mm/hugetlb.c | 152 ++++++++++++------------------------- mm/memory_hotplug.c | 9 ++- mm/migrate.c | 9 +-- 6 files changed, 154 insertions(+), 127 deletions(-) -- 2.29.2