]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
cpuset: use partition_cpus_change for setting exclusive cpus
authorChen Ridong <chenridong@huawei.com>
Wed, 17 Sep 2025 06:04:54 +0000 (06:04 +0000)
committerTejun Heo <tj@kernel.org>
Wed, 17 Sep 2025 18:37:31 +0000 (08:37 -1000)
A previous patch has introduced a new helper function
partition_cpus_change(). Now replace the exclusive cpus setting logic
with this helper function.

Signed-off-by: Chen Ridong <chenridong@huawei.com>
Reviewed-by: Waiman Long <longman@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/cgroup/cpuset.c

index 5c818b509cb8ee2d369539252c88ac096bffc1e9..44231cb1d83fe8cc7b168e93f43f0096700bffae 100644 (file)
@@ -2561,8 +2561,6 @@ static int update_exclusive_cpumask(struct cpuset *cs, struct cpuset *trialcs,
 {
        int retval;
        struct tmpmasks tmp;
-       struct cpuset *parent = parent_cs(cs);
-       bool invalidate = false;
        bool force = false;
        int old_prs = cs->partition_root_state;
 
@@ -2594,32 +2592,9 @@ static int update_exclusive_cpumask(struct cpuset *cs, struct cpuset *trialcs,
        if (alloc_tmpmasks(&tmp))
                return -ENOMEM;
 
-       if (old_prs) {
-               if (cpumask_empty(trialcs->effective_xcpus)) {
-                       invalidate = true;
-                       cs->prs_err = PERR_INVCPUS;
-               } else if (prstate_housekeeping_conflict(old_prs, trialcs->effective_xcpus)) {
-                       invalidate = true;
-                       cs->prs_err = PERR_HKEEPING;
-               } else if (tasks_nocpu_error(parent, cs, trialcs->effective_xcpus)) {
-                       invalidate = true;
-                       cs->prs_err = PERR_NOCPUS;
-               }
+       trialcs->prs_err = PERR_NONE;
+       partition_cpus_change(cs, trialcs, &tmp);
 
-               if (is_remote_partition(cs)) {
-                       if (invalidate)
-                               remote_partition_disable(cs, &tmp);
-                       else
-                               remote_cpus_update(cs, trialcs->exclusive_cpus,
-                                                  trialcs->effective_xcpus, &tmp);
-               } else if (invalidate) {
-                       update_parent_effective_cpumask(cs, partcmd_invalidate,
-                                                       NULL, &tmp);
-               } else {
-                       update_parent_effective_cpumask(cs, partcmd_update,
-                                               trialcs->effective_xcpus, &tmp);
-               }
-       }
        spin_lock_irq(&callback_lock);
        cpumask_copy(cs->exclusive_cpus, trialcs->exclusive_cpus);
        cpumask_copy(cs->effective_xcpus, trialcs->effective_xcpus);