mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 10:04:04 +02:00
mm/hugetlb: unify restore reserve accounting for new allocations
Either hugetlb pages dequeued from hstate, or newly allocated from buddy, would require restore-reserve accounting to be managed properly. Merge the two paths on it. Add a small comment to make it slightly nicer. Link: https://lkml.kernel.org/r/20250107204002.2683356-8-peterx@redhat.com Signed-off-by: Peter Xu <peterx@redhat.com> Cc: Ackerley Tng <ackerleytng@google.com> Cc: Breno Leitao <leitao@debian.org> Cc: Muchun Song <muchun.song@linux.dev> Cc: Naoya Horiguchi <nao.horiguchi@gmail.com> Cc: Oscar Salvador <osalvador@suse.de> Cc: Rik van Riel <riel@surriel.com> Cc: Roman Gushchin <roman.gushchin@linux.dev> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
72d8f72631
commit
f931af2e41
18
mm/hugetlb.c
18
mm/hugetlb.c
|
|
@ -1365,11 +1365,6 @@ static struct folio *dequeue_hugetlb_folio_vma(struct hstate *h,
|
|||
folio = dequeue_hugetlb_folio_nodemask(h, gfp_mask,
|
||||
nid, nodemask);
|
||||
|
||||
if (folio && !gbl_chg) {
|
||||
folio_set_hugetlb_restore_reserve(folio);
|
||||
h->resv_huge_pages--;
|
||||
}
|
||||
|
||||
mpol_cond_put(mpol);
|
||||
return folio;
|
||||
|
||||
|
|
@ -3056,15 +3051,20 @@ struct folio *alloc_hugetlb_folio(struct vm_area_struct *vma,
|
|||
if (!folio)
|
||||
goto out_uncharge_cgroup;
|
||||
spin_lock_irq(&hugetlb_lock);
|
||||
if (!gbl_chg) {
|
||||
folio_set_hugetlb_restore_reserve(folio);
|
||||
h->resv_huge_pages--;
|
||||
}
|
||||
list_add(&folio->lru, &h->hugepage_activelist);
|
||||
folio_ref_unfreeze(folio, 1);
|
||||
/* Fall through */
|
||||
}
|
||||
|
||||
/*
|
||||
* Either dequeued or buddy-allocated folio needs to add special
|
||||
* mark to the folio when it consumes a global reservation.
|
||||
*/
|
||||
if (!gbl_chg) {
|
||||
folio_set_hugetlb_restore_reserve(folio);
|
||||
h->resv_huge_pages--;
|
||||
}
|
||||
|
||||
hugetlb_cgroup_commit_charge(idx, pages_per_huge_page(h), h_cg, folio);
|
||||
/* If allocation is not consuming a reservation, also store the
|
||||
* hugetlb_cgroup pointer on the page.
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user