Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+5 −15
Original line number Original line Diff line number Diff line
@@ -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
===========================
===========================
+0 −2
Original line number Original line Diff line number Diff line
@@ -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;
+0 −4
Original line number Original line Diff line number Diff line
@@ -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;