[PATCH v8 04/11] cgroup/cpuset: Put all task attach related variables into attach_ctx
From: Waiman Long
Date: Fri Jun 26 2026 - 14:38:18 EST
Put the task attach related cpuset_attach_old_cs and
cpuset_attach_nodemask_to static variables into the new attach_ctx
structure to improve readability and ease maintanence.
No functional change is expected.
Suggested-by: Ridong Chen <ridong.chen@xxxxxxxxx>
Signed-off-by: Waiman Long <longman@xxxxxxxxxx>
---
kernel/cgroup/cpuset.c | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)
diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
index dec9785d0271..1f31f340e0ec 100644
--- a/kernel/cgroup/cpuset.c
+++ b/kernel/cgroup/cpuset.c
@@ -362,6 +362,8 @@ static DECLARE_WAIT_QUEUE_HEAD(cpuset_attach_wq);
*/
static struct {
int in_progress;
+ struct cpuset *old_cs; /* Source cpuset */
+ nodemask_t nodemask_to;
} attach_ctx;
static inline void check_insane_mems_config(nodemask_t *nodes)
@@ -2996,8 +2998,6 @@ static int update_prstate(struct cpuset *cs, int new_prs)
return 0;
}
-static struct cpuset *cpuset_attach_old_cs;
-
/*
* Check to see if a cpuset can accept a new task
* For v1, cpus_allowed and mems_allowed can't be empty.
@@ -3029,8 +3029,8 @@ static int cpuset_can_attach(struct cgroup_taskset *tset)
int cpu, ret;
/* used later by cpuset_attach() */
- cpuset_attach_old_cs = task_cs(cgroup_taskset_first(tset, &css));
- oldcs = cpuset_attach_old_cs;
+ attach_ctx.old_cs = task_cs(cgroup_taskset_first(tset, &css));
+ oldcs = attach_ctx.old_cs;
cs = css_cs(css);
mutex_lock(&cpuset_mutex);
@@ -3133,7 +3133,6 @@ static void cpuset_cancel_attach(struct cgroup_taskset *tset)
* allocate from cpuset_init().
*/
static cpumask_var_t cpus_attach;
-static nodemask_t cpuset_attach_nodemask_to;
static void cpuset_attach_task(struct cpuset *cs, struct task_struct *task)
{
@@ -3150,7 +3149,7 @@ static void cpuset_attach_task(struct cpuset *cs, struct task_struct *task)
*/
WARN_ON_ONCE(set_cpus_allowed_ptr(task, cpus_attach));
- cpuset_change_task_nodemask(task, &cpuset_attach_nodemask_to);
+ cpuset_change_task_nodemask(task, &attach_ctx.nodemask_to);
cpuset1_update_task_spread_flags(cs, task);
}
@@ -3160,7 +3159,7 @@ static void cpuset_attach(struct cgroup_taskset *tset)
struct task_struct *leader;
struct cgroup_subsys_state *css;
struct cpuset *cs;
- struct cpuset *oldcs = cpuset_attach_old_cs;
+ struct cpuset *oldcs = attach_ctx.old_cs;
bool cpus_updated, mems_updated;
bool queue_task_work = false;
@@ -3172,7 +3171,7 @@ static void cpuset_attach(struct cgroup_taskset *tset)
cpus_updated = !cpumask_equal(cs->effective_cpus,
oldcs->effective_cpus);
mems_updated = !nodes_equal(cs->effective_mems, oldcs->effective_mems);
- guarantee_online_mems(cs, &cpuset_attach_nodemask_to);
+ guarantee_online_mems(cs, &attach_ctx.nodemask_to);
/*
* In the default hierarchy, enabling cpuset in the child cgroups
@@ -3211,7 +3210,7 @@ static void cpuset_attach(struct cgroup_taskset *tset)
*/
if (is_memory_migrate(cs)) {
cpuset_migrate_mm(mm, &oldcs->old_mems_allowed,
- &cpuset_attach_nodemask_to);
+ &attach_ctx.nodemask_to);
queue_task_work = true;
} else
mmput(mm);
@@ -3221,7 +3220,7 @@ static void cpuset_attach(struct cgroup_taskset *tset)
out:
if (queue_task_work)
schedule_flush_migrate_mm();
- cs->old_mems_allowed = cpuset_attach_nodemask_to;
+ cs->old_mems_allowed = attach_ctx.nodemask_to;
if (cs->nr_migrate_dl_tasks) {
cs->nr_deadline_tasks += cs->nr_migrate_dl_tasks;
@@ -3685,7 +3684,7 @@ static void cpuset_fork(struct task_struct *task)
/* CLONE_INTO_CGROUP */
mutex_lock(&cpuset_mutex);
- guarantee_online_mems(cs, &cpuset_attach_nodemask_to);
+ guarantee_online_mems(cs, &attach_ctx.nodemask_to);
cpuset_attach_task(cs, task);
dec_attach_in_progress_locked();
--
2.54.0