[PATCH-next v9 04/11] cgroup/cpuset: Put all task attach related variables into attach_ctx
From: Waiman Long
Date: Mon Jun 29 2026 - 23:35:09 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>
Reviewed-by: Ridong Chen <ridong.chen@xxxxxxxxx>
---
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 1a78d0590737..47aa8f2fdfdc 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;
/*
@@ -3015,8 +3017,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.
@@ -3048,8 +3048,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);
@@ -3152,7 +3152,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)
{
@@ -3169,7 +3168,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);
}
@@ -3179,7 +3178,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;
@@ -3191,7 +3190,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
@@ -3230,7 +3229,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);
@@ -3240,7 +3239,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) {
atomic_add(cs->nr_migrate_dl_tasks, &cs->nr_deadline_tasks);
@@ -3693,7 +3692,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