summaryrefslogtreecommitdiffstats
path: root/kernel/cgroup/cpuset.c
diff options
context:
space:
mode:
authorMiaohe Lin <linmiaohe@huawei.com>2023-07-04 14:03:52 +0200
committerTejun Heo <tj@kernel.org>2023-07-10 22:26:06 +0200
commit48f074565bb7eaa9ae502b2b2d423b1e50325e1b (patch)
treebf90c7270b0a94abf6901bcf354d747b32166018 /kernel/cgroup/cpuset.c
parentcgroup/cpuset: simplify the percpu kthreads check in update_tasks_cpumask() (diff)
downloadlinux-48f074565bb7eaa9ae502b2b2d423b1e50325e1b.tar.xz
linux-48f074565bb7eaa9ae502b2b2d423b1e50325e1b.zip
cgroup/cpuset: avoid unneeded cpuset_mutex re-lock
cpuset_mutex unlock and lock pair is only needed when transferring tasks out of empty cpuset. Avoid unneeded cpuset_mutex re-lock when !is_empty to save cpu cycles. Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> Reviewed-by: Waiman Long <longman@redhat.com> Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'kernel/cgroup/cpuset.c')
-rw-r--r--kernel/cgroup/cpuset.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
index 601c40da8e03..e136269c152c 100644
--- a/kernel/cgroup/cpuset.c
+++ b/kernel/cgroup/cpuset.c
@@ -3521,17 +3521,16 @@ hotplug_update_tasks_legacy(struct cpuset *cs,
is_empty = cpumask_empty(cs->cpus_allowed) ||
nodes_empty(cs->mems_allowed);
- mutex_unlock(&cpuset_mutex);
-
/*
* Move tasks to the nearest ancestor with execution resources,
* This is full cgroup operation which will also call back into
* cpuset. Should be done outside any lock.
*/
- if (is_empty)
+ if (is_empty) {
+ mutex_unlock(&cpuset_mutex);
remove_tasks_in_empty_cpuset(cs);
-
- mutex_lock(&cpuset_mutex);
+ mutex_lock(&cpuset_mutex);
+ }
}
static void