Re: [PATCH, RFC] reimplement flush_workqueue()

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Oleg Nesterov <oleg@...>
Cc: Andrew Morton <akpm@...>, David Howells <dhowells@...>, Christoph Hellwig <hch@...>, Ingo Molnar <mingo@...>, Linus Torvalds <torvalds@...>, <linux-kernel@...>, Gautham shenoy <ego@...>
Date: Thursday, January 4, 2007 - 7:32 am

On Tue, Dec 19, 2006 at 03:43:19AM +0300, Oleg Nesterov wrote:

... and acquires it again after woken from sleep. That can be a problem, which
will lead to the problem described here:

http://lkml.org/lkml/2006/12/7/374

In brief:

keventd thread hotplug thread
-------------- --------------

run_workqueue()
|
work_fn()
|
flush_workqueue()
|
flush_cpu_workqueue
| cpu_down()
mutex_unlock(wq_mutex); |
(above opens window for hotplug) mutex_lock(wq_mutex);
| /* bring down cpu */
wait_for_completition(); notifier(CPU_DEAD, ..)
| workqueue_cpu_callback
| cleanup_workqueue_thread
| kthread_stop()
|
|
mutex_lock(wq_mutex); <- Can deadlock

The kthread_stop() will wait for keventd() thread to exit, but keventd()
is blocked on mutex_lock(wq_mutex) leading to a deadlock.

>

--
Regards,
vatsa
-

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [PATCH, RFC] reimplement flush_workqueue(), Srivatsa Vaddagiri, (Thu Jan 4, 7:32 am)
Re: [PATCH, RFC] reimplement flush_workqueue(), Oleg Nesterov, (Thu Jan 4, 10:29 am)
Re: [PATCH, RFC] reimplement flush_workqueue(), Srivatsa Vaddagiri, (Thu Jan 4, 11:56 am)
Re: [PATCH, RFC] reimplement flush_workqueue(), Oleg Nesterov, (Thu Jan 4, 12:31 pm)
Re: [PATCH, RFC] reimplement flush_workqueue(), Srivatsa Vaddagiri, (Thu Jan 4, 12:57 pm)
Re: [PATCH, RFC] reimplement flush_workqueue(), Andrew Morton, (Thu Jan 4, 1:18 pm)
[PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Oleg Nesterov, (Sat Jan 6, 11:10 am)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Srivatsa Vaddagiri, (Sat Jan 6, 11:45 am)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Oleg Nesterov, (Sat Jan 6, 12:30 pm)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Srivatsa Vaddagiri, (Sat Jan 6, 12:38 pm)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Oleg Nesterov, (Sat Jan 6, 1:34 pm)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Srivatsa Vaddagiri, (Sun Jan 7, 6:43 am)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Oleg Nesterov, (Sun Jan 7, 8:56 am)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Srivatsa Vaddagiri, (Sun Jan 7, 12:21 pm)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Oleg Nesterov, (Sun Jan 7, 1:09 pm)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Oleg Nesterov, (Sun Jan 7, 10:22 am)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Srivatsa Vaddagiri, (Sun Jan 7, 12:43 pm)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Oleg Nesterov, (Sun Jan 7, 1:18 pm)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Srivatsa Vaddagiri, (Sun Jan 7, 1:01 pm)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Oleg Nesterov, (Sun Jan 7, 1:33 pm)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Oleg Nesterov, (Sun Jan 7, 10:42 am)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Andrew Morton, (Sat Jan 6, 3:11 pm)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Srivatsa Vaddagiri, (Sun Jan 7, 7:00 am)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Andrew Morton, (Sun Jan 7, 3:59 pm)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Srivatsa Vaddagiri, (Mon Jan 8, 11:37 am)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Oleg Nesterov, (Sun Jan 7, 5:51 pm)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Srivatsa Vaddagiri, (Mon Jan 8, 11:22 am)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Oleg Nesterov, (Mon Jan 8, 11:56 am)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Srivatsa Vaddagiri, (Mon Jan 8, 12:31 pm)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Oleg Nesterov, (Mon Jan 8, 1:06 pm)
RE: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Pallipadi, Venkatesh, (Mon Jan 8, 2:37 pm)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Srivatsa Vaddagiri, (Mon Jan 8, 9:11 pm)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Srivatsa Vaddagiri, (Tue Jan 9, 12:39 am)
Re: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update, Oleg Nesterov, (Tue Jan 9, 10:38 am)
Re: [PATCH] flush_cpu_workqueue: don't flush an empty -&gt;w..., Srivatsa Vaddagiri, (Tue Jan 9, 1:04 am)
Re: [PATCH] flush_cpu_workqueue: don't flush an empty -&gt;w..., Srivatsa Vaddagiri, (Tue Jan 9, 11:59 am)
Re: [PATCH] flush_cpu_workqueue: don't flush an empty -&gt;w..., Srivatsa Vaddagiri, (Tue Jan 9, 12:46 pm)
Re: [PATCH] flush_cpu_workqueue: don't flush an empty -&gt;w..., Srivatsa Vaddagiri, (Mon Jan 15, 12:33 am)
Re: [PATCH] flush_cpu_workqueue: don't flush an empty -&gt;w..., Srivatsa Vaddagiri, (Mon Jan 15, 12:18 pm)
Re: [PATCH] flush_cpu_workqueue: don't flush an empty -&gt;w..., Srivatsa Vaddagiri, (Tue Jan 9, 5:33 am)
Re: [PATCH] flush_cpu_workqueue: don't flush an empty -&gt;w..., Srivatsa Vaddagiri, (Tue Jan 9, 6:09 am)
Re: [PATCH, RFC] reimplement flush_workqueue(), Srivatsa Vaddagiri, (Fri Jan 5, 4:56 am)
Re: [PATCH, RFC] reimplement flush_workqueue(), Oleg Nesterov, (Fri Jan 5, 8:42 am)
Re: [PATCH, RFC] reimplement flush_workqueue(), Srivatsa Vaddagiri, (Sat Jan 6, 11:11 am)
Re: [PATCH, RFC] reimplement flush_workqueue(), Oleg Nesterov, (Thu Jan 4, 2:09 pm)
Re: [PATCH, RFC] reimplement flush_workqueue(), Andrew Morton, (Thu Jan 4, 2:31 pm)
Re: [PATCH, RFC] reimplement flush_workqueue(), Srivatsa Vaddagiri, (Fri Jan 5, 5:03 am)
Re: [PATCH, RFC] reimplement flush_workqueue(), Oleg Nesterov, (Fri Jan 5, 10:07 am)
Re: [PATCH, RFC] reimplement flush_workqueue(), Srivatsa Vaddagiri, (Sat Jan 6, 11:24 am)