mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-14 21:01:29 +00:00
cgroup: rename cgroup_subsys_state->dput_work and its callback function
css (cgroup_subsys_state) will become RCU protected and there will be two stages which require punting to work item during release. To prepare for using the work item for multiple times, rename css->dput_work to css->destroy_work and css_dput_fn() to css_free_work_fn() and move work item initialization from css init to right before the actual usage. This reorganization doesn't introduce any behavior change. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Li Zefan <lizefan@huawei.com>
This commit is contained in:
parent
40e93b39cd
commit
35ef10da65
@ -80,7 +80,7 @@ struct cgroup_subsys_state {
|
||||
struct css_id __rcu *id;
|
||||
|
||||
/* Used to put @cgroup->dentry on the last css_put() */
|
||||
struct work_struct dput_work;
|
||||
struct work_struct destroy_work;
|
||||
};
|
||||
|
||||
/* bits in struct cgroup_subsys_state flags field */
|
||||
|
@ -4259,10 +4259,10 @@ err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void css_dput_fn(struct work_struct *work)
|
||||
static void css_free_work_fn(struct work_struct *work)
|
||||
{
|
||||
struct cgroup_subsys_state *css =
|
||||
container_of(work, struct cgroup_subsys_state, dput_work);
|
||||
container_of(work, struct cgroup_subsys_state, destroy_work);
|
||||
|
||||
cgroup_dput(css->cgroup);
|
||||
}
|
||||
@ -4272,7 +4272,14 @@ static void css_release(struct percpu_ref *ref)
|
||||
struct cgroup_subsys_state *css =
|
||||
container_of(ref, struct cgroup_subsys_state, refcnt);
|
||||
|
||||
schedule_work(&css->dput_work);
|
||||
/*
|
||||
* css holds an extra ref to @cgrp->dentry which is put on the last
|
||||
* css_put(). dput() requires process context, which css_put() may
|
||||
* be called without. @css->destroy_work will be used to invoke
|
||||
* dput() asynchronously from css_put().
|
||||
*/
|
||||
INIT_WORK(&css->destroy_work, css_free_work_fn);
|
||||
schedule_work(&css->destroy_work);
|
||||
}
|
||||
|
||||
static void init_cgroup_css(struct cgroup_subsys_state *css,
|
||||
@ -4287,14 +4294,6 @@ static void init_cgroup_css(struct cgroup_subsys_state *css,
|
||||
css->flags |= CSS_ROOT;
|
||||
BUG_ON(cgroup_css(cgrp, ss->subsys_id));
|
||||
cgrp->subsys[ss->subsys_id] = css;
|
||||
|
||||
/*
|
||||
* css holds an extra ref to @cgrp->dentry which is put on the last
|
||||
* css_put(). dput() requires process context, which css_put() may
|
||||
* be called without. @css->dput_work will be used to invoke
|
||||
* dput() asynchronously from css_put().
|
||||
*/
|
||||
INIT_WORK(&css->dput_work, css_dput_fn);
|
||||
}
|
||||
|
||||
/* invoke ->css_online() on a new CSS and mark it online if successful */
|
||||
|
Loading…
Reference in New Issue
Block a user