All of lore.kernel.org
 help / color / mirror / Atom feed
* cpuset: Check if the cpus allowed is a subset of the cpuset's cpus for PF_THREAD_BOUND threads
@ 2009-03-12 17:45 Dhaval Giani
  2009-03-13  0:06 ` [tip:sched/urgent] " Dhaval Giani
  0 siblings, 1 reply; 4+ messages in thread
From: Dhaval Giani @ 2009-03-12 17:45 UTC (permalink / raw)
  To: Srivatsa Vaddagiri, lkml, Andrew Morton, menage; +Cc: Balbir Singh


When a kernel thread which has been bound to a CPU is moved to
a cpuset which is a superset of the CPU it is bound to, the
movement fails.

[root@llm11 cgroups]# mkdir a
[root@llm11 cgroups]# echo 3 > a/cpuset.cpus
[root@llm11 cgroups]# echo 0 > a/cpuset.mems
[root@llm11 cgroups]# echo 12 > a/tasks
[root@llm11 cgroups]# echo 12 > tasks
-bash: echo: write error: Invalid argument
[root@llm11 cgroups]# cat cpuset.cpus
0-7
[root@llm11 cgroups]#

(pid 12 is the migration thread bound to CPU 3)

Change the check to see if the cpus allowed is a subset of the
cpus allowed for that cpuset.

Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
---
 kernel/cpuset.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -1362,7 +1362,7 @@ static int cpuset_can_attach(struct cgro
 
 	if (tsk->flags & PF_THREAD_BOUND) {
 		mutex_lock(&callback_mutex);
-		if (!cpumask_equal(&tsk->cpus_allowed, cs->cpus_allowed))
+		if (!cpumask_subset(&tsk->cpus_allowed, cs->cpus_allowed))
 			ret = -EINVAL;
 		mutex_unlock(&callback_mutex);
 	}
-- 
regards,
Dhaval

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-03-13  1:43 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-12 17:45 cpuset: Check if the cpus allowed is a subset of the cpuset's cpus for PF_THREAD_BOUND threads Dhaval Giani
2009-03-13  0:06 ` [tip:sched/urgent] " Dhaval Giani
2009-03-13  1:32   ` Ingo Molnar
2009-03-13  1:43     ` Li Zefan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.