mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
mm: memcontrol: fix page charging in page replacement
Patch series "memcontrol code cleanup and simplification", v3. This patch (of 8): The pages aren't accounted at the root level, so do not charge the page to the root memcg in page replacement. Although we do not display the value (mem_cgroup_usage) so there shouldn't be any actual problem, but there is a WARN_ON_ONCE in the page_counter_cancel(). Who knows if it will trigger? So it is better to fix it. Link: https://lkml.kernel.org/r/20210417043538.9793-1-songmuchun@bytedance.com Link: https://lkml.kernel.org/r/20210417043538.9793-2-songmuchun@bytedance.com Signed-off-by: Muchun Song <songmuchun@bytedance.com> Acked-by: Johannes Weiner <hannes@cmpxchg.org> Reviewed-by: Shakeel Butt <shakeelb@google.com> Acked-by: Roman Gushchin <guro@fb.com> Acked-by: Michal Hocko <mhocko@suse.com> Cc: Vladimir Davydov <vdavydov.dev@gmail.com> Cc: Xiongchun Duan <duanxiongchun@bytedance.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
c5c8b16b59
commit
8dc87c7d1f
@ -6984,9 +6984,11 @@ void mem_cgroup_migrate(struct page *oldpage, struct page *newpage)
|
||||
/* Force-charge the new page. The old one will be freed soon */
|
||||
nr_pages = thp_nr_pages(newpage);
|
||||
|
||||
page_counter_charge(&memcg->memory, nr_pages);
|
||||
if (do_memsw_account())
|
||||
page_counter_charge(&memcg->memsw, nr_pages);
|
||||
if (!mem_cgroup_is_root(memcg)) {
|
||||
page_counter_charge(&memcg->memory, nr_pages);
|
||||
if (do_memsw_account())
|
||||
page_counter_charge(&memcg->memsw, nr_pages);
|
||||
}
|
||||
|
||||
css_get(&memcg->css);
|
||||
commit_charge(newpage, memcg);
|
||||
|
Loading…
Reference in New Issue
Block a user