mm/hugetlb_cgroup: convert __set_hugetlb_cgroup() to folios
Patch series "convert hugetlb_cgroup helper functions to folios", v2. This patch series continues the conversion of hugetlb code from being managed in pages to folios by converting many of the hugetlb_cgroup helper functions to use folios. This allows the core hugetlb functions to pass in a folio to these helper functions. This patch (of 9); Change __set_hugetlb_cgroup() to use folios so it is explicit that the function operates on a head page. Link: https://lkml.kernel.org/r/20221101223059.460937-1-sidhartha.kumar@oracle.com Link: https://lkml.kernel.org/r/20221101223059.460937-2-sidhartha.kumar@oracle.com Signed-off-by: Sidhartha Kumar <sidhartha.kumar@oracle.com> Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com> Reviewed-by: Muchun Song <songmuchun@bytedance.com> Cc: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> Cc: Bui Quang Minh <minhquangbui99@gmail.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Miaohe Lin <linmiaohe@huawei.com> Cc: Mina Almasry <almasrymina@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Родитель
b2b23ba03c
Коммит
a098c97772
|
@ -90,31 +90,31 @@ hugetlb_cgroup_from_page_rsvd(struct page *page)
|
|||
return __hugetlb_cgroup_from_page(page, true);
|
||||
}
|
||||
|
||||
static inline void __set_hugetlb_cgroup(struct page *page,
|
||||
static inline void __set_hugetlb_cgroup(struct folio *folio,
|
||||
struct hugetlb_cgroup *h_cg, bool rsvd)
|
||||
{
|
||||
VM_BUG_ON_PAGE(!PageHuge(page), page);
|
||||
VM_BUG_ON_FOLIO(!folio_test_hugetlb(folio), folio);
|
||||
|
||||
if (compound_order(page) < HUGETLB_CGROUP_MIN_ORDER)
|
||||
if (folio_order(folio) < HUGETLB_CGROUP_MIN_ORDER)
|
||||
return;
|
||||
if (rsvd)
|
||||
set_page_private(page + SUBPAGE_INDEX_CGROUP_RSVD,
|
||||
set_page_private(folio_page(folio, SUBPAGE_INDEX_CGROUP_RSVD),
|
||||
(unsigned long)h_cg);
|
||||
else
|
||||
set_page_private(page + SUBPAGE_INDEX_CGROUP,
|
||||
set_page_private(folio_page(folio, SUBPAGE_INDEX_CGROUP),
|
||||
(unsigned long)h_cg);
|
||||
}
|
||||
|
||||
static inline void set_hugetlb_cgroup(struct page *page,
|
||||
struct hugetlb_cgroup *h_cg)
|
||||
{
|
||||
__set_hugetlb_cgroup(page, h_cg, false);
|
||||
__set_hugetlb_cgroup(page_folio(page), h_cg, false);
|
||||
}
|
||||
|
||||
static inline void set_hugetlb_cgroup_rsvd(struct page *page,
|
||||
struct hugetlb_cgroup *h_cg)
|
||||
{
|
||||
__set_hugetlb_cgroup(page, h_cg, true);
|
||||
__set_hugetlb_cgroup(page_folio(page), h_cg, true);
|
||||
}
|
||||
|
||||
static inline bool hugetlb_cgroup_disabled(void)
|
||||
|
|
|
@ -314,7 +314,7 @@ static void __hugetlb_cgroup_commit_charge(int idx, unsigned long nr_pages,
|
|||
if (hugetlb_cgroup_disabled() || !h_cg)
|
||||
return;
|
||||
|
||||
__set_hugetlb_cgroup(page, h_cg, rsvd);
|
||||
__set_hugetlb_cgroup(page_folio(page), h_cg, rsvd);
|
||||
if (!rsvd) {
|
||||
unsigned long usage =
|
||||
h_cg->nodeinfo[page_to_nid(page)]->usage[idx];
|
||||
|
@ -356,7 +356,7 @@ static void __hugetlb_cgroup_uncharge_page(int idx, unsigned long nr_pages,
|
|||
h_cg = __hugetlb_cgroup_from_page(page, rsvd);
|
||||
if (unlikely(!h_cg))
|
||||
return;
|
||||
__set_hugetlb_cgroup(page, NULL, rsvd);
|
||||
__set_hugetlb_cgroup(page_folio(page), NULL, rsvd);
|
||||
|
||||
page_counter_uncharge(__hugetlb_cgroup_counter_from_cgroup(h_cg, idx,
|
||||
rsvd),
|
||||
|
|
Загрузка…
Ссылка в новой задаче