Patch 1~4 fix possible bugs. Patch 1 fix possible double-write bug Patch 2,5,6 makes the waiting logic more clear Patch 3,4 fix bugs from manage VS hotplug Patch 7,8,9,10 explicit logic to wait in busy-work-rebind and make rebind_workers() single pass.
Change from V3. A new approach to fix the bug manage VS hotplug. The new approach still need POOL_MANAGING_WORKERS. so patch3 is kept. busy-work-rebind wait on a different thing to wait all idles. so the patch 8,9,10 's aim and changlog are almost not changed, but the code are changed a little.(based on synchronize_all_idles_rebound()) Lai Jiangshan (10): workqueue: ensure the wq_worker_sleeping() see the right flags workqueue: fix deadlock in rebind_workers() workqueue: add POOL_MANAGING_WORKERS workqueue: add manage_workers_slowpath() workqueue: move rebind_hold to idle_rebind workqueue: simple clear WORKER_REBIND workqueue: move idle_rebind pointer to gcwq workqueue: explicit way to wait for idles workers to finish workqueue: single pass rebind_workers workqueue: merge the role of rebind_hold to idle_done kernel/workqueue.c | 236 +++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 187 insertions(+), 49 deletions(-) -- 1.7.4.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/