cgroup: convert all non-memcg controllers to the new cftype interface
authorTejun Heo <tj@kernel.org>
Sun, 1 Apr 2012 19:09:55 +0000 (12:09 -0700)
committerTejun Heo <tj@kernel.org>
Sun, 1 Apr 2012 19:09:55 +0000 (12:09 -0700)
Convert debug, freezer, cpuset, cpu_cgroup, cpuacct, net_prio, blkio,
net_cls and device controllers to use the new cftype based interface.
Termination entry is added to cftype arrays and populate callbacks are
replaced with cgroup_subsys->base_cftypes initializations.

This is functionally identical transformation.  There shouldn't be any
visible behavior change.

memcg is rather special and will be converted separately.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Li Zefan <lizf@cn.fujitsu.com>
Cc: Paul Menage <paul@paulmenage.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Vivek Goyal <vgoyal@redhat.com>
block/blk-cgroup.c
kernel/cgroup.c
kernel/cgroup_freezer.c
kernel/cpuset.c
kernel/sched/core.c
net/core/netprio_cgroup.c
net/sched/cls_cgroup.c
security/device_cgroup.c

index 60ef16d6d15557f72d69aff8247d57448f90e587..126c341955de162cba789040d0908b1d147c943c 100644 (file)
@@ -1515,14 +1515,9 @@ struct cftype blkio_files[] = {
                .read_map = blkiocg_file_read_map,
        },
 #endif
+       { }     /* terminate */
 };
 
-static int blkiocg_populate(struct cgroup_subsys *subsys, struct cgroup *cgroup)
-{
-       return cgroup_add_files(cgroup, subsys, blkio_files,
-                               ARRAY_SIZE(blkio_files));
-}
-
 static void blkiocg_destroy(struct cgroup *cgroup)
 {
        struct blkio_cgroup *blkcg = cgroup_to_blkio_cgroup(cgroup);
@@ -1642,11 +1637,11 @@ struct cgroup_subsys blkio_subsys = {
        .can_attach = blkiocg_can_attach,
        .attach = blkiocg_attach,
        .destroy = blkiocg_destroy,
-       .populate = blkiocg_populate,
 #ifdef CONFIG_BLK_CGROUP
        /* note: blkio_subsys_id is otherwise defined in blk-cgroup.h */
        .subsys_id = blkio_subsys_id,
 #endif
+       .base_cftypes = blkio_files,
        .use_id = 1,
        .module = THIS_MODULE,
 };
index 66c1e3b5c0f296f09abe0d89e55e907d6c806715..835ae29e4ea244457c464055d1bcf9b5243c9ca1 100644 (file)
@@ -5349,19 +5349,15 @@ static struct cftype debug_files[] =  {
                .name = "releasable",
                .read_u64 = releasable_read,
        },
-};
 
-static int debug_populate(struct cgroup_subsys *ss, struct cgroup *cont)
-{
-       return cgroup_add_files(cont, ss, debug_files,
-                               ARRAY_SIZE(debug_files));
-}
+       { }     /* terminate */
+};
 
 struct cgroup_subsys debug_subsys = {
        .name = "debug",
        .create = debug_create,
        .destroy = debug_destroy,
-       .populate = debug_populate,
        .subsys_id = debug_subsys_id,
+       .base_cftypes = debug_files,
 };
 #endif /* CONFIG_CGROUP_DEBUG */
index f86e93920b62704b05c9fc3b96c83156643b0d87..3649fc6b3eaa9a2aa78b6a0ef2af73d1a9fd9775 100644 (file)
@@ -358,24 +358,19 @@ static int freezer_write(struct cgroup *cgroup,
 static struct cftype files[] = {
        {
                .name = "state",
+               .flags = CFTYPE_NOT_ON_ROOT,
                .read_seq_string = freezer_read,
                .write_string = freezer_write,
        },
+       { }     /* terminate */
 };
 
-static int freezer_populate(struct cgroup_subsys *ss, struct cgroup *cgroup)
-{
-       if (!cgroup->parent)
-               return 0;
-       return cgroup_add_files(cgroup, ss, files, ARRAY_SIZE(files));
-}
-
 struct cgroup_subsys freezer_subsys = {
        .name           = "freezer",
        .create         = freezer_create,
        .destroy        = freezer_destroy,
-       .populate       = freezer_populate,
        .subsys_id      = freezer_subsys_id,
        .can_attach     = freezer_can_attach,
        .fork           = freezer_fork,
+       .base_cftypes   = files,
 };
index b96ad75b7e64c6474b02d4d91534659bc43eb252..2382683617a3e8c6d1c0ed69dcfc97fe3b593fb1 100644 (file)
@@ -1765,28 +1765,17 @@ static struct cftype files[] = {
                .write_u64 = cpuset_write_u64,
                .private = FILE_SPREAD_SLAB,
        },
-};
-
-static struct cftype cft_memory_pressure_enabled = {
-       .name = "memory_pressure_enabled",
-       .read_u64 = cpuset_read_u64,
-       .write_u64 = cpuset_write_u64,
-       .private = FILE_MEMORY_PRESSURE_ENABLED,
-};
 
-static int cpuset_populate(struct cgroup_subsys *ss, struct cgroup *cont)
-{
-       int err;
+       {
+               .name = "memory_pressure_enabled",
+               .flags = CFTYPE_ONLY_ON_ROOT,
+               .read_u64 = cpuset_read_u64,
+               .write_u64 = cpuset_write_u64,
+               .private = FILE_MEMORY_PRESSURE_ENABLED,
+       },
 
-       err = cgroup_add_files(cont, ss, files, ARRAY_SIZE(files));
-       if (err)
-               return err;
-       /* memory_pressure_enabled is in root cpuset only */
-       if (!cont->parent)
-               err = cgroup_add_file(cont, ss,
-                                     &cft_memory_pressure_enabled);
-       return err;
-}
+       { }     /* terminate */
+};
 
 /*
  * post_clone() is called during cgroup_create() when the
@@ -1887,9 +1876,9 @@ struct cgroup_subsys cpuset_subsys = {
        .destroy = cpuset_destroy,
        .can_attach = cpuset_can_attach,
        .attach = cpuset_attach,
-       .populate = cpuset_populate,
        .post_clone = cpuset_post_clone,
        .subsys_id = cpuset_subsys_id,
+       .base_cftypes = files,
        .early_init = 1,
 };
 
index 4603b9d8f30a362d15dc60e4bd0cd659fd7c3f89..afc6d7e7155708812b839ad0776e3a33848ece02 100644 (file)
@@ -7970,13 +7970,9 @@ static struct cftype cpu_files[] = {
                .write_u64 = cpu_rt_period_write_uint,
        },
 #endif
+       { }     /* terminate */
 };
 
-static int cpu_cgroup_populate(struct cgroup_subsys *ss, struct cgroup *cont)
-{
-       return cgroup_add_files(cont, ss, cpu_files, ARRAY_SIZE(cpu_files));
-}
-
 struct cgroup_subsys cpu_cgroup_subsys = {
        .name           = "cpu",
        .create         = cpu_cgroup_create,
@@ -7984,8 +7980,8 @@ struct cgroup_subsys cpu_cgroup_subsys = {
        .can_attach     = cpu_cgroup_can_attach,
        .attach         = cpu_cgroup_attach,
        .exit           = cpu_cgroup_exit,
-       .populate       = cpu_cgroup_populate,
        .subsys_id      = cpu_cgroup_subsys_id,
+       .base_cftypes   = cpu_files,
        .early_init     = 1,
 };
 
@@ -8170,13 +8166,9 @@ static struct cftype files[] = {
                .name = "stat",
                .read_map = cpuacct_stats_show,
        },
+       { }     /* terminate */
 };
 
-static int cpuacct_populate(struct cgroup_subsys *ss, struct cgroup *cgrp)
-{
-       return cgroup_add_files(cgrp, ss, files, ARRAY_SIZE(files));
-}
-
 /*
  * charge this task's execution time to its accounting group.
  *
@@ -8208,7 +8200,7 @@ struct cgroup_subsys cpuacct_subsys = {
        .name = "cpuacct",
        .create = cpuacct_create,
        .destroy = cpuacct_destroy,
-       .populate = cpuacct_populate,
        .subsys_id = cpuacct_subsys_id,
+       .base_cftypes = files,
 };
 #endif /* CONFIG_CGROUP_CPUACCT */
index dbfd4e7f8dc48c9629b1505afbdde6ccf90ed83e..b2a59866699f7cae8a21ff809775d02754b51ff7 100644 (file)
@@ -242,21 +242,17 @@ static struct cftype ss_files[] = {
                .read_map = read_priomap,
                .write_string = write_priomap,
        },
+       { }     /* terminate */
 };
 
-static int cgrp_populate(struct cgroup_subsys *ss, struct cgroup *cgrp)
-{
-       return cgroup_add_files(cgrp, ss, ss_files, ARRAY_SIZE(ss_files));
-}
-
 struct cgroup_subsys net_prio_subsys = {
        .name           = "net_prio",
        .create         = cgrp_create,
        .destroy        = cgrp_destroy,
-       .populate       = cgrp_populate,
 #ifdef CONFIG_NETPRIO_CGROUP
        .subsys_id      = net_prio_subsys_id,
 #endif
+       .base_cftypes   = ss_files,
        .module         = THIS_MODULE
 };
 
index 024df8a32275327b1e934fffdb96fee6daa2ede8..7743ea8d1d387d920dcee43abe4a3bfeb8502bfd 100644 (file)
@@ -70,21 +70,17 @@ static struct cftype ss_files[] = {
                .read_u64 = read_classid,
                .write_u64 = write_classid,
        },
+       { }     /* terminate */
 };
 
-static int cgrp_populate(struct cgroup_subsys *ss, struct cgroup *cgrp)
-{
-       return cgroup_add_files(cgrp, ss, ss_files, ARRAY_SIZE(ss_files));
-}
-
 struct cgroup_subsys net_cls_subsys = {
        .name           = "net_cls",
        .create         = cgrp_create,
        .destroy        = cgrp_destroy,
-       .populate       = cgrp_populate,
 #ifdef CONFIG_NET_CLS_CGROUP
        .subsys_id      = net_cls_subsys_id,
 #endif
+       .base_cftypes   = ss_files,
        .module         = THIS_MODULE,
 };
 
index c43a3323feea2edeabcee83bb9acaa97e9e420c1..442204cc22d91772251043f3a051d6cce93bcfc7 100644 (file)
@@ -447,22 +447,16 @@ static struct cftype dev_cgroup_files[] = {
                .read_seq_string = devcgroup_seq_read,
                .private = DEVCG_LIST,
        },
+       { }     /* terminate */
 };
 
-static int devcgroup_populate(struct cgroup_subsys *ss,
-                               struct cgroup *cgroup)
-{
-       return cgroup_add_files(cgroup, ss, dev_cgroup_files,
-                                       ARRAY_SIZE(dev_cgroup_files));
-}
-
 struct cgroup_subsys devices_subsys = {
        .name = "devices",
        .can_attach = devcgroup_can_attach,
        .create = devcgroup_create,
        .destroy = devcgroup_destroy,
-       .populate = devcgroup_populate,
        .subsys_id = devices_subsys_id,
+       .base_cftypes = dev_cgroup_files,
 };
 
 int __devcgroup_inode_permission(struct inode *inode, int mask)