On Thu, 2007-10-18 at 19:48 +0400, Oleg Nesterov wrote:
quoted
+void flush_work_sync(struct work_struct *work)
If we really the new helper, perhaps we can make it a bit better?
1. Modify insert_work() to take the "struct list_head *at" parameter instead
of "int tail". I think this patch will also cleanup the code a bit, and
shrink a couple of bytes from .text
2. flush_work_sync() inserts a barrier right after this work and blocks.
We still need some retry logic to handle the queueing is in progress
of course, but we won't spin waiting for the other works.
3. Add lockdep annotation like the other API. :) Andrew just sent my
patch (used to be two patches by somebody's request but that's fine)
titled "workqueue: debug flushing deadlocks with lockdep" to Linus.
johannes