On Fri, Nov 08, 2024 at 01:29:44PM -0800, Joshua Hahn wrote: > This patch isolates the check for whether memcg accounts hugetlb. > This condition can only be true if the memcg mount option > memory_hugetlb_accounting is on, which includes hugetlb usage > in memory.current. > > Signed-off-by: Joshua Hahn <joshua.hahnjy@xxxxxxxxx> > > --- > mm/memcontrol.c | 17 ++++++++++++++--- > 1 file changed, 14 insertions(+), 3 deletions(-) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index f3a9653cef0e..97f63ec9c9fb 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -1425,6 +1425,9 @@ unsigned long memcg_page_state_local_output(struct mem_cgroup *memcg, int item) > memcg_page_state_output_unit(item); > } > > +/* Forward declaration */ > +bool memcg_accounts_hugetlb(void); No need for forward declaration. Just define it here and make it static. > + > static void memcg_stat_format(struct mem_cgroup *memcg, struct seq_buf *s) > { > int i; > @@ -1446,7 +1449,7 @@ static void memcg_stat_format(struct mem_cgroup *memcg, struct seq_buf *s) > > #ifdef CONFIG_HUGETLB_PAGE > if (unlikely(memory_stats[i].idx == NR_HUGETLB) && > - !(cgrp_dfl_root.flags & CGRP_ROOT_MEMORY_HUGETLB_ACCOUNTING)) > + !memcg_accounts_hugetlb()) > continue; > #endif > size = memcg_page_state_output(memcg, memory_stats[i].idx); > @@ -4483,6 +4486,15 @@ int __mem_cgroup_charge(struct folio *folio, struct mm_struct *mm, gfp_t gfp) > return ret; > } > > +bool memcg_accounts_hugetlb(void) > +{ > +#ifdef CONFIG_HUGETLB_PAGE > + return cgrp_dfl_root.flags & CGRP_ROOT_MEMORY_HUGETLB_ACCOUNTING; > +#else > + return false; > +#endif > +} > + > /** > * mem_cgroup_hugetlb_try_charge - try to charge the memcg for a hugetlb folio > * @memcg: memcg to charge. > @@ -4508,8 +4520,7 @@ int mem_cgroup_hugetlb_try_charge(struct mem_cgroup *memcg, gfp_t gfp, > * but do not attempt to commit charge later (or cancel on error) either. > */ > if (mem_cgroup_disabled() || !memcg || > - !cgroup_subsys_on_dfl(memory_cgrp_subsys) || > - !(cgrp_dfl_root.flags & CGRP_ROOT_MEMORY_HUGETLB_ACCOUNTING)) > + !cgroup_subsys_on_dfl(memory_cgrp_subsys) || !memcg_accounts_hugetlb()) > return -EOPNOTSUPP; > > if (try_charge(memcg, gfp, nr_pages)) > -- > 2.43.5 >