mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-14 21:01:29 +00:00
cgroup: minor updates around cgroup_clear_directory()
* Rename it to cgroup_clear_dir() and make it take the pointer to the target cgroup instead of the the dentry. This makes the function consistent with its counterpart - cgroup_populate_dir(). * Move cgroup_clear_directory() invocation from cgroup_d_remove_dir() to cgroup_remount() so that the function doesn't have to determine the cgroup pointer back from the dentry. cgroup_d_remove_dir() now only deals with vfs, which is slightly cleaner. This patch doesn't introduce any functional differences. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Li Zefan <lizefan@huawei.com>
This commit is contained in:
parent
9903883f1d
commit
8f89140ae4
@ -957,15 +957,14 @@ static void cgroup_rm_file(struct cgroup *cgrp, const struct cftype *cft)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cgroup_clear_directory - selective removal of base and subsystem files
|
* cgroup_clear_dir - selective removal of base and subsystem files
|
||||||
* @dir: directory containing the files
|
* @cgrp: target cgroup
|
||||||
* @base_files: true if the base files should be removed
|
* @base_files: true if the base files should be removed
|
||||||
* @subsys_mask: mask of the subsystem ids whose files should be removed
|
* @subsys_mask: mask of the subsystem ids whose files should be removed
|
||||||
*/
|
*/
|
||||||
static void cgroup_clear_directory(struct dentry *dir, bool base_files,
|
static void cgroup_clear_dir(struct cgroup *cgrp, bool base_files,
|
||||||
unsigned long subsys_mask)
|
unsigned long subsys_mask)
|
||||||
{
|
{
|
||||||
struct cgroup *cgrp = __d_cgrp(dir);
|
|
||||||
struct cgroup_subsys *ss;
|
struct cgroup_subsys *ss;
|
||||||
|
|
||||||
for_each_root_subsys(cgrp->root, ss) {
|
for_each_root_subsys(cgrp->root, ss) {
|
||||||
@ -987,9 +986,6 @@ static void cgroup_clear_directory(struct dentry *dir, bool base_files,
|
|||||||
static void cgroup_d_remove_dir(struct dentry *dentry)
|
static void cgroup_d_remove_dir(struct dentry *dentry)
|
||||||
{
|
{
|
||||||
struct dentry *parent;
|
struct dentry *parent;
|
||||||
struct cgroupfs_root *root = dentry->d_sb->s_fs_info;
|
|
||||||
|
|
||||||
cgroup_clear_directory(dentry, true, root->subsys_mask);
|
|
||||||
|
|
||||||
parent = dentry->d_parent;
|
parent = dentry->d_parent;
|
||||||
spin_lock(&parent->d_lock);
|
spin_lock(&parent->d_lock);
|
||||||
@ -1376,7 +1372,7 @@ static int cgroup_remount(struct super_block *sb, int *flags, char *data)
|
|||||||
* this before rebind_subsystems, since rebind_subsystems may
|
* this before rebind_subsystems, since rebind_subsystems may
|
||||||
* change this hierarchy's subsys_list.
|
* change this hierarchy's subsys_list.
|
||||||
*/
|
*/
|
||||||
cgroup_clear_directory(cgrp->dentry, false, removed_mask);
|
cgroup_clear_dir(cgrp, false, removed_mask);
|
||||||
|
|
||||||
ret = rebind_subsystems(root, added_mask, removed_mask);
|
ret = rebind_subsystems(root, added_mask, removed_mask);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
@ -4541,9 +4537,10 @@ static int cgroup_destroy_locked(struct cgroup *cgrp)
|
|||||||
raw_spin_unlock(&release_list_lock);
|
raw_spin_unlock(&release_list_lock);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Remove @cgrp directory. The removal puts the base ref but we
|
* Clear and remove @cgrp directory. The removal puts the base ref
|
||||||
* aren't quite done with @cgrp yet, so hold onto it.
|
* but we aren't quite done with @cgrp yet, so hold onto it.
|
||||||
*/
|
*/
|
||||||
|
cgroup_clear_dir(cgrp, true, cgrp->root->subsys_mask);
|
||||||
dget(d);
|
dget(d);
|
||||||
cgroup_d_remove_dir(d);
|
cgroup_d_remove_dir(d);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user