diff options
author | Tejun Heo <tj@kernel.org> | 2014-02-08 10:36:58 -0500 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2014-02-08 10:36:58 -0500 |
commit | 073219e995b4a3f8cf1ce8228b7ef440b6994ac0 (patch) | |
tree | d140fc2e94bd8fd09270286b7267fb087a79f288 /mm/memcontrol.c | |
parent | 3ed80a62bf959d34ebd4d553b026fbe7e6fbcc54 (diff) |
cgroup: clean up cgroup_subsys names and initialization
cgroup_subsys is a bit messier than it needs to be.
* The name of a subsys can be different from its internal identifier
defined in cgroup_subsys.h. Most subsystems use the matching name
but three - cpu, memory and perf_event - use different ones.
* cgroup_subsys_id enums are postfixed with _subsys_id and each
cgroup_subsys is postfixed with _subsys. cgroup.h is widely
included throughout various subsystems, it doesn't and shouldn't
have claim on such generic names which don't have any qualifier
indicating that they belong to cgroup.
* cgroup_subsys->subsys_id should always equal the matching
cgroup_subsys_id enum; however, we require each controller to
initialize it and then BUG if they don't match, which is a bit
silly.
This patch cleans up cgroup_subsys names and initialization by doing
the followings.
* cgroup_subsys_id enums are now postfixed with _cgrp_id, and each
cgroup_subsys with _cgrp_subsys.
* With the above, renaming subsys identifiers to match the userland
visible names doesn't cause any naming conflicts. All non-matching
identifiers are renamed to match the official names.
cpu_cgroup -> cpu
mem_cgroup -> memory
perf -> perf_event
* controllers no longer need to initialize ->subsys_id and ->name.
They're generated in cgroup core and set automatically during boot.
* Redundant cgroup_subsys declarations removed.
* While updating BUG_ON()s in cgroup_init_early(), convert them to
WARN()s. BUGging that early during boot is stupid - the kernel
can't print anything, even through serial console and the trap
handler doesn't even link stack frame properly for back-tracing.
This patch doesn't introduce any behavior changes.
v2: Rebased on top of fe1217c4f3f7 ("net: net_cls: move cgroupfs
classid handling into core").
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: "David S. Miller" <davem@davemloft.net>
Acked-by: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Acked-by: Michal Hocko <mhocko@suse.cz>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Acked-by: Aristeu Rozanski <aris@redhat.com>
Acked-by: Ingo Molnar <mingo@redhat.com>
Acked-by: Li Zefan <lizefan@huawei.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Balbir Singh <bsingharora@gmail.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Serge E. Hallyn <serue@us.ibm.com>
Cc: Vivek Goyal <vgoyal@redhat.com>
Cc: Thomas Graf <tgraf@suug.ch>
Diffstat (limited to 'mm/memcontrol.c')
-rw-r--r-- | mm/memcontrol.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 53385cd4e6f0..04a97bce2270 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c | |||
@@ -66,8 +66,8 @@ | |||
66 | 66 | ||
67 | #include <trace/events/vmscan.h> | 67 | #include <trace/events/vmscan.h> |
68 | 68 | ||
69 | struct cgroup_subsys mem_cgroup_subsys __read_mostly; | 69 | struct cgroup_subsys memory_cgrp_subsys __read_mostly; |
70 | EXPORT_SYMBOL(mem_cgroup_subsys); | 70 | EXPORT_SYMBOL(memory_cgrp_subsys); |
71 | 71 | ||
72 | #define MEM_CGROUP_RECLAIM_RETRIES 5 | 72 | #define MEM_CGROUP_RECLAIM_RETRIES 5 |
73 | static struct mem_cgroup *root_mem_cgroup __read_mostly; | 73 | static struct mem_cgroup *root_mem_cgroup __read_mostly; |
@@ -538,7 +538,7 @@ static inline struct mem_cgroup *mem_cgroup_from_id(unsigned short id) | |||
538 | { | 538 | { |
539 | struct cgroup_subsys_state *css; | 539 | struct cgroup_subsys_state *css; |
540 | 540 | ||
541 | css = css_from_id(id - 1, &mem_cgroup_subsys); | 541 | css = css_from_id(id - 1, &memory_cgrp_subsys); |
542 | return mem_cgroup_from_css(css); | 542 | return mem_cgroup_from_css(css); |
543 | } | 543 | } |
544 | 544 | ||
@@ -1072,7 +1072,7 @@ struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p) | |||
1072 | if (unlikely(!p)) | 1072 | if (unlikely(!p)) |
1073 | return NULL; | 1073 | return NULL; |
1074 | 1074 | ||
1075 | return mem_cgroup_from_css(task_css(p, mem_cgroup_subsys_id)); | 1075 | return mem_cgroup_from_css(task_css(p, memory_cgrp_id)); |
1076 | } | 1076 | } |
1077 | 1077 | ||
1078 | struct mem_cgroup *try_get_mem_cgroup_from_mm(struct mm_struct *mm) | 1078 | struct mem_cgroup *try_get_mem_cgroup_from_mm(struct mm_struct *mm) |
@@ -1702,7 +1702,7 @@ void mem_cgroup_print_oom_info(struct mem_cgroup *memcg, struct task_struct *p) | |||
1702 | rcu_read_lock(); | 1702 | rcu_read_lock(); |
1703 | 1703 | ||
1704 | mem_cgrp = memcg->css.cgroup; | 1704 | mem_cgrp = memcg->css.cgroup; |
1705 | task_cgrp = task_cgroup(p, mem_cgroup_subsys_id); | 1705 | task_cgrp = task_cgroup(p, memory_cgrp_id); |
1706 | 1706 | ||
1707 | ret = cgroup_path(task_cgrp, memcg_name, PATH_MAX); | 1707 | ret = cgroup_path(task_cgrp, memcg_name, PATH_MAX); |
1708 | if (ret < 0) { | 1708 | if (ret < 0) { |
@@ -6187,7 +6187,7 @@ static int memcg_write_event_control(struct cgroup_subsys_state *css, | |||
6187 | 6187 | ||
6188 | ret = -EINVAL; | 6188 | ret = -EINVAL; |
6189 | cfile_css = css_from_dir(cfile.file->f_dentry->d_parent, | 6189 | cfile_css = css_from_dir(cfile.file->f_dentry->d_parent, |
6190 | &mem_cgroup_subsys); | 6190 | &memory_cgrp_subsys); |
6191 | if (cfile_css == css && css_tryget(css)) | 6191 | if (cfile_css == css && css_tryget(css)) |
6192 | ret = 0; | 6192 | ret = 0; |
6193 | 6193 | ||
@@ -6566,11 +6566,11 @@ mem_cgroup_css_online(struct cgroup_subsys_state *css) | |||
6566 | * unfortunate state in our controller. | 6566 | * unfortunate state in our controller. |
6567 | */ | 6567 | */ |
6568 | if (parent != root_mem_cgroup) | 6568 | if (parent != root_mem_cgroup) |
6569 | mem_cgroup_subsys.broken_hierarchy = true; | 6569 | memory_cgrp_subsys.broken_hierarchy = true; |
6570 | } | 6570 | } |
6571 | mutex_unlock(&memcg_create_mutex); | 6571 | mutex_unlock(&memcg_create_mutex); |
6572 | 6572 | ||
6573 | return memcg_init_kmem(memcg, &mem_cgroup_subsys); | 6573 | return memcg_init_kmem(memcg, &memory_cgrp_subsys); |
6574 | } | 6574 | } |
6575 | 6575 | ||
6576 | /* | 6576 | /* |
@@ -7264,9 +7264,7 @@ static void mem_cgroup_bind(struct cgroup_subsys_state *root_css) | |||
7264 | mem_cgroup_from_css(root_css)->use_hierarchy = true; | 7264 | mem_cgroup_from_css(root_css)->use_hierarchy = true; |
7265 | } | 7265 | } |
7266 | 7266 | ||
7267 | struct cgroup_subsys mem_cgroup_subsys = { | 7267 | struct cgroup_subsys memory_cgrp_subsys = { |
7268 | .name = "memory", | ||
7269 | .subsys_id = mem_cgroup_subsys_id, | ||
7270 | .css_alloc = mem_cgroup_css_alloc, | 7268 | .css_alloc = mem_cgroup_css_alloc, |
7271 | .css_online = mem_cgroup_css_online, | 7269 | .css_online = mem_cgroup_css_online, |
7272 | .css_offline = mem_cgroup_css_offline, | 7270 | .css_offline = mem_cgroup_css_offline, |
@@ -7292,7 +7290,7 @@ __setup("swapaccount=", enable_swap_account); | |||
7292 | 7290 | ||
7293 | static void __init memsw_file_init(void) | 7291 | static void __init memsw_file_init(void) |
7294 | { | 7292 | { |
7295 | WARN_ON(cgroup_add_cftypes(&mem_cgroup_subsys, memsw_cgroup_files)); | 7293 | WARN_ON(cgroup_add_cftypes(&memory_cgrp_subsys, memsw_cgroup_files)); |
7296 | } | 7294 | } |
7297 | 7295 | ||
7298 | static void __init enable_swap_cgroup(void) | 7296 | static void __init enable_swap_cgroup(void) |