On Tue, Jan 03, 2023 at 01:13:35PM -0600, Sidhartha Kumar wrote: > +static struct folio *dequeue_hugetlb_folio_node_exact(struct hstate *h, > + int nid) > { > struct page *page; > + struct folio *folio; > bool pin = !!(current->flags & PF_MEMALLOC_PIN); > > lockdep_assert_held(&hugetlb_lock); > list_for_each_entry(page, &h->hugepage_freelists[nid], lru) { > - if (pin && !is_longterm_pinnable_page(page)) > + folio = page_folio(page); I'd argue that you can pull folios directly off the hugepage_freelists. Since they're attached through the 'lru', you know they're not tail pages, because lru.prev aliases with compound_head. The rest looks good.