mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-01 15:44:24 -04:00
cgroup/cpuset: Streamline rm_siblings_excl_cpus()
If exclusive_cpus is set, effective_xcpus must be a subset of exclusive_cpus. Currently, rm_siblings_excl_cpus() checks both exclusive_cpus and effective_xcpus consecutively. It is simpler to check only exclusive_cpus if non-empty or just effective_xcpus otherwise. No functional change is expected. Signed-off-by: Waiman Long <longman@redhat.com> Reviewed-by: Chen Ridong <chenridong@huawei.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
@@ -1355,23 +1355,29 @@ static int rm_siblings_excl_cpus(struct cpuset *parent, struct cpuset *cs,
|
||||
int retval = 0;
|
||||
|
||||
if (cpumask_empty(excpus))
|
||||
return retval;
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* Exclude exclusive CPUs from siblings
|
||||
* Remove exclusive CPUs from siblings
|
||||
*/
|
||||
rcu_read_lock();
|
||||
cpuset_for_each_child(sibling, css, parent) {
|
||||
struct cpumask *sibling_xcpus;
|
||||
|
||||
if (sibling == cs)
|
||||
continue;
|
||||
|
||||
if (cpumask_intersects(excpus, sibling->exclusive_cpus)) {
|
||||
cpumask_andnot(excpus, excpus, sibling->exclusive_cpus);
|
||||
retval++;
|
||||
continue;
|
||||
}
|
||||
if (cpumask_intersects(excpus, sibling->effective_xcpus)) {
|
||||
cpumask_andnot(excpus, excpus, sibling->effective_xcpus);
|
||||
/*
|
||||
* If exclusive_cpus is defined, effective_xcpus will always
|
||||
* be a subset. Otherwise, effective_xcpus will only be set
|
||||
* in a valid partition root.
|
||||
*/
|
||||
sibling_xcpus = cpumask_empty(sibling->exclusive_cpus)
|
||||
? sibling->effective_xcpus
|
||||
: sibling->exclusive_cpus;
|
||||
|
||||
if (cpumask_intersects(excpus, sibling_xcpus)) {
|
||||
cpumask_andnot(excpus, excpus, sibling_xcpus);
|
||||
retval++;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user