Re: current linux-2.6.git: cpusets completely broken

From: Dmitry Adamushko
Date: Fri Jul 11 2008 - 19:53:31 EST


2008/7/12 Max Krasnyansky <maxk@xxxxxxxxxxxx>:
> Dmitry Adamushko wrote:
>>
>> Does the patch below help?
>>
>> (non-white-space-damaged version is attached)
>>
>> diff --git a/kernel/cpuset.c b/kernel/cpuset.c
>> index 9fceb97..ae61dc9 100644
>> --- a/kernel/cpuset.c
>> +++ b/kernel/cpuset.c
>> @@ -1912,11 +1912,21 @@ static void common_cpu_mem_hotplug_unplug(void)
>> static int cpuset_handle_cpuhp(struct notifier_block *unused_nb,
>> unsigned long phase, void *unused_cpu)
>> {
>> - if (phase == CPU_DYING || phase == CPU_DYING_FROZEN)
>> + swicth (phase) {
>> + case CPU_UP_CANCELED:
>> + case CPU_UP_CANCELED_FROZEN:
>> + case CPU_DOWN_FAILED:
>> + case CPU_DOWN_FAILED_FROZEN:
>> + case CPU_ONLINE:
>> + case CPU_ONLINE_FROZEN:
>> + case CPU_DEAD:
>> + case CPU_DEAD_FROZEN:
>> + common_cpu_mem_hotplug_unplug();
>> + break;
>> + default:
>> return NOTIFY_DONE;
>
> I was always wondering why we're running that logic for every hotplug event.
> For example, do we care for UP_CANCELED* and DOWN_FAILED* ? Presumably
> nothing should've changed, no ?

I guess, it's to revert the effect of CPU_{DOWN | UP}_PREPARE.

e.g. CPU_DOWN_PREPARE detaches/destroys sched-domains... so if a
cpu-down op. fails, we restore them to their inital state.


> btw I'm just going by the name of the event. So UP_CANCELED to me sounds
> like CPU never got to the ONLINE stage and cpuset should not really care.

Yes, if it has not done anything for UP_PREPARE (and no one else on
behave of it).


>
> Max
>

--
Best regards,
Dmitry Adamushko
--
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/