Re: [PATCH 3/6] cgroup: clean up cgroup_subsys names and initialization

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tuesday, January 28, 2014 06:43:58 PM Tejun Heo wrote:
> 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@xxxxxxxxxx>
> Acked-by: Neil Horman <nhorman@xxxxxxxxxxxxx>
> Acked-by: "David S. Miller" <davem@xxxxxxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Cc: Li Zefan <lizefan@xxxxxxxxxx>
> Cc: Johannes Weiner <hannes@xxxxxxxxxxx>
> Cc: Michal Hocko <mhocko@xxxxxxx>
> Cc: Balbir Singh <bsingharora@xxxxxxxxx>
> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx>
> Cc: Aristeu Rozanski <aris@xxxxxxxxxx>
> Cc: Serge E. Hallyn <serue@xxxxxxxxxx>
> Cc: "Rafael J. Wysocki" <rjw@xxxxxxxxxxxxx>
> Cc: Vivek Goyal <vgoyal@xxxxxxxxxx>
> Cc: Thomas Graf <tgraf@xxxxxxx>

Acked-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>

for the freezer changes (I guess that's what you need from me).

Thanks!

> ---
>  block/blk-cgroup.c             |  8 +++-----
>  block/blk-cgroup.h             |  2 +-
>  fs/bio.c                       |  2 +-
>  include/linux/cgroup.h         |  7 ++++---
>  include/linux/cgroup_subsys.h  |  6 +++---
>  include/linux/hugetlb_cgroup.h |  2 +-
>  include/linux/memcontrol.h     |  2 +-
>  include/net/cls_cgroup.h       |  2 +-
>  include/net/netprio_cgroup.h   |  2 +-
>  kernel/cgroup.c                | 34 ++++++++++++++++++++--------------
>  kernel/cgroup_freezer.c        |  8 ++------
>  kernel/cpuset.c                | 10 ++++------
>  kernel/events/core.c           |  8 +++-----
>  kernel/sched/core.c            |  6 ++----
>  kernel/sched/cpuacct.c         |  6 ++----
>  mm/hugetlb_cgroup.c            |  9 +++------
>  mm/memcontrol.c                | 22 ++++++++++------------
>  net/core/netclassid_cgroup.c   |  6 ++----
>  net/core/netprio_cgroup.c      |  4 +---
>  net/ipv4/tcp_memcontrol.c      |  2 +-
>  security/device_cgroup.c       |  8 ++------
>  21 files changed, 68 insertions(+), 88 deletions(-)
> 
> diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
> index 660d419..1cef07c 100644
> --- a/block/blk-cgroup.c
> +++ b/block/blk-cgroup.c
> @@ -906,16 +906,14 @@ static int blkcg_can_attach(struct cgroup_subsys_state *css,
>  	return ret;
>  }
>  
> -struct cgroup_subsys blkio_subsys = {
> -	.name = "blkio",
> +struct cgroup_subsys blkio_cgrp_subsys = {
>  	.css_alloc = blkcg_css_alloc,
>  	.css_offline = blkcg_css_offline,
>  	.css_free = blkcg_css_free,
>  	.can_attach = blkcg_can_attach,
> -	.subsys_id = blkio_subsys_id,
>  	.base_cftypes = blkcg_files,
>  };
> -EXPORT_SYMBOL_GPL(blkio_subsys);
> +EXPORT_SYMBOL_GPL(blkio_cgrp_subsys);
>  
>  /**
>   * blkcg_activate_policy - activate a blkcg policy on a request_queue
> @@ -1105,7 +1103,7 @@ int blkcg_policy_register(struct blkcg_policy *pol)
>  
>  	/* everything is in place, add intf files for the new policy */
>  	if (pol->cftypes)
> -		WARN_ON(cgroup_add_cftypes(&blkio_subsys, pol->cftypes));
> +		WARN_ON(cgroup_add_cftypes(&blkio_cgrp_subsys, pol->cftypes));
>  	ret = 0;
>  out_unlock:
>  	mutex_unlock(&blkcg_pol_mutex);
> diff --git a/block/blk-cgroup.h b/block/blk-cgroup.h
> index 86154ea..453b528 100644
> --- a/block/blk-cgroup.h
> +++ b/block/blk-cgroup.h
> @@ -186,7 +186,7 @@ static inline struct blkcg *css_to_blkcg(struct cgroup_subsys_state *css)
>  
>  static inline struct blkcg *task_blkcg(struct task_struct *tsk)
>  {
> -	return css_to_blkcg(task_css(tsk, blkio_subsys_id));
> +	return css_to_blkcg(task_css(tsk, blkio_cgrp_id));
>  }
>  
>  static inline struct blkcg *bio_blkcg(struct bio *bio)
> diff --git a/fs/bio.c b/fs/bio.c
> index 33d79a4..26a62d7 100644
> --- a/fs/bio.c
> +++ b/fs/bio.c
> @@ -2002,7 +2002,7 @@ int bio_associate_current(struct bio *bio)
>  
>  	/* associate blkcg if exists */
>  	rcu_read_lock();
> -	css = task_css(current, blkio_subsys_id);
> +	css = task_css(current, blkio_cgrp_id);
>  	if (css && css_tryget(css))
>  		bio->bi_css = css;
>  	rcu_read_unlock();
> diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
> index d842a73..cd6611e 100644
> --- a/include/linux/cgroup.h
> +++ b/include/linux/cgroup.h
> @@ -41,7 +41,7 @@ extern int cgroupstats_build(struct cgroupstats *stats,
>  extern int proc_cgroup_show(struct seq_file *, void *);
>  
>  /* define the enumeration of all cgroup subsystems */
> -#define SUBSYS(_x) _x ## _subsys_id,
> +#define SUBSYS(_x) _x ## _cgrp_id,
>  enum cgroup_subsys_id {
>  #include <linux/cgroup_subsys.h>
>  	CGROUP_SUBSYS_COUNT,
> @@ -573,7 +573,6 @@ struct cgroup_subsys {
>  		     struct task_struct *task);
>  	void (*bind)(struct cgroup_subsys_state *root_css);
>  
> -	int subsys_id;
>  	int disabled;
>  	int early_init;
>  
> @@ -592,6 +591,8 @@ struct cgroup_subsys {
>  	bool broken_hierarchy;
>  	bool warned_broken_hierarchy;
>  
> +	/* the following two fields are initialized automtically during boot */
> +	int subsys_id;
>  #define MAX_CGROUP_TYPE_NAMELEN 32
>  	const char *name;
>  
> @@ -606,7 +607,7 @@ struct cgroup_subsys {
>  	struct cftype_set base_cftset;
>  };
>  
> -#define SUBSYS(_x) extern struct cgroup_subsys _x ## _subsys;
> +#define SUBSYS(_x) extern struct cgroup_subsys _x ## _cgrp_subsys;
>  #include <linux/cgroup_subsys.h>
>  #undef SUBSYS
>  
> diff --git a/include/linux/cgroup_subsys.h b/include/linux/cgroup_subsys.h
> index 11c42f6..768fe44 100644
> --- a/include/linux/cgroup_subsys.h
> +++ b/include/linux/cgroup_subsys.h
> @@ -12,7 +12,7 @@ SUBSYS(debug)
>  #endif
>  
>  #if IS_ENABLED(CONFIG_CGROUP_SCHED)
> -SUBSYS(cpu_cgroup)
> +SUBSYS(cpu)
>  #endif
>  
>  #if IS_ENABLED(CONFIG_CGROUP_CPUACCT)
> @@ -20,7 +20,7 @@ SUBSYS(cpuacct)
>  #endif
>  
>  #if IS_ENABLED(CONFIG_MEMCG)
> -SUBSYS(mem_cgroup)
> +SUBSYS(memory)
>  #endif
>  
>  #if IS_ENABLED(CONFIG_CGROUP_DEVICE)
> @@ -40,7 +40,7 @@ SUBSYS(blkio)
>  #endif
>  
>  #if IS_ENABLED(CONFIG_CGROUP_PERF)
> -SUBSYS(perf)
> +SUBSYS(perf_event)
>  #endif
>  
>  #if IS_ENABLED(CONFIG_CGROUP_NET_PRIO)
> diff --git a/include/linux/hugetlb_cgroup.h b/include/linux/hugetlb_cgroup.h
> index 787bba3..0129f89 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)
>  
>  static inline bool hugetlb_cgroup_disabled(void)
>  {
> -	if (hugetlb_subsys.disabled)
> +	if (hugetlb_cgrp_subsys.disabled)
>  		return true;
>  	return false;
>  }
> diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
> index abd0113..eccfb4a 100644
> --- a/include/linux/memcontrol.h
> +++ b/include/linux/memcontrol.h
> @@ -162,7 +162,7 @@ extern int do_swap_account;
>  
>  static inline bool mem_cgroup_disabled(void)
>  {
> -	if (mem_cgroup_subsys.disabled)
> +	if (memory_cgrp_subsys.disabled)
>  		return true;
>  	return false;
>  }
> diff --git a/include/net/cls_cgroup.h b/include/net/cls_cgroup.h
> index 9cf2d5e..c15d394 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)
>  		return 0;
>  
>  	rcu_read_lock();
> -	classid = container_of(task_css(p, net_cls_subsys_id),
> +	classid = container_of(task_css(p, net_cls_cgrp_id),
>  			       struct cgroup_cls_state, css)->classid;
>  	rcu_read_unlock();
>  
> diff --git a/include/net/netprio_cgroup.h b/include/net/netprio_cgroup.h
> index b7ff5bd..f2a9597 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)
>  	u32 idx;
>  
>  	rcu_read_lock();
> -	css = task_css(p, net_prio_subsys_id);
> +	css = task_css(p, net_prio_cgrp_id);
>  	idx = css->cgroup->id;
>  	rcu_read_unlock();
>  	return idx;
> diff --git a/kernel/cgroup.c b/kernel/cgroup.c
> index 81ce64a..6734cfa 100644
> --- a/kernel/cgroup.c
> +++ b/kernel/cgroup.c
> @@ -120,10 +120,18 @@ static struct workqueue_struct *cgroup_destroy_wq;
>  static struct workqueue_struct *cgroup_pidlist_destroy_wq;
>  
>  /* generate an array of cgroup subsystem pointers */
> -#define SUBSYS(_x) [_x ## _subsys_id] = &_x ## _subsys,
> +#define SUBSYS(_x) [_x ## _cgrp_id] = &_x ## _cgrp_subsys,
>  static struct cgroup_subsys *cgroup_subsys[] = {
>  #include <linux/cgroup_subsys.h>
>  };
> +#undef SUBSYS
> +
> +/* array of cgroup subsystem names */
> +#define SUBSYS(_x) [_x ## _cgrp_id] = #_x,
> +static const char *cgroup_subsys_name[] = {
> +#include <linux/cgroup_subsys.h>
> +};
> +#undef SUBSYS
>  
>  /*
>   * The dummy hierarchy, reserved for the subsystems that are otherwise
> @@ -1076,7 +1084,7 @@ static int parse_cgroupfs_options(char *data, struct cgroup_sb_opts *opts)
>  	BUG_ON(!mutex_is_locked(&cgroup_mutex));
>  
>  #ifdef CONFIG_CPUSETS
> -	mask = ~(1UL << cpuset_subsys_id);
> +	mask = ~(1UL << cpuset_cgrp_id);
>  #endif
>  
>  	memset(opts, 0, sizeof(*opts));
> @@ -4518,15 +4526,15 @@ int __init cgroup_init_early(void)
>  	list_add(&init_cgrp_cset_link.cgrp_link, &init_css_set.cgrp_links);
>  
>  	for_each_subsys(ss, i) {
> -		BUG_ON(!ss->name);
> -		BUG_ON(strlen(ss->name) > MAX_CGROUP_TYPE_NAMELEN);
> -		BUG_ON(!ss->css_alloc);
> -		BUG_ON(!ss->css_free);
> -		if (ss->subsys_id != i) {
> -			printk(KERN_ERR "cgroup: Subsys %s id == %d\n",
> -			       ss->name, ss->subsys_id);
> -			BUG();
> -		}
> +		WARN(!ss->css_alloc || !ss->css_free || ss->name || ss->subsys_id,
> +		     "invalid cgroup_subsys %d:%s css_alloc=%p css_free=%p name:id=%d:%s\n",
> +		     i, cgroup_subsys_name[i], ss->css_alloc, ss->css_free,
> +		     ss->subsys_id, ss->name);
> +		WARN(strlen(cgroup_subsys_name[i]) > MAX_CGROUP_TYPE_NAMELEN,
> +		     "cgroup_subsys_name %s too long\n", cgroup_subsys_name[i]);
> +
> +		ss->subsys_id = i;
> +		ss->name = cgroup_subsys_name[i];
>  
>  		if (ss->early_init)
>  			cgroup_init_subsys(ss);
> @@ -5156,11 +5164,9 @@ static struct cftype debug_files[] =  {
>  	{ }	/* terminate */
>  };
>  
> -struct cgroup_subsys debug_subsys = {
> -	.name = "debug",
> +struct cgroup_subsys debug_cgrp_subsys = {
>  	.css_alloc = debug_css_alloc,
>  	.css_free = debug_css_free,
> -	.subsys_id = debug_subsys_id,
>  	.base_cftypes = debug_files,
>  };
>  #endif /* CONFIG_CGROUP_DEBUG */
> diff --git a/kernel/cgroup_freezer.c b/kernel/cgroup_freezer.c
> index 6c3154e..98ea26a9 100644
> --- a/kernel/cgroup_freezer.c
> +++ b/kernel/cgroup_freezer.c
> @@ -52,7 +52,7 @@ static inline struct freezer *css_freezer(struct cgroup_subsys_state *css)
>  
>  static inline struct freezer *task_freezer(struct task_struct *task)
>  {
> -	return css_freezer(task_css(task, freezer_subsys_id));
> +	return css_freezer(task_css(task, freezer_cgrp_id));
>  }
>  
>  static struct freezer *parent_freezer(struct freezer *freezer)
> @@ -84,8 +84,6 @@ static const char *freezer_state_strs(unsigned int state)
>  	return "THAWED";
>  };
>  
> -struct cgroup_subsys freezer_subsys;
> -
>  static struct cgroup_subsys_state *
>  freezer_css_alloc(struct cgroup_subsys_state *parent_css)
>  {
> @@ -473,13 +471,11 @@ static struct cftype files[] = {
>  	{ }	/* terminate */
>  };
>  
> -struct cgroup_subsys freezer_subsys = {
> -	.name		= "freezer",
> +struct cgroup_subsys freezer_cgrp_subsys = {
>  	.css_alloc	= freezer_css_alloc,
>  	.css_online	= freezer_css_online,
>  	.css_offline	= freezer_css_offline,
>  	.css_free	= freezer_css_free,
> -	.subsys_id	= freezer_subsys_id,
>  	.attach		= freezer_attach,
>  	.fork		= freezer_fork,
>  	.base_cftypes	= files,
> diff --git a/kernel/cpuset.c b/kernel/cpuset.c
> index 4410ac6..2d018c7 100644
> --- a/kernel/cpuset.c
> +++ b/kernel/cpuset.c
> @@ -119,7 +119,7 @@ static inline struct cpuset *css_cs(struct cgroup_subsys_state *css)
>  /* Retrieve the cpuset for a task */
>  static inline struct cpuset *task_cs(struct task_struct *task)
>  {
> -	return css_cs(task_css(task, cpuset_subsys_id));
> +	return css_cs(task_css(task, cpuset_cgrp_id));
>  }
>  
>  static inline struct cpuset *parent_cs(struct cpuset *cs)
> @@ -1521,7 +1521,7 @@ static void cpuset_attach(struct cgroup_subsys_state *css,
>  	struct task_struct *task;
>  	struct task_struct *leader = cgroup_taskset_first(tset);
>  	struct cgroup_subsys_state *oldcss = cgroup_taskset_cur_css(tset,
> -							cpuset_subsys_id);
> +							cpuset_cgrp_id);
>  	struct cpuset *cs = css_cs(css);
>  	struct cpuset *oldcs = css_cs(oldcss);
>  	struct cpuset *cpus_cs = effective_cpumask_cpuset(cs);
> @@ -2024,8 +2024,7 @@ static void cpuset_css_free(struct cgroup_subsys_state *css)
>  	kfree(cs);
>  }
>  
> -struct cgroup_subsys cpuset_subsys = {
> -	.name = "cpuset",
> +struct cgroup_subsys cpuset_cgrp_subsys = {
>  	.css_alloc = cpuset_css_alloc,
>  	.css_online = cpuset_css_online,
>  	.css_offline = cpuset_css_offline,
> @@ -2033,7 +2032,6 @@ struct cgroup_subsys cpuset_subsys = {
>  	.can_attach = cpuset_can_attach,
>  	.cancel_attach = cpuset_cancel_attach,
>  	.attach = cpuset_attach,
> -	.subsys_id = cpuset_subsys_id,
>  	.base_cftypes = files,
>  	.early_init = 1,
>  };
> @@ -2699,7 +2697,7 @@ int proc_cpuset_show(struct seq_file *m, void *unused_v)
>  		goto out_free;
>  
>  	rcu_read_lock();
> -	css = task_css(tsk, cpuset_subsys_id);
> +	css = task_css(tsk, cpuset_cgrp_id);
>  	retval = cgroup_path(css->cgroup, buf, PAGE_SIZE);
>  	rcu_read_unlock();
>  	if (retval < 0)
> diff --git a/kernel/events/core.c b/kernel/events/core.c
> index 56003c6..6490373 100644
> --- a/kernel/events/core.c
> +++ b/kernel/events/core.c
> @@ -342,7 +342,7 @@ struct perf_cgroup {
>  static inline struct perf_cgroup *
>  perf_cgroup_from_task(struct task_struct *task)
>  {
> -	return container_of(task_css(task, perf_subsys_id),
> +	return container_of(task_css(task, perf_event_cgrp_id),
>  			    struct perf_cgroup, css);
>  }
>  
> @@ -595,7 +595,7 @@ static inline int perf_cgroup_connect(int fd, struct perf_event *event,
>  
>  	rcu_read_lock();
>  
> -	css = css_from_dir(f.file->f_dentry, &perf_subsys);
> +	css = css_from_dir(f.file->f_dentry, &perf_event_cgrp_subsys);
>  	if (IS_ERR(css)) {
>  		ret = PTR_ERR(css);
>  		goto out;
> @@ -8055,9 +8055,7 @@ static void perf_cgroup_exit(struct cgroup_subsys_state *css,
>  	task_function_call(task, __perf_cgroup_move, task);
>  }
>  
> -struct cgroup_subsys perf_subsys = {
> -	.name		= "perf_event",
> -	.subsys_id	= perf_subsys_id,
> +struct cgroup_subsys perf_event_cgrp_subsys = {
>  	.css_alloc	= perf_cgroup_css_alloc,
>  	.css_free	= perf_cgroup_css_free,
>  	.exit		= perf_cgroup_exit,
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index 7fea865..436ba19 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -7174,7 +7174,7 @@ void sched_move_task(struct task_struct *tsk)
>  	if (unlikely(running))
>  		tsk->sched_class->put_prev_task(rq, tsk);
>  
> -	tg = container_of(task_css_check(tsk, cpu_cgroup_subsys_id,
> +	tg = container_of(task_css_check(tsk, cpu_cgrp_id,
>  				lockdep_is_held(&tsk->sighand->siglock)),
>  			  struct task_group, css);
>  	tg = autogroup_task_group(tsk, tg);
> @@ -7955,8 +7955,7 @@ static struct cftype cpu_files[] = {
>  	{ }	/* terminate */
>  };
>  
> -struct cgroup_subsys cpu_cgroup_subsys = {
> -	.name		= "cpu",
> +struct cgroup_subsys cpu_cgrp_subsys = {
>  	.css_alloc	= cpu_cgroup_css_alloc,
>  	.css_free	= cpu_cgroup_css_free,
>  	.css_online	= cpu_cgroup_css_online,
> @@ -7964,7 +7963,6 @@ struct cgroup_subsys cpu_cgroup_subsys = {
>  	.can_attach	= cpu_cgroup_can_attach,
>  	.attach		= cpu_cgroup_attach,
>  	.exit		= cpu_cgroup_exit,
> -	.subsys_id	= cpu_cgroup_subsys_id,
>  	.base_cftypes	= cpu_files,
>  	.early_init	= 1,
>  };
> diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c
> index 622e081..c143ee3 100644
> --- a/kernel/sched/cpuacct.c
> +++ b/kernel/sched/cpuacct.c
> @@ -41,7 +41,7 @@ static inline struct cpuacct *css_ca(struct cgroup_subsys_state *css)
>  /* return cpu accounting group to which this task belongs */
>  static inline struct cpuacct *task_ca(struct task_struct *tsk)
>  {
> -	return css_ca(task_css(tsk, cpuacct_subsys_id));
> +	return css_ca(task_css(tsk, cpuacct_cgrp_id));
>  }
>  
>  static inline struct cpuacct *parent_ca(struct cpuacct *ca)
> @@ -275,11 +275,9 @@ void cpuacct_account_field(struct task_struct *p, int index, u64 val)
>  	rcu_read_unlock();
>  }
>  
> -struct cgroup_subsys cpuacct_subsys = {
> -	.name		= "cpuacct",
> +struct cgroup_subsys cpuacct_cgrp_subsys = {
>  	.css_alloc	= cpuacct_css_alloc,
>  	.css_free	= cpuacct_css_free,
> -	.subsys_id	= cpuacct_subsys_id,
>  	.base_cftypes	= files,
>  	.early_init	= 1,
>  };
> diff --git a/mm/hugetlb_cgroup.c b/mm/hugetlb_cgroup.c
> index cb00829..b135853 100644
> --- a/mm/hugetlb_cgroup.c
> +++ b/mm/hugetlb_cgroup.c
> @@ -30,7 +30,6 @@ struct hugetlb_cgroup {
>  #define MEMFILE_IDX(val)	(((val) >> 16) & 0xffff)
>  #define MEMFILE_ATTR(val)	((val) & 0xffff)
>  
> -struct cgroup_subsys hugetlb_subsys __read_mostly;
>  static struct hugetlb_cgroup *root_h_cgroup __read_mostly;
>  
>  static inline
> @@ -42,7 +41,7 @@ struct hugetlb_cgroup *hugetlb_cgroup_from_css(struct cgroup_subsys_state *s)
>  static inline
>  struct hugetlb_cgroup *hugetlb_cgroup_from_task(struct task_struct *task)
>  {
> -	return hugetlb_cgroup_from_css(task_css(task, hugetlb_subsys_id));
> +	return hugetlb_cgroup_from_css(task_css(task, hugetlb_cgrp_id));
>  }
>  
>  static inline bool hugetlb_cgroup_is_root(struct hugetlb_cgroup *h_cg)
> @@ -358,7 +357,7 @@ static void __init __hugetlb_cgroup_file_init(int idx)
>  	cft = &h->cgroup_files[4];
>  	memset(cft, 0, sizeof(*cft));
>  
> -	WARN_ON(cgroup_add_cftypes(&hugetlb_subsys, h->cgroup_files));
> +	WARN_ON(cgroup_add_cftypes(&hugetlb_cgrp_subsys, h->cgroup_files));
>  
>  	return;
>  }
> @@ -402,10 +401,8 @@ void hugetlb_cgroup_migrate(struct page *oldhpage, struct page *newhpage)
>  	return;
>  }
>  
> -struct cgroup_subsys hugetlb_subsys = {
> -	.name = "hugetlb",
> +struct cgroup_subsys hugetlb_cgrp_subsys = {
>  	.css_alloc	= hugetlb_cgroup_css_alloc,
>  	.css_offline	= hugetlb_cgroup_css_offline,
>  	.css_free	= hugetlb_cgroup_css_free,
> -	.subsys_id	= hugetlb_subsys_id,
>  };
> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> index 19d5d42..d4a8c40 100644
> --- a/mm/memcontrol.c
> +++ b/mm/memcontrol.c
> @@ -66,8 +66,8 @@
>  
>  #include <trace/events/vmscan.h>
>  
> -struct cgroup_subsys mem_cgroup_subsys __read_mostly;
> -EXPORT_SYMBOL(mem_cgroup_subsys);
> +struct cgroup_subsys memory_cgrp_subsys __read_mostly;
> +EXPORT_SYMBOL(memory_cgrp_subsys);
>  
>  #define MEM_CGROUP_RECLAIM_RETRIES	5
>  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)
>  {
>  	struct cgroup_subsys_state *css;
>  
> -	css = css_from_id(id - 1, &mem_cgroup_subsys);
> +	css = css_from_id(id - 1, &memory_cgrp_subsys);
>  	return mem_cgroup_from_css(css);
>  }
>  
> @@ -1072,7 +1072,7 @@ struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p)
>  	if (unlikely(!p))
>  		return NULL;
>  
> -	return mem_cgroup_from_css(task_css(p, mem_cgroup_subsys_id));
> +	return mem_cgroup_from_css(task_css(p, memory_cgrp_id));
>  }
>  
>  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)
>  	rcu_read_lock();
>  
>  	mem_cgrp = memcg->css.cgroup;
> -	task_cgrp = task_cgroup(p, mem_cgroup_subsys_id);
> +	task_cgrp = task_cgroup(p, memory_cgrp_id);
>  
>  	ret = cgroup_path(task_cgrp, memcg_name, PATH_MAX);
>  	if (ret < 0) {
> @@ -6188,7 +6188,7 @@ static int memcg_write_event_control(struct cgroup_subsys_state *css,
>  
>  	ret = -EINVAL;
>  	cfile_css = css_from_dir(cfile.file->f_dentry->d_parent,
> -				 &mem_cgroup_subsys);
> +				 &memory_cgrp_subsys);
>  	if (cfile_css == css && css_tryget(css))
>  		ret = 0;
>  
> @@ -6567,11 +6567,11 @@ mem_cgroup_css_online(struct cgroup_subsys_state *css)
>  		 * unfortunate state in our controller.
>  		 */
>  		if (parent != root_mem_cgroup)
> -			mem_cgroup_subsys.broken_hierarchy = true;
> +			memory_cgrp_subsys.broken_hierarchy = true;
>  	}
>  	mutex_unlock(&memcg_create_mutex);
>  
> -	return memcg_init_kmem(memcg, &mem_cgroup_subsys);
> +	return memcg_init_kmem(memcg, &memory_cgrp_subsys);
>  }
>  
>  /*
> @@ -7265,9 +7265,7 @@ static void mem_cgroup_bind(struct cgroup_subsys_state *root_css)
>  		mem_cgroup_from_css(root_css)->use_hierarchy = true;
>  }
>  
> -struct cgroup_subsys mem_cgroup_subsys = {
> -	.name = "memory",
> -	.subsys_id = mem_cgroup_subsys_id,
> +struct cgroup_subsys memory_cgrp_subsys = {
>  	.css_alloc = mem_cgroup_css_alloc,
>  	.css_online = mem_cgroup_css_online,
>  	.css_offline = mem_cgroup_css_offline,
> @@ -7293,7 +7291,7 @@ __setup("swapaccount=", enable_swap_account);
>  
>  static void __init memsw_file_init(void)
>  {
> -	WARN_ON(cgroup_add_cftypes(&mem_cgroup_subsys, memsw_cgroup_files));
> +	WARN_ON(cgroup_add_cftypes(&memory_cgrp_subsys, memsw_cgroup_files));
>  }
>  
>  static void __init enable_swap_cgroup(void)
> diff --git a/net/core/netclassid_cgroup.c b/net/core/netclassid_cgroup.c
> index 9e5ad5d..b865662 100644
> --- a/net/core/netclassid_cgroup.c
> +++ b/net/core/netclassid_cgroup.c
> @@ -23,7 +23,7 @@ static inline struct cgroup_cls_state *css_cls_state(struct cgroup_subsys_state
>  
>  struct cgroup_cls_state *task_cls_state(struct task_struct *p)
>  {
> -	return css_cls_state(task_css(p, net_cls_subsys_id));
> +	return css_cls_state(task_css(p, net_cls_cgrp_id));
>  }
>  EXPORT_SYMBOL_GPL(task_cls_state);
>  
> @@ -102,12 +102,10 @@ static struct cftype ss_files[] = {
>  	{ }	/* terminate */
>  };
>  
> -struct cgroup_subsys net_cls_subsys = {
> -	.name			= "net_cls",
> +struct cgroup_subsys net_cls_cgrp_subsys = {
>  	.css_alloc		= cgrp_css_alloc,
>  	.css_online		= cgrp_css_online,
>  	.css_free		= cgrp_css_free,
>  	.attach			= cgrp_attach,
> -	.subsys_id		= net_cls_subsys_id,
>  	.base_cftypes		= ss_files,
>  };
> diff --git a/net/core/netprio_cgroup.c b/net/core/netprio_cgroup.c
> index 857e160..d7d23e2 100644
> --- a/net/core/netprio_cgroup.c
> +++ b/net/core/netprio_cgroup.c
> @@ -244,13 +244,11 @@ static struct cftype ss_files[] = {
>  	{ }	/* terminate */
>  };
>  
> -struct cgroup_subsys net_prio_subsys = {
> -	.name		= "net_prio",
> +struct cgroup_subsys net_prio_cgrp_subsys = {
>  	.css_alloc	= cgrp_css_alloc,
>  	.css_online	= cgrp_css_online,
>  	.css_free	= cgrp_css_free,
>  	.attach		= net_prio_attach,
> -	.subsys_id	= net_prio_subsys_id,
>  	.base_cftypes	= ss_files,
>  };
>  
> diff --git a/net/ipv4/tcp_memcontrol.c b/net/ipv4/tcp_memcontrol.c
> index f7e522c..20a0aca 100644
> --- a/net/ipv4/tcp_memcontrol.c
> +++ b/net/ipv4/tcp_memcontrol.c
> @@ -219,7 +219,7 @@ static struct cftype tcp_files[] = {
>  
>  static int __init tcp_memcontrol_init(void)
>  {
> -	WARN_ON(cgroup_add_cftypes(&mem_cgroup_subsys, tcp_files));
> +	WARN_ON(cgroup_add_cftypes(&memory_cgrp_subsys, tcp_files));
>  	return 0;
>  }
>  __initcall(tcp_memcontrol_init);
> diff --git a/security/device_cgroup.c b/security/device_cgroup.c
> index d3b6d2c..7f88bcd 100644
> --- a/security/device_cgroup.c
> +++ b/security/device_cgroup.c
> @@ -58,11 +58,9 @@ static inline struct dev_cgroup *css_to_devcgroup(struct cgroup_subsys_state *s)
>  
>  static inline struct dev_cgroup *task_devcgroup(struct task_struct *task)
>  {
> -	return css_to_devcgroup(task_css(task, devices_subsys_id));
> +	return css_to_devcgroup(task_css(task, devices_cgrp_id));
>  }
>  
> -struct cgroup_subsys devices_subsys;
> -
>  /*
>   * called under devcgroup_mutex
>   */
> @@ -684,13 +682,11 @@ static struct cftype dev_cgroup_files[] = {
>  	{ }	/* terminate */
>  };
>  
> -struct cgroup_subsys devices_subsys = {
> -	.name = "devices",
> +struct cgroup_subsys devices_cgrp_subsys = {
>  	.css_alloc = devcgroup_css_alloc,
>  	.css_free = devcgroup_css_free,
>  	.css_online = devcgroup_online,
>  	.css_offline = devcgroup_offline,
> -	.subsys_id = devices_subsys_id,
>  	.base_cftypes = dev_cgroup_files,
>  };
>  
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line "unsubscribe cgroups" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [Monitors]

  Powered by Linux