Thread (61 messages) 61 messages, 7 authors, 2011-04-20

Re: [PATCH 05/10] block: remove per-queue plugging

From: "hch@infradead.org" <hch@infradead.org>
Date: 2011-04-12 16:44:23
Also in: dm-devel, lkml

On Tue, Apr 12, 2011 at 02:58:46PM +0200, Jens Axboe wrote:
Supposedly it's faster to do it inline rather than punt the dispatch.
But that may actually not be true, if you have multiple plugs going (and
thus multiple contenders for the queue lock on dispatch). So lets play
it safe and punt to kblockd, we can always revisit this later.
Note that this can be optimized further by adding a new helper that just
queues up work on kblockd without taking the queue lock, e.g. adding a
new

void blk_run_queue_async(struct request_queue *q)
{
	if (likely(!blk_queue_stopped(q)))
		queue_delayed_work(kblockd_workqueue, &q->delay_work, 0);
}

And replacing all

	__blk_run_queue(q, true);

callers with that, at which point they won't need the queuelock any
more.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help