Hello, Richard Palethorpe <rpalethorpe@xxxxxxx> writes: > Hello Roman, > > Roman Gushchin <guro@xxxxxx> writes: > >> - page_counter_init(&memcg->memory, NULL); >> - page_counter_init(&memcg->swap, NULL); >> - page_counter_init(&memcg->kmem, NULL); >> - page_counter_init(&memcg->tcpmem, NULL); >> + /* >> + * If use_hierarchy == false, consider all page counters direct >> + * descendants of the corresponding root level counters. >> + */ >> + page_counter_init(&memcg->memory, &root_mem_cgroup->memory); >> + page_counter_init(&memcg->swap, &root_mem_cgroup->swap); >> + page_counter_init(&memcg->kmem, &root_mem_cgroup->kmem); >> + page_counter_init(&memcg->tcpmem, &root_mem_cgroup->tcpmem); >> + >> /* >> * Deeper hierachy with use_hierarchy == false doesn't make >> * much sense so let cgroup subsystem know about this > > Perhaps in this case, where the hierarchy is broken, objcgs should also > be reparented directly to root? Otherwise it will still be possible to > underflow the counter in a descendant of root which has use_hierarchy=0, > but also has children. Sorry ignore me, parent_mem_cgroup already selects root. So in the case of a broken hierarchy objcgs are reparented directly to root. -- Thank you, Richard.