aboutsummaryrefslogtreecommitdiffstats
path: root/mm/memcontrol.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2014-02-08 10:36:58 -0500
committerTejun Heo <tj@kernel.org>2014-02-08 10:36:58 -0500
commit073219e995b4a3f8cf1ce8228b7ef440b6994ac0 (patch)
treed140fc2e94bd8fd09270286b7267fb087a79f288 /mm/memcontrol.c
parent3ed80a62bf959d34ebd4d553b026fbe7e6fbcc54 (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.c22
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
69struct cgroup_subsys mem_cgroup_subsys __read_mostly; 69struct cgroup_subsys memory_cgrp_subsys __read_mostly;
70EXPORT_SYMBOL(mem_cgroup_subsys); 70EXPORT_SYMBOL(memory_cgrp_subsys);
71 71
72#define MEM_CGROUP_RECLAIM_RETRIES 5 72#define MEM_CGROUP_RECLAIM_RETRIES 5
73static struct mem_cgroup *root_mem_cgroup __read_mostly; 73static 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
1078struct mem_cgroup *try_get_mem_cgroup_from_mm(struct mm_struct *mm) 1078struct 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
7267struct cgroup_subsys mem_cgroup_subsys = { 7267struct 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
7293static void __init memsw_file_init(void) 7291static 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
7298static void __init enable_swap_cgroup(void) 7296static void __init enable_swap_cgroup(void)