On Tue, Oct 31, 2023 at 10:44:59AM -0700, Sourav Panda wrote: > +++ b/mm/hugetlb.c > @@ -1790,6 +1790,10 @@ static void __update_and_free_hugetlb_folio(struct hstate *h, > destroy_compound_gigantic_folio(folio, huge_page_order(h)); > free_gigantic_folio(folio, huge_page_order(h)); > } else { > +#ifndef CONFIG_SPARSEMEM_VMEMMAP > + __mod_node_page_state(NODE_DATA(page_to_nid(&folio->page)), > + NR_PAGE_METADATA, -huge_page_order(h)); > +#endif surely, __node_stat_sub_folio(folio, NR_PAGE_METADATA) > @@ -2175,7 +2179,9 @@ static struct folio *alloc_buddy_hugetlb_folio(struct hstate *h, > __count_vm_event(HTLB_BUDDY_PGALLOC_FAIL); > return NULL; > } > - > +#ifndef CONFIG_SPARSEMEM_VMEMMAP > + __mod_node_page_state(NODE_DATA(nid), NR_PAGE_METADATA, huge_page_order(h)); __node_stat_add_folio(folio, NR_PAGE_METADATA) (create the folio first ...) > + __mod_node_page_state(NODE_DATA(page_to_nid(page)), > + NR_PAGE_METADATA, 1); Are you allergic to page_pgdat()? > @@ -1656,6 +1657,8 @@ static void __init alloc_node_mem_map(struct pglist_data *pgdat) > panic("Failed to allocate %ld bytes for node %d memory map\n", > size, pgdat->node_id); > pgdat->node_mem_map = map + offset; > + mod_node_early_perpage_metadata(pgdat->node_id, > + PAGE_ALIGN(size) >> PAGE_SHIFT); I swear I said to use DIV_ROUND_UP(). Yes, I did: https://lore.kernel.org/linux-mm/ZS%2Fm1KRwTLkcJY8y@xxxxxxxxxxxxxxxxxxxx/ Why have you done something different and claimed I said to do it? You've annoyed me now; I shan't review the rest of this.