Re: [regression] cpuset,mm: update tasks' mems_allowed in time (58568d2)

From: Miao Xie
Date: Tue Feb 23 2010 - 04:24:15 EST


on 2010-2-23 16:55, David Rientjes wrote:
> Cpu hotplug sets top_cpuset's cpus_allowed to cpu_active_mask by default,
> regardless of what was onlined or offlined. cpus_attach in the context of
> your patch (in cpuset_attach()) passes cpu_possible_mask to
> set_cpus_allowed_ptr() if the task is being attached to top_cpuset, my
> question was why don't we pass cpu_active_mask instead? In other words, I
> think we should do
>
> cpumask_copy(cpus_attach, cpu_active_mask);
>
> when attached to top_cpuset like my patch did.

If we pass cpu_active_mask to set_cpus_allowed_ptr(), task->cpus_allowed just contains
the online cpus. In this way, if we do cpu hotplug(such as: online some cpu), we must
update cpus_allowed of all tasks in the top cpuset.

But if we pass cpu_possible_mask, we needn't update cpus_allowed of all tasks in the
top cpuset. And when the kernel looks for a cpu for task to run, the kernel will use
cpu_active_mask to filter out offline cpus in task->cpus_allowed. Thus, it is safe.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/