We do not account/limit memcg::memory,::memsw for root memcg, so don't we do that for cache.
And memory.cache.current,memory.cache.max files are not available for root memcg as well. But there is one place - uncharge_folio() - where we forgot to put cache accounting under !mem_cgroup_is_root() check, so fix this. Fixes: 6a2ca4d515c5 ("mm: Memory cgroup page cache limit") https://virtuozzo.atlassian.net/browse/VSTOR-111756 Signed-off-by: Konstantin Khorenko <khore...@virtuozzo.com> Feature: mm: Memory cgroup page cache limit --- mm/memcontrol.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index f0b53e5f4d243..8a4fdef58743e 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -5499,11 +5499,12 @@ static void uncharge_folio(struct folio *folio, struct uncharge_gather *ug) folio->memcg_data = 0; obj_cgroup_put(objcg); } else { - if (folio_memcg_cache(folio)) - ug->nr_pgcache += nr_pages; /* LRU pages aren't accounted at the root level */ - if (!mem_cgroup_is_root(memcg)) + if (!mem_cgroup_is_root(memcg)) { ug->nr_memory += nr_pages; + if (folio_memcg_cache(folio)) + ug->nr_pgcache += nr_pages; + } ug->pgpgout++; WARN_ON_ONCE(folio_unqueue_deferred_split(folio)); -- 2.43.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel