Re: [PATCH V2 00/15] workqueue: enhance locking and lookup workervia ID

From: Lai Jiangshan
Date: Mon Feb 18 2013 - 11:29:11 EST


On 19/02/13 00:12, Lai Jiangshan wrote:
Core patches are patch 1, patch 9, patch 13

Patch 1: enhance locking
Patch 9: recorde worker id to work->data instead of pool id
lookup worker via worker ID if offq
Patch 13:also lookup worker via worker ID if running&&queued,
remove lookup via hashtable

Patch 6-8: ensure modification to worker->pool is under pool lock held
Patch 14: remove hashtable totally

other patch is preparing-patch or cleanup.

Patchset is on top of tj/for-3.9
8d03ecfe471802d6afe97da97722b6924533aa82
workqueue: reimplement is_chained_work() using current_wq_worker()

Some other patches will be sent tomorrow or later(need to consider/merge with your review comments at first)

Thanks,
lai



Lai Jiangshan (15):
workqueue: add lock_work_pool()
workqueue: allow more work_pool id space
workqueue: remname worker->id to worker->id_in_pool
workqueue: add worker's global worker ID
workqueue: only set pool id when the work is running
workqueue: use current instead of worker->task in
worker_maybe_bind_and_lock()
workqueue: change argument of worker_maybe_bind_and_lock() to pool
workqueue: only change worker->pool with pool lock held
workqueue: use worker id instead
workqueue: avoid unneeded calls to get_work_cwq(work)
workqueue: split work_flags to delayed_flags and color_flags in
__queue_work()
workqueue: add extra flags to set_work_worker_and_keep_pending()
workqueue: also record worker in work->data if running&&queued
workqueue: convert busy hash to busy list
workqueue: queue worker to busy list

include/linux/workqueue.h | 25 +-
kernel/workqueue.c | 522 ++++++++++++++++++++++++-------------------
kernel/workqueue_internal.h | 17 +-
3 files changed, 314 insertions(+), 250 deletions(-)


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/