cgroup: rename ->create/post_create/pre_destroy/destroy() to ->css_alloc/online/offline/free()
Rename cgroup_subsys css lifetime related callbacks to better describe what their roles are. Also, update documentation. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Li Zefan <lizefan@huawei.com>
This commit is contained in:
@@ -82,7 +82,7 @@ struct cgroup_subsys_state {
|
||||
/* bits in struct cgroup_subsys_state flags field */
|
||||
enum {
|
||||
CSS_ROOT = (1 << 0), /* this CSS is the root of the subsystem */
|
||||
CSS_ONLINE = (1 << 1), /* between ->post_create() and ->pre_destroy() */
|
||||
CSS_ONLINE = (1 << 1), /* between ->css_online() and ->css_offline() */
|
||||
};
|
||||
|
||||
/* Caller must verify that the css is not for root cgroup */
|
||||
@@ -439,10 +439,11 @@ int cgroup_taskset_size(struct cgroup_taskset *tset);
|
||||
*/
|
||||
|
||||
struct cgroup_subsys {
|
||||
struct cgroup_subsys_state *(*create)(struct cgroup *cgrp);
|
||||
int (*post_create)(struct cgroup *cgrp);
|
||||
void (*pre_destroy)(struct cgroup *cgrp);
|
||||
void (*destroy)(struct cgroup *cgrp);
|
||||
struct cgroup_subsys_state *(*css_alloc)(struct cgroup *cgrp);
|
||||
int (*css_online)(struct cgroup *cgrp);
|
||||
void (*css_offline)(struct cgroup *cgrp);
|
||||
void (*css_free)(struct cgroup *cgrp);
|
||||
|
||||
int (*can_attach)(struct cgroup *cgrp, struct cgroup_taskset *tset);
|
||||
void (*cancel_attach)(struct cgroup *cgrp, struct cgroup_taskset *tset);
|
||||
void (*attach)(struct cgroup *cgrp, struct cgroup_taskset *tset);
|
||||
@@ -541,13 +542,13 @@ static inline struct cgroup* task_cgroup(struct task_struct *task,
|
||||
* @cgroup: cgroup whose children to walk
|
||||
*
|
||||
* Walk @cgroup's children. Must be called under rcu_read_lock(). A child
|
||||
* cgroup which hasn't finished ->post_create() or already has finished
|
||||
* ->pre_destroy() may show up during traversal and it's each subsystem's
|
||||
* cgroup which hasn't finished ->css_online() or already has finished
|
||||
* ->css_offline() may show up during traversal and it's each subsystem's
|
||||
* responsibility to verify that each @pos is alive.
|
||||
*
|
||||
* If a subsystem synchronizes against the parent in its ->post_create()
|
||||
* and before starting iterating, a cgroup which finished ->post_create()
|
||||
* is guaranteed to be visible in the future iterations.
|
||||
* If a subsystem synchronizes against the parent in its ->css_online() and
|
||||
* before starting iterating, a cgroup which finished ->css_online() is
|
||||
* guaranteed to be visible in the future iterations.
|
||||
*/
|
||||
#define cgroup_for_each_child(pos, cgroup) \
|
||||
list_for_each_entry_rcu(pos, &(cgroup)->children, sibling)
|
||||
@@ -561,19 +562,19 @@ struct cgroup *cgroup_next_descendant_pre(struct cgroup *pos,
|
||||
* @cgroup: cgroup whose descendants to walk
|
||||
*
|
||||
* Walk @cgroup's descendants. Must be called under rcu_read_lock(). A
|
||||
* descendant cgroup which hasn't finished ->post_create() or already has
|
||||
* finished ->pre_destroy() may show up during traversal and it's each
|
||||
* descendant cgroup which hasn't finished ->css_online() or already has
|
||||
* finished ->css_offline() may show up during traversal and it's each
|
||||
* subsystem's responsibility to verify that each @pos is alive.
|
||||
*
|
||||
* If a subsystem synchronizes against the parent in its ->post_create()
|
||||
* and before starting iterating, and synchronizes against @pos on each
|
||||
* iteration, any descendant cgroup which finished ->post_create() is
|
||||
* If a subsystem synchronizes against the parent in its ->css_online() and
|
||||
* before starting iterating, and synchronizes against @pos on each
|
||||
* iteration, any descendant cgroup which finished ->css_offline() is
|
||||
* guaranteed to be visible in the future iterations.
|
||||
*
|
||||
* In other words, the following guarantees that a descendant can't escape
|
||||
* state updates of its ancestors.
|
||||
*
|
||||
* my_post_create(@cgrp)
|
||||
* my_online(@cgrp)
|
||||
* {
|
||||
* Lock @cgrp->parent and @cgrp;
|
||||
* Inherit state from @cgrp->parent;
|
||||
@@ -606,7 +607,7 @@ struct cgroup *cgroup_next_descendant_pre(struct cgroup *pos,
|
||||
* iteration should lock and unlock both @pos->parent and @pos.
|
||||
*
|
||||
* Alternatively, a subsystem may choose to use a single global lock to
|
||||
* synchronize ->post_create() and ->pre_destroy() against tree-walking
|
||||
* synchronize ->css_online() and ->css_offline() against tree-walking
|
||||
* operations.
|
||||
*/
|
||||
#define cgroup_for_each_descendant_pre(pos, cgroup) \
|
||||
|
Reference in New Issue
Block a user