diff options
author | Tejun Heo <tj@kernel.org> | 2014-05-16 19:22:48 +0200 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2014-05-16 19:22:48 +0200 |
commit | ea280e7b408ca0dad195ce9836feccdd1dc32131 (patch) | |
tree | 524a648df41fbd7dc270c225212d96d10b5a7815 /mm/oom_kill.c | |
parent | memcg: remove tasks/children test from mem_cgroup_force_empty() (diff) | |
download | linux-ea280e7b408ca0dad195ce9836feccdd1dc32131.tar.xz linux-ea280e7b408ca0dad195ce9836feccdd1dc32131.zip |
memcg: update memcg_has_children() to use css_next_child()
Currently, memcg_has_children() and mem_cgroup_hierarchy_write()
directly test cgroup->children for list emptiness. It's semantically
correct in traditional hierarchies as it actually wants to test for
any children dead or alive; however, cgroup->children is not a
published field and scheduled to go away.
This patch moves out .use_hierarchy test out of memcg_has_children()
and updates it to use css_next_child() to test whether there exists
any children. With .use_hierarchy test moved out, it can also be used
by mem_cgroup_hierarchy_write().
A side note: As .use_hierarchy is going away, it doesn't really matter
but I'm not sure about how it's used in __memcg_activate_kmem(). The
condition tested by memcg_has_children() is mushy when seen from
userland as its result is affected by dead csses which aren't visible
from userland. I think the rule would be a lot clearer if we have a
dedicated "freshly minted" flag which gets cleared when the first task
is migrated into it or the first child is created and then gate
activation with that.
v2: Added comment noting that testing use_hierarchy is the
responsibility of the callers of memcg_has_children() as suggested
by Michal Hocko.
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Michal Hocko <mhocko@suse.cz>
Acked-by: Li Zefan <lizefan@huawei.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Diffstat (limited to 'mm/oom_kill.c')
0 files changed, 0 insertions, 0 deletions