cgroup: s/child_subsys_mask/subtree_ss_mask/
For consistency with cgroup->subtree_control. * cgroup->child_subsys_mask -> cgroup->subtree_ss_mask * cgroup_calc_child_subsys_mask() -> cgroup_calc_subtree_ss_mask() * cgroup_refresh_child_subsys_mask() -> cgroup_refresh_subtree_ss_mask() No functional changes. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Johannes Weiner <hannes@cmpxchg.org>
This commit is contained in:
parent
5eb385cc5a
commit
8699b7762a
@ -253,13 +253,12 @@ struct cgroup {
|
|||||||
/*
|
/*
|
||||||
* The bitmask of subsystems enabled on the child cgroups.
|
* The bitmask of subsystems enabled on the child cgroups.
|
||||||
* ->subtree_control is the one configured through
|
* ->subtree_control is the one configured through
|
||||||
* "cgroup.subtree_control" while ->child_subsys_mask is the
|
* "cgroup.subtree_control" while ->child_ss_mask is the effective
|
||||||
* effective one which may have more subsystems enabled.
|
* one which may have more subsystems enabled. Controller knobs
|
||||||
* Controller knobs are made available iff it's enabled in
|
* are made available iff it's enabled in ->subtree_control.
|
||||||
* ->subtree_control.
|
|
||||||
*/
|
*/
|
||||||
unsigned int subtree_control;
|
unsigned long subtree_control;
|
||||||
unsigned int child_subsys_mask;
|
unsigned long subtree_ss_mask;
|
||||||
|
|
||||||
/* Private pointers for each registered subsystem */
|
/* Private pointers for each registered subsystem */
|
||||||
struct cgroup_subsys_state __rcu *subsys[CGROUP_SUBSYS_COUNT];
|
struct cgroup_subsys_state __rcu *subsys[CGROUP_SUBSYS_COUNT];
|
||||||
|
@ -391,10 +391,10 @@ static struct cgroup_subsys_state *cgroup_e_css(struct cgroup *cgrp,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* This function is used while updating css associations and thus
|
* This function is used while updating css associations and thus
|
||||||
* can't test the csses directly. Use ->child_subsys_mask.
|
* can't test the csses directly. Use ->subtree_ss_mask.
|
||||||
*/
|
*/
|
||||||
while (cgroup_parent(cgrp) &&
|
while (cgroup_parent(cgrp) &&
|
||||||
!(cgroup_parent(cgrp)->child_subsys_mask & (1 << ss->id)))
|
!(cgroup_parent(cgrp)->subtree_ss_mask & (1 << ss->id)))
|
||||||
cgrp = cgroup_parent(cgrp);
|
cgrp = cgroup_parent(cgrp);
|
||||||
|
|
||||||
return cgroup_css(cgrp, ss);
|
return cgroup_css(cgrp, ss);
|
||||||
@ -1256,7 +1256,7 @@ static umode_t cgroup_file_mode(const struct cftype *cft)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cgroup_calc_child_subsys_mask - calculate child_subsys_mask
|
* cgroup_calc_subtree_ss_mask - calculate subtree_ss_mask
|
||||||
* @cgrp: the target cgroup
|
* @cgrp: the target cgroup
|
||||||
* @subtree_control: the new subtree_control mask to consider
|
* @subtree_control: the new subtree_control mask to consider
|
||||||
*
|
*
|
||||||
@ -1268,8 +1268,8 @@ static umode_t cgroup_file_mode(const struct cftype *cft)
|
|||||||
* @subtree_control is to be applied to @cgrp. The returned mask is always
|
* @subtree_control is to be applied to @cgrp. The returned mask is always
|
||||||
* a superset of @subtree_control and follows the usual hierarchy rules.
|
* a superset of @subtree_control and follows the usual hierarchy rules.
|
||||||
*/
|
*/
|
||||||
static unsigned long cgroup_calc_child_subsys_mask(struct cgroup *cgrp,
|
static unsigned long cgroup_calc_subtree_ss_mask(struct cgroup *cgrp,
|
||||||
unsigned long subtree_control)
|
unsigned long subtree_control)
|
||||||
{
|
{
|
||||||
struct cgroup *parent = cgroup_parent(cgrp);
|
struct cgroup *parent = cgroup_parent(cgrp);
|
||||||
unsigned long cur_ss_mask = subtree_control;
|
unsigned long cur_ss_mask = subtree_control;
|
||||||
@ -1293,7 +1293,7 @@ static unsigned long cgroup_calc_child_subsys_mask(struct cgroup *cgrp,
|
|||||||
* to non-default hierarchies.
|
* to non-default hierarchies.
|
||||||
*/
|
*/
|
||||||
if (parent)
|
if (parent)
|
||||||
new_ss_mask &= parent->child_subsys_mask;
|
new_ss_mask &= parent->subtree_ss_mask;
|
||||||
else
|
else
|
||||||
new_ss_mask &= cgrp->root->subsys_mask;
|
new_ss_mask &= cgrp->root->subsys_mask;
|
||||||
|
|
||||||
@ -1306,16 +1306,16 @@ static unsigned long cgroup_calc_child_subsys_mask(struct cgroup *cgrp,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cgroup_refresh_child_subsys_mask - update child_subsys_mask
|
* cgroup_refresh_subtree_ss_mask - update subtree_ss_mask
|
||||||
* @cgrp: the target cgroup
|
* @cgrp: the target cgroup
|
||||||
*
|
*
|
||||||
* Update @cgrp->child_subsys_mask according to the current
|
* Update @cgrp->subtree_ss_mask according to the current
|
||||||
* @cgrp->subtree_control using cgroup_calc_child_subsys_mask().
|
* @cgrp->subtree_control using cgroup_calc_subtree_ss_mask().
|
||||||
*/
|
*/
|
||||||
static void cgroup_refresh_child_subsys_mask(struct cgroup *cgrp)
|
static void cgroup_refresh_subtree_ss_mask(struct cgroup *cgrp)
|
||||||
{
|
{
|
||||||
cgrp->child_subsys_mask =
|
cgrp->subtree_ss_mask =
|
||||||
cgroup_calc_child_subsys_mask(cgrp, cgrp->subtree_control);
|
cgroup_calc_subtree_ss_mask(cgrp, cgrp->subtree_control);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1542,7 +1542,7 @@ static int rebind_subsystems(struct cgroup_root *dst_root,
|
|||||||
|
|
||||||
src_root->subsys_mask &= ~(1 << ssid);
|
src_root->subsys_mask &= ~(1 << ssid);
|
||||||
scgrp->subtree_control &= ~(1 << ssid);
|
scgrp->subtree_control &= ~(1 << ssid);
|
||||||
cgroup_refresh_child_subsys_mask(scgrp);
|
cgroup_refresh_subtree_ss_mask(scgrp);
|
||||||
|
|
||||||
/* default hierarchy doesn't enable controllers by default */
|
/* default hierarchy doesn't enable controllers by default */
|
||||||
dst_root->subsys_mask |= 1 << ssid;
|
dst_root->subsys_mask |= 1 << ssid;
|
||||||
@ -1550,7 +1550,7 @@ static int rebind_subsystems(struct cgroup_root *dst_root,
|
|||||||
static_branch_enable(cgroup_subsys_on_dfl_key[ssid]);
|
static_branch_enable(cgroup_subsys_on_dfl_key[ssid]);
|
||||||
} else {
|
} else {
|
||||||
dcgrp->subtree_control |= 1 << ssid;
|
dcgrp->subtree_control |= 1 << ssid;
|
||||||
cgroup_refresh_child_subsys_mask(dcgrp);
|
cgroup_refresh_subtree_ss_mask(dcgrp);
|
||||||
static_branch_disable(cgroup_subsys_on_dfl_key[ssid]);
|
static_branch_disable(cgroup_subsys_on_dfl_key[ssid]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2523,11 +2523,11 @@ static int cgroup_migrate_prepare_dst(struct cgroup *dst_cgrp,
|
|||||||
lockdep_assert_held(&cgroup_mutex);
|
lockdep_assert_held(&cgroup_mutex);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Except for the root, child_subsys_mask must be zero for a cgroup
|
* Except for the root, subtree_ss_mask must be zero for a cgroup
|
||||||
* with tasks so that child cgroups don't compete against tasks.
|
* with tasks so that child cgroups don't compete against tasks.
|
||||||
*/
|
*/
|
||||||
if (dst_cgrp && cgroup_on_dfl(dst_cgrp) && cgroup_parent(dst_cgrp) &&
|
if (dst_cgrp && cgroup_on_dfl(dst_cgrp) && cgroup_parent(dst_cgrp) &&
|
||||||
dst_cgrp->child_subsys_mask)
|
dst_cgrp->subtree_ss_mask)
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
|
|
||||||
/* look up the dst cset for each src cset and link it to src */
|
/* look up the dst cset for each src cset and link it to src */
|
||||||
@ -2880,7 +2880,7 @@ static int cgroup_subtree_control_show(struct seq_file *seq, void *v)
|
|||||||
* cgroup_update_dfl_csses - update css assoc of a subtree in default hierarchy
|
* cgroup_update_dfl_csses - update css assoc of a subtree in default hierarchy
|
||||||
* @cgrp: root of the subtree to update csses for
|
* @cgrp: root of the subtree to update csses for
|
||||||
*
|
*
|
||||||
* @cgrp's child_subsys_mask has changed and its subtree's (self excluded)
|
* @cgrp's subtree_ss_mask has changed and its subtree's (self excluded)
|
||||||
* css associations need to be updated accordingly. This function looks up
|
* css associations need to be updated accordingly. This function looks up
|
||||||
* all css_sets which are attached to the subtree, creates the matching
|
* all css_sets which are attached to the subtree, creates the matching
|
||||||
* updated css_sets and migrates the tasks to the new ones.
|
* updated css_sets and migrates the tasks to the new ones.
|
||||||
@ -2902,7 +2902,7 @@ static int cgroup_update_dfl_csses(struct cgroup *cgrp)
|
|||||||
css_for_each_descendant_pre(css, cgroup_css(cgrp, NULL)) {
|
css_for_each_descendant_pre(css, cgroup_css(cgrp, NULL)) {
|
||||||
struct cgrp_cset_link *link;
|
struct cgrp_cset_link *link;
|
||||||
|
|
||||||
/* self is not affected by child_subsys_mask change */
|
/* self is not affected by subtree_ss_mask change */
|
||||||
if (css->cgroup == cgrp)
|
if (css->cgroup == cgrp)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -3034,9 +3034,9 @@ static ssize_t cgroup_subtree_control_write(struct kernfs_open_file *of,
|
|||||||
* depending on subsystem dependencies.
|
* depending on subsystem dependencies.
|
||||||
*/
|
*/
|
||||||
old_sc = cgrp->subtree_control;
|
old_sc = cgrp->subtree_control;
|
||||||
old_ss = cgrp->child_subsys_mask;
|
old_ss = cgrp->subtree_ss_mask;
|
||||||
new_sc = (old_sc | enable) & ~disable;
|
new_sc = (old_sc | enable) & ~disable;
|
||||||
new_ss = cgroup_calc_child_subsys_mask(cgrp, new_sc);
|
new_ss = cgroup_calc_subtree_ss_mask(cgrp, new_sc);
|
||||||
|
|
||||||
css_enable = ~old_ss & new_ss;
|
css_enable = ~old_ss & new_ss;
|
||||||
css_disable = old_ss & ~new_ss;
|
css_disable = old_ss & ~new_ss;
|
||||||
@ -3069,7 +3069,7 @@ static ssize_t cgroup_subtree_control_write(struct kernfs_open_file *of,
|
|||||||
}
|
}
|
||||||
|
|
||||||
cgrp->subtree_control = new_sc;
|
cgrp->subtree_control = new_sc;
|
||||||
cgrp->child_subsys_mask = new_ss;
|
cgrp->subtree_ss_mask = new_ss;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create new csses or make the existing ones visible. A css is
|
* Create new csses or make the existing ones visible. A css is
|
||||||
@ -3135,7 +3135,7 @@ out_unlock:
|
|||||||
|
|
||||||
err_undo_css:
|
err_undo_css:
|
||||||
cgrp->subtree_control = old_sc;
|
cgrp->subtree_control = old_sc;
|
||||||
cgrp->child_subsys_mask = old_ss;
|
cgrp->subtree_ss_mask = old_ss;
|
||||||
|
|
||||||
for_each_subsys(ss, ssid) {
|
for_each_subsys(ss, ssid) {
|
||||||
if (!(enable & (1 << ssid)))
|
if (!(enable & (1 << ssid)))
|
||||||
@ -4969,7 +4969,7 @@ static int cgroup_mkdir(struct kernfs_node *parent_kn, const char *name,
|
|||||||
|
|
||||||
/* let's create and online css's */
|
/* let's create and online css's */
|
||||||
for_each_subsys(ss, ssid) {
|
for_each_subsys(ss, ssid) {
|
||||||
if (parent->child_subsys_mask & (1 << ssid)) {
|
if (parent->subtree_ss_mask & (1 << ssid)) {
|
||||||
ret = create_css(cgrp, ss,
|
ret = create_css(cgrp, ss,
|
||||||
parent->subtree_control & (1 << ssid));
|
parent->subtree_control & (1 << ssid));
|
||||||
if (ret)
|
if (ret)
|
||||||
@ -4983,7 +4983,7 @@ static int cgroup_mkdir(struct kernfs_node *parent_kn, const char *name,
|
|||||||
*/
|
*/
|
||||||
if (!cgroup_on_dfl(cgrp)) {
|
if (!cgroup_on_dfl(cgrp)) {
|
||||||
cgrp->subtree_control = parent->subtree_control;
|
cgrp->subtree_control = parent->subtree_control;
|
||||||
cgroup_refresh_child_subsys_mask(cgrp);
|
cgroup_refresh_subtree_ss_mask(cgrp);
|
||||||
}
|
}
|
||||||
|
|
||||||
kernfs_activate(kn);
|
kernfs_activate(kn);
|
||||||
|
Loading…
Reference in New Issue
Block a user