2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00

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: Rami Rosen <ramirose@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
Rami Rosen 2013-04-10 14:41:17 +03:00 committed by Tejun Heo
parent 8adf12b0ff
commit 84cfb6ab48
3 changed files with 5 additions and 21 deletions

View File

@ -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:
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)
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
=========================== ===========================

View File

@ -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;

View File

@ -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;