Commit 84cfb6ab authored by Rami Rosen's avatar Rami Rosen Committed by Tejun Heo

cgroup: remove bind() method from cgroup_subsys.

The bind() method of cgroup_subsys is not used in any of the
controllers (cpuset, freezer, blkio, net_cls, memcg, net_prio,
devices, perf, hugetlb, cpu and cpuacct)

tj: Removed the entry on ->bind() from
    Documentation/cgroups/cgroups.txt.  Also updated a couple
    paragraphs which were suggesting that dynamic re-binding may be
    implemented.  It's not gonna.
Signed-off-by: default avatarRami Rosen <ramirose@gmail.com>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parent 8adf12b0
...@@ -211,10 +211,9 @@ matches, and any of the requested subsystems are in use in an existing ...@@ -211,10 +211,9 @@ matches, and any of the requested subsystems are in use in an existing
hierarchy, the mount will fail with -EBUSY. Otherwise, a new hierarchy hierarchy, the mount will fail with -EBUSY. Otherwise, a new hierarchy
is activated, associated with the requested subsystems. is activated, associated with the requested subsystems.
It's not currently possible to bind a new subsystem to an active It's not possible to bind a new subsystem to an active cgroup
cgroup hierarchy, or to unbind a subsystem from an active cgroup hierarchy, or to unbind a subsystem from an active cgroup
hierarchy. This may be possible in future, but is fraught with nasty hierarchy.
error-recovery issues.
When a cgroup filesystem is unmounted, if there are any When a cgroup filesystem is unmounted, if there are any
child cgroups created below the top-level cgroup, that hierarchy child cgroups created below the top-level cgroup, that hierarchy
...@@ -382,10 +381,8 @@ To Specify a hierarchy's release_agent: ...@@ -382,10 +381,8 @@ To Specify a hierarchy's release_agent:
Note that specifying 'release_agent' more than once will return failure. Note that specifying 'release_agent' more than once will return failure.
Note that changing the set of subsystems is currently only supported Note that changing the set of subsystems is only supported when the
when the hierarchy consists of a single (root) cgroup. Supporting hierarchy consists of a single (root) cgroup.
the ability to arbitrarily bind/unbind subsystems from an existing
cgroup hierarchy is intended to be implemented in the future.
Then under /sys/fs/cgroup/rg1 you can find a tree that corresponds to the Then under /sys/fs/cgroup/rg1 you can find a tree that corresponds to the
tree of the cgroups in the system. For instance, /sys/fs/cgroup/rg1 tree of the cgroups in the system. For instance, /sys/fs/cgroup/rg1
...@@ -643,13 +640,6 @@ void exit(struct task_struct *task) ...@@ -643,13 +640,6 @@ void exit(struct task_struct *task)
Called during task exit. Called during task exit.
void bind(struct cgroup *root)
(cgroup_mutex held by caller)
Called when a cgroup subsystem is rebound to a different hierarchy
and root cgroup. Currently this will only involve movement between
the default hierarchy (which never has sub-cgroups) and a hierarchy
that is being created/destroyed (and hence has no sub-cgroups).
4. Extended attribute usage 4. Extended attribute usage
=========================== ===========================
......
...@@ -483,8 +483,6 @@ struct cgroup_subsys { ...@@ -483,8 +483,6 @@ struct cgroup_subsys {
void (*fork)(struct task_struct *task); void (*fork)(struct task_struct *task);
void (*exit)(struct cgroup *cgrp, struct cgroup *old_cgrp, void (*exit)(struct cgroup *cgrp, struct cgroup *old_cgrp,
struct task_struct *task); struct task_struct *task);
void (*bind)(struct cgroup *root);
int subsys_id; int subsys_id;
int active; int active;
int disabled; int disabled;
......
...@@ -1064,16 +1064,12 @@ static int rebind_subsystems(struct cgroupfs_root *root, ...@@ -1064,16 +1064,12 @@ static int rebind_subsystems(struct cgroupfs_root *root,
cgrp->subsys[i]->cgroup = cgrp; cgrp->subsys[i]->cgroup = cgrp;
list_move(&ss->sibling, &root->subsys_list); list_move(&ss->sibling, &root->subsys_list);
ss->root = root; ss->root = root;
if (ss->bind)
ss->bind(cgrp);
/* refcount was already taken, and we're keeping it */ /* refcount was already taken, and we're keeping it */
} else if (bit & removed_mask) { } else if (bit & removed_mask) {
/* We're removing this subsystem */ /* We're removing this subsystem */
BUG_ON(ss == NULL); BUG_ON(ss == NULL);
BUG_ON(cgrp->subsys[i] != dummytop->subsys[i]); BUG_ON(cgrp->subsys[i] != dummytop->subsys[i]);
BUG_ON(cgrp->subsys[i]->cgroup != cgrp); BUG_ON(cgrp->subsys[i]->cgroup != cgrp);
if (ss->bind)
ss->bind(dummytop);
dummytop->subsys[i]->cgroup = dummytop; dummytop->subsys[i]->cgroup = dummytop;
cgrp->subsys[i] = NULL; cgrp->subsys[i] = NULL;
subsys[i]->root = &rootnode; subsys[i]->root = &rootnode;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment