Re: [Lse-tech] Re: [PATCH] cpusets+hotplug+preepmt broken

Srivatsa Vaddagiri
2005-05-13T17:28:54Z

On Fri, May 13, 2005 at 06:02:17PM +0530, Dinakar Guniguntala wrote:
> attach_task in cpuset.c is called without holding the hotplug
> lock and it is possible to call set_cpus_allowed for a task with no
> online cpus.

This in fact was the reason that we added lock_cpu_hotplug in sched_setaffinity.

Also guarantee_online_cpus seems to be accessing cpu_online_map with preemption
enabled (& no hotplug lock taken). This is highly not recommended.

> Given this I think the patch I sent first is the most appropriate
> patch.

I agree that taking the hotplug lock seems reasonable here.

> In addition we also need to take hotplug lock in the cpusets
> code whenever we are modifying cpus_allowed of a task. IOW make cpusets
> and hotplug operations completly exclusive to each other. The same
> applies to memory hotplug code once it gets in.
>
> However on the downside this would mean
> 1. A lot of nested locks (mostly in cpuset_common_file_write)
> 2. Taking of hotplug (cpu now and later memory) locks for operations
> that may just be updating a flag

Given the fact that CPU/Memory hotplug and cpuset operation may
be infrequent events, this will probably be not a concern.

--

Thanks and Regards,
Srivatsa Vaddagiri,
Linux Technology Center,
IBM Software Labs,
Bangalore, INDIA - 560017