mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2024-12-28 16:53:49 +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
|
||||
* 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);
|
||||
|
||||
mutex_lock(&cpuset_mutex);
|
||||
cs->attach_in_progress--;
|
||||
if (!cs->attach_in_progress)
|
||||
wake_up(&cpuset_attach_wq);
|
||||
dec_attach_in_progress_locked(cs);
|
||||
|
||||
if (cs->nr_migrate_dl_tasks) {
|
||||
int cpu = cpumask_any(cs->effective_cpus);
|
||||
@ -3539,9 +3557,7 @@ static void cpuset_attach(struct cgroup_taskset *tset)
|
||||
reset_migrate_dl_data(cs);
|
||||
}
|
||||
|
||||
cs->attach_in_progress--;
|
||||
if (!cs->attach_in_progress)
|
||||
wake_up(&cpuset_attach_wq);
|
||||
dec_attach_in_progress_locked(cs);
|
||||
|
||||
mutex_unlock(&cpuset_mutex);
|
||||
}
|
||||
@ -4284,11 +4300,7 @@ static void cpuset_cancel_fork(struct task_struct *task, struct css_set *cset)
|
||||
if (same_cs)
|
||||
return;
|
||||
|
||||
mutex_lock(&cpuset_mutex);
|
||||
cs->attach_in_progress--;
|
||||
if (!cs->attach_in_progress)
|
||||
wake_up(&cpuset_attach_wq);
|
||||
mutex_unlock(&cpuset_mutex);
|
||||
dec_attach_in_progress(cs);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -4320,10 +4332,7 @@ static void cpuset_fork(struct task_struct *task)
|
||||
guarantee_online_mems(cs, &cpuset_attach_nodemask_to);
|
||||
cpuset_attach_task(cs, task);
|
||||
|
||||
cs->attach_in_progress--;
|
||||
if (!cs->attach_in_progress)
|
||||
wake_up(&cpuset_attach_wq);
|
||||
|
||||
dec_attach_in_progress_locked(cs);
|
||||
mutex_unlock(&cpuset_mutex);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user