]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
cgroup/cpuset: add decrease attach_in_progress helpers
authorChen Ridong <chenridong@huawei.com>
Fri, 26 Jul 2024 01:05:02 +0000 (01:05 +0000)
committerTejun Heo <tj@kernel.org>
Tue, 30 Jul 2024 22:38:14 +0000 (12:38 -1000)
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>
kernel/cgroup/cpuset.c

index 9f9e626dabb0309958e210b5b598a24e812dadde..31aefc3e1a6a1849ab2d1e15cb01e8aa1b7581ae 100644 (file)
@@ -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 @@ out:
                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);
 }