From e165f243fecce67898eaf986b3e768936ae4be8c Mon Sep 17 00:00:00 2001 From: Waiman Long Date: Thu, 2 Jul 2026 17:47:51 -0400 Subject: [PATCH] cgroup/cpuset: Add a cpuset_reserve_dl_bw() helper Extract the DL bandwidth allocation code in cpuset_attach() to a new cpuset_reserve_dl_bw() helper to simplify code. No functional change is expected. Signed-off-by: Waiman Long Reviewed-by: Ridong Chen Reviewed-by: Gregory Price Signed-off-by: Tejun Heo --- kernel/cgroup/cpuset.c | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c index 8dbbac8a66fd..33a6f932249e 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -3031,6 +3031,25 @@ static int cpuset_can_attach_check(struct cpuset *cs) return 0; } +static int cpuset_reserve_dl_bw(struct cpuset *cs) +{ + int cpu, ret; + + if (!cs->sum_migrate_dl_bw) + return 0; + + cpu = cpumask_any_and(cpu_active_mask, cs->effective_cpus); + if (unlikely(cpu >= nr_cpu_ids)) + return -EINVAL; + + ret = dl_bw_alloc(cpu, cs->sum_migrate_dl_bw); + if (ret) + return ret; + + cs->dl_bw_cpu = cpu; + return 0; +} + static void reset_migrate_dl_data(struct cpuset *cs) { cs->nr_migrate_dl_tasks = 0; @@ -3045,7 +3064,7 @@ static int cpuset_can_attach(struct cgroup_taskset *tset) struct cpuset *cs, *oldcs; struct task_struct *task; bool setsched_check; - int cpu, ret; + int ret; /* used later by cpuset_attach() */ attach_ctx.old_cs = task_cs(cgroup_taskset_first(tset, &css)); @@ -3101,27 +3120,14 @@ static int cpuset_can_attach(struct cgroup_taskset *tset) } } - if (!cs->sum_migrate_dl_bw) - goto out_success; - - cpu = cpumask_any_and(cpu_active_mask, cs->effective_cpus); - if (unlikely(cpu >= nr_cpu_ids)) { - ret = -EINVAL; - goto out_unlock; - } - - ret = dl_bw_alloc(cpu, cs->sum_migrate_dl_bw); - if (ret) - goto out_unlock; - - cs->dl_bw_cpu = cpu; - -out_success: - attach_ctx.in_progress++; + ret = cpuset_reserve_dl_bw(cs); out_unlock: if (ret) reset_migrate_dl_data(cs); + else + attach_ctx.in_progress++; + mutex_unlock(&cpuset_mutex); return ret; }