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 /include | |
| 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 'include')
| -rw-r--r-- | include/linux/cgroup.h | 7 | ||||
| -rw-r--r-- | include/linux/cgroup_subsys.h | 6 | ||||
| -rw-r--r-- | include/linux/hugetlb_cgroup.h | 2 | ||||
| -rw-r--r-- | include/linux/memcontrol.h | 2 | ||||
| -rw-r--r-- | include/net/cls_cgroup.h | 2 | ||||
| -rw-r--r-- | include/net/netprio_cgroup.h | 2 |
6 files changed, 11 insertions, 10 deletions
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index d842a737d448..cd6611e622fd 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
| @@ -41,7 +41,7 @@ extern int cgroupstats_build(struct cgroupstats *stats, | |||
| 41 | extern int proc_cgroup_show(struct seq_file *, void *); | 41 | extern int proc_cgroup_show(struct seq_file *, void *); |
| 42 | 42 | ||
| 43 | /* define the enumeration of all cgroup subsystems */ | 43 | /* define the enumeration of all cgroup subsystems */ |
| 44 | #define SUBSYS(_x) _x ## _subsys_id, | 44 | #define SUBSYS(_x) _x ## _cgrp_id, |
| 45 | enum cgroup_subsys_id { | 45 | enum cgroup_subsys_id { |
| 46 | #include <linux/cgroup_subsys.h> | 46 | #include <linux/cgroup_subsys.h> |
| 47 | CGROUP_SUBSYS_COUNT, | 47 | CGROUP_SUBSYS_COUNT, |
| @@ -573,7 +573,6 @@ struct cgroup_subsys { | |||
| 573 | struct task_struct *task); | 573 | struct task_struct *task); |
| 574 | void (*bind)(struct cgroup_subsys_state *root_css); | 574 | void (*bind)(struct cgroup_subsys_state *root_css); |
| 575 | 575 | ||
| 576 | int subsys_id; | ||
| 577 | int disabled; | 576 | int disabled; |
| 578 | int early_init; | 577 | int early_init; |
| 579 | 578 | ||
| @@ -592,6 +591,8 @@ struct cgroup_subsys { | |||
| 592 | bool broken_hierarchy; | 591 | bool broken_hierarchy; |
| 593 | bool warned_broken_hierarchy; | 592 | bool warned_broken_hierarchy; |
| 594 | 593 | ||
| 594 | /* the following two fields are initialized automtically during boot */ | ||
| 595 | int subsys_id; | ||
| 595 | #define MAX_CGROUP_TYPE_NAMELEN 32 | 596 | #define MAX_CGROUP_TYPE_NAMELEN 32 |
| 596 | const char *name; | 597 | const char *name; |
| 597 | 598 | ||
| @@ -606,7 +607,7 @@ struct cgroup_subsys { | |||
| 606 | struct cftype_set base_cftset; | 607 | struct cftype_set base_cftset; |
| 607 | }; | 608 | }; |
| 608 | 609 | ||
| 609 | #define SUBSYS(_x) extern struct cgroup_subsys _x ## _subsys; | 610 | #define SUBSYS(_x) extern struct cgroup_subsys _x ## _cgrp_subsys; |
| 610 | #include <linux/cgroup_subsys.h> | 611 | #include <linux/cgroup_subsys.h> |
| 611 | #undef SUBSYS | 612 | #undef SUBSYS |
| 612 | 613 | ||
diff --git a/include/linux/cgroup_subsys.h b/include/linux/cgroup_subsys.h index 11c42f6a25a8..768fe44e19f0 100644 --- a/include/linux/cgroup_subsys.h +++ b/include/linux/cgroup_subsys.h | |||
| @@ -12,7 +12,7 @@ SUBSYS(debug) | |||
| 12 | #endif | 12 | #endif |
| 13 | 13 | ||
| 14 | #if IS_ENABLED(CONFIG_CGROUP_SCHED) | 14 | #if IS_ENABLED(CONFIG_CGROUP_SCHED) |
| 15 | SUBSYS(cpu_cgroup) | 15 | SUBSYS(cpu) |
| 16 | #endif | 16 | #endif |
| 17 | 17 | ||
| 18 | #if IS_ENABLED(CONFIG_CGROUP_CPUACCT) | 18 | #if IS_ENABLED(CONFIG_CGROUP_CPUACCT) |
| @@ -20,7 +20,7 @@ SUBSYS(cpuacct) | |||
| 20 | #endif | 20 | #endif |
| 21 | 21 | ||
| 22 | #if IS_ENABLED(CONFIG_MEMCG) | 22 | #if IS_ENABLED(CONFIG_MEMCG) |
| 23 | SUBSYS(mem_cgroup) | 23 | SUBSYS(memory) |
| 24 | #endif | 24 | #endif |
| 25 | 25 | ||
| 26 | #if IS_ENABLED(CONFIG_CGROUP_DEVICE) | 26 | #if IS_ENABLED(CONFIG_CGROUP_DEVICE) |
| @@ -40,7 +40,7 @@ SUBSYS(blkio) | |||
| 40 | #endif | 40 | #endif |
| 41 | 41 | ||
| 42 | #if IS_ENABLED(CONFIG_CGROUP_PERF) | 42 | #if IS_ENABLED(CONFIG_CGROUP_PERF) |
| 43 | SUBSYS(perf) | 43 | SUBSYS(perf_event) |
| 44 | #endif | 44 | #endif |
| 45 | 45 | ||
| 46 | #if IS_ENABLED(CONFIG_CGROUP_NET_PRIO) | 46 | #if IS_ENABLED(CONFIG_CGROUP_NET_PRIO) |
diff --git a/include/linux/hugetlb_cgroup.h b/include/linux/hugetlb_cgroup.h index 787bba3bf552..0129f89cf98d 100644 --- a/include/linux/hugetlb_cgroup.h +++ b/include/linux/hugetlb_cgroup.h | |||
| @@ -49,7 +49,7 @@ int set_hugetlb_cgroup(struct page *page, struct hugetlb_cgroup *h_cg) | |||
| 49 | 49 | ||
| 50 | static inline bool hugetlb_cgroup_disabled(void) | 50 | static inline bool hugetlb_cgroup_disabled(void) |
| 51 | { | 51 | { |
| 52 | if (hugetlb_subsys.disabled) | 52 | if (hugetlb_cgrp_subsys.disabled) |
| 53 | return true; | 53 | return true; |
| 54 | return false; | 54 | return false; |
| 55 | } | 55 | } |
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index abd0113b6620..eccfb4a4b379 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h | |||
| @@ -162,7 +162,7 @@ extern int do_swap_account; | |||
| 162 | 162 | ||
| 163 | static inline bool mem_cgroup_disabled(void) | 163 | static inline bool mem_cgroup_disabled(void) |
| 164 | { | 164 | { |
| 165 | if (mem_cgroup_subsys.disabled) | 165 | if (memory_cgrp_subsys.disabled) |
| 166 | return true; | 166 | return true; |
| 167 | return false; | 167 | return false; |
| 168 | } | 168 | } |
diff --git a/include/net/cls_cgroup.h b/include/net/cls_cgroup.h index 9cf2d5ef38d9..c15d39456e14 100644 --- a/include/net/cls_cgroup.h +++ b/include/net/cls_cgroup.h | |||
| @@ -34,7 +34,7 @@ static inline u32 task_cls_classid(struct task_struct *p) | |||
| 34 | return 0; | 34 | return 0; |
| 35 | 35 | ||
| 36 | rcu_read_lock(); | 36 | rcu_read_lock(); |
| 37 | classid = container_of(task_css(p, net_cls_subsys_id), | 37 | classid = container_of(task_css(p, net_cls_cgrp_id), |
| 38 | struct cgroup_cls_state, css)->classid; | 38 | struct cgroup_cls_state, css)->classid; |
| 39 | rcu_read_unlock(); | 39 | rcu_read_unlock(); |
| 40 | 40 | ||
diff --git a/include/net/netprio_cgroup.h b/include/net/netprio_cgroup.h index b7ff5bd3c3c3..f2a9597ff53c 100644 --- a/include/net/netprio_cgroup.h +++ b/include/net/netprio_cgroup.h | |||
| @@ -33,7 +33,7 @@ static inline u32 task_netprioidx(struct task_struct *p) | |||
| 33 | u32 idx; | 33 | u32 idx; |
| 34 | 34 | ||
| 35 | rcu_read_lock(); | 35 | rcu_read_lock(); |
| 36 | css = task_css(p, net_prio_subsys_id); | 36 | css = task_css(p, net_prio_cgrp_id); |
| 37 | idx = css->cgroup->id; | 37 | idx = css->cgroup->id; |
| 38 | rcu_read_unlock(); | 38 | rcu_read_unlock(); |
| 39 | return idx; | 39 | return idx; |
