It is unnecessary to always wait for the flush operation of
cpuset_migrate_mm_wq to complete in cpuset_write_resmask, as modifying
cpuset.cpus or cpuset.exclusive does not trigger mm migrations. The
flush_workqueue can be executed only when cpuset.mems is modified.
Signed-off-by: Chuyi Zhou <zhouchuyi@bytedance.com>
---
kernel/cgroup/cpuset.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
index 27adb04df675d..3d8492581c8c4 100644
--- a/kernel/cgroup/cpuset.c
+++ b/kernel/cgroup/cpuset.c
@@ -3256,7 +3256,8 @@ ssize_t cpuset_write_resmask(struct kernfs_open_file *of,
out_unlock:
mutex_unlock(&cpuset_mutex);
cpus_read_unlock();
- flush_workqueue(cpuset_migrate_mm_wq);
+ if (of_cft(of)->private == FILE_MEMLIST)
+ flush_workqueue(cpuset_migrate_mm_wq);
return retval ?: nbytes;
}
--
2.20.1
On Thu, Sep 04, 2025 at 03:45:03PM +0800, Chuyi Zhou wrote: > It is unnecessary to always wait for the flush operation of > cpuset_migrate_mm_wq to complete in cpuset_write_resmask, as modifying > cpuset.cpus or cpuset.exclusive does not trigger mm migrations. The > flush_workqueue can be executed only when cpuset.mems is modified. > > Signed-off-by: Chuyi Zhou <zhouchuyi@bytedance.com> Applied cgroup/for-6.18. Thanks. -- tejun
On 9/4/25 3:45 AM, Chuyi Zhou wrote: > It is unnecessary to always wait for the flush operation of > cpuset_migrate_mm_wq to complete in cpuset_write_resmask, as modifying > cpuset.cpus or cpuset.exclusive does not trigger mm migrations. The > flush_workqueue can be executed only when cpuset.mems is modified. > > Signed-off-by: Chuyi Zhou <zhouchuyi@bytedance.com> > --- > kernel/cgroup/cpuset.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c > index 27adb04df675d..3d8492581c8c4 100644 > --- a/kernel/cgroup/cpuset.c > +++ b/kernel/cgroup/cpuset.c > @@ -3256,7 +3256,8 @@ ssize_t cpuset_write_resmask(struct kernfs_open_file *of, > out_unlock: > mutex_unlock(&cpuset_mutex); > cpus_read_unlock(); > - flush_workqueue(cpuset_migrate_mm_wq); > + if (of_cft(of)->private == FILE_MEMLIST) > + flush_workqueue(cpuset_migrate_mm_wq); > return retval ?: nbytes; > } > LGTM Reviewed-by: Waiman Long <longman@redhat.com>
On Thu, Sep 04, 2025 at 03:45:03PM +0800, Chuyi Zhou <zhouchuyi@bytedance.com> wrote: > It is unnecessary to always wait for the flush operation of > cpuset_migrate_mm_wq to complete in cpuset_write_resmask, as modifying > cpuset.cpus or cpuset.exclusive does not trigger mm migrations. The > flush_workqueue can be executed only when cpuset.mems is modified. > > Signed-off-by: Chuyi Zhou <zhouchuyi@bytedance.com> > --- > kernel/cgroup/cpuset.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) Reasonable and AFAICT correct optimization. Reviewed-by: Michal Koutný <mkoutny@suse.com>
© 2016 - 2025 Red Hat, Inc.