mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 05:04:02 +02:00
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 <longman@redhat.com> Reviewed-by: Ridong Chen <ridong.chen@linux.dev> Reviewed-by: Gregory Price <gourry@gourry.net> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
892b8bb3fb
commit
e165f243fe
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user