mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2024-12-29 17:23:36 +00:00
cgroup/cpuset: add decrease attach_in_progress helpers
There are several functions to decrease attach_in_progress, and they will wake up cpuset_attach_wq when attach_in_progress is zero. So, add a helper to make it concise. Signed-off-by: Chen Ridong <chenridong@huawei.com> Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Reviewed-by: Waiman Long <longman@redhat.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
c149c4a48b
commit
4a711dd910
@ -490,6 +490,26 @@ static inline void check_insane_mems_config(nodemask_t *nodes)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* decrease cs->attach_in_progress.
|
||||||
|
* wake_up cpuset_attach_wq if cs->attach_in_progress==0.
|
||||||
|
*/
|
||||||
|
static inline void dec_attach_in_progress_locked(struct cpuset *cs)
|
||||||
|
{
|
||||||
|
lockdep_assert_held(&cpuset_mutex);
|
||||||
|
|
||||||
|
cs->attach_in_progress--;
|
||||||
|
if (!cs->attach_in_progress)
|
||||||
|
wake_up(&cpuset_attach_wq);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void dec_attach_in_progress(struct cpuset *cs)
|
||||||
|
{
|
||||||
|
mutex_lock(&cpuset_mutex);
|
||||||
|
dec_attach_in_progress_locked(cs);
|
||||||
|
mutex_unlock(&cpuset_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cgroup v2 behavior is used on the "cpus" and "mems" control files when
|
* Cgroup v2 behavior is used on the "cpus" and "mems" control files when
|
||||||
* on default hierarchy or when the cpuset_v2_mode flag is set by mounting
|
* on default hierarchy or when the cpuset_v2_mode flag is set by mounting
|
||||||
@ -3422,9 +3442,7 @@ static void cpuset_cancel_attach(struct cgroup_taskset *tset)
|
|||||||
cs = css_cs(css);
|
cs = css_cs(css);
|
||||||
|
|
||||||
mutex_lock(&cpuset_mutex);
|
mutex_lock(&cpuset_mutex);
|
||||||
cs->attach_in_progress--;
|
dec_attach_in_progress_locked(cs);
|
||||||
if (!cs->attach_in_progress)
|
|
||||||
wake_up(&cpuset_attach_wq);
|
|
||||||
|
|
||||||
if (cs->nr_migrate_dl_tasks) {
|
if (cs->nr_migrate_dl_tasks) {
|
||||||
int cpu = cpumask_any(cs->effective_cpus);
|
int cpu = cpumask_any(cs->effective_cpus);
|
||||||
@ -3539,9 +3557,7 @@ static void cpuset_attach(struct cgroup_taskset *tset)
|
|||||||
reset_migrate_dl_data(cs);
|
reset_migrate_dl_data(cs);
|
||||||
}
|
}
|
||||||
|
|
||||||
cs->attach_in_progress--;
|
dec_attach_in_progress_locked(cs);
|
||||||
if (!cs->attach_in_progress)
|
|
||||||
wake_up(&cpuset_attach_wq);
|
|
||||||
|
|
||||||
mutex_unlock(&cpuset_mutex);
|
mutex_unlock(&cpuset_mutex);
|
||||||
}
|
}
|
||||||
@ -4284,11 +4300,7 @@ static void cpuset_cancel_fork(struct task_struct *task, struct css_set *cset)
|
|||||||
if (same_cs)
|
if (same_cs)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mutex_lock(&cpuset_mutex);
|
dec_attach_in_progress(cs);
|
||||||
cs->attach_in_progress--;
|
|
||||||
if (!cs->attach_in_progress)
|
|
||||||
wake_up(&cpuset_attach_wq);
|
|
||||||
mutex_unlock(&cpuset_mutex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -4320,10 +4332,7 @@ static void cpuset_fork(struct task_struct *task)
|
|||||||
guarantee_online_mems(cs, &cpuset_attach_nodemask_to);
|
guarantee_online_mems(cs, &cpuset_attach_nodemask_to);
|
||||||
cpuset_attach_task(cs, task);
|
cpuset_attach_task(cs, task);
|
||||||
|
|
||||||
cs->attach_in_progress--;
|
dec_attach_in_progress_locked(cs);
|
||||||
if (!cs->attach_in_progress)
|
|
||||||
wake_up(&cpuset_attach_wq);
|
|
||||||
|
|
||||||
mutex_unlock(&cpuset_mutex);
|
mutex_unlock(&cpuset_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user