Re: [PATCH, RFC] reimplement flush_workqueue()

!MAILaRCHIVE_VOTE_RePLACE
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)