Re: [PATCH 17/21] workqueue: simple reimplementation ofSINGLE_THREAD workqueue

From: Johannes Berg
Date: Tue Nov 17 2009 - 09:04:01 EST


On Tue, 2009-11-17 at 02:15 +0900, Tejun Heo wrote:
> SINGLE_THREAD workqueues are used to reduce the number of worker
> threads and ease synchronization.

Wireless (mac80211) also requires that the order in which different work
structs are queued up is identical to the processing order. At least
some code was written with that assumption in mind, and I think it's
actually required in a few places.

Also, that unlikely() here:

> + if (unlikely(single_thread)) {
> + mutex_lock(&wq->single_thread_mutex);
> + f(work);
> + mutex_unlock(&wq->single_thread_mutex);
> + } else
> + f(work);

seems wrong, there are many single-threaded workqueues after all.

johannes

Attachment: signature.asc
Description: This is a digitally signed message part