Messages in this thread | | | Date | Tue, 02 Mar 2010 01:36:25 +0900 | From | Tejun Heo <> | Subject | Re: [PATCH 10/43] stop_machine: reimplement without using workqueue |
| |
Hello,
On 03/02/2010 12:37 AM, Oleg Nesterov wrote: >> Hmmm... I'm probably missing something but I don't see how >> stop_machine_cpu_callback(CPU_POST_DEAD) depends on stop_cpu() thread >> already parked in schedule(). Can you elaborate a bit? > > Suppose that, when stop_machine_cpu_callback(CPU_POST_DEAD) is called, > that stop_cpu() thread T is still running and it is going to check state > before schedule(). > > CPU_POST_DEAD is called after cpu_hotplug_done(), another CPU can do > stop_machine() and set STOPMACHINE_PREPARE. > > If T sees state == STOPMACHINE_PREPARE it will join the game, but it > wasn't counted in thread_ack counter, it is not cpu-bound, etc.
Oh, I see. I was thinking get/put_online_cpus() block is exclusive against cpu_maps_update_begin/done() instead of cpu_hotplug_begin/done(). Will update and add comments.
Thanks.
-- tejun
| |