Messages in this thread | | | Date | Sat, 12 Jul 2008 01:53:19 +0200 | From | "Dmitry Adamushko" <> | Subject | Re: current linux-2.6.git: cpusets completely broken |
| |
2008/7/12 Max Krasnyansky <maxk@qualcomm.com>: > 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
| |