block: move queue run on unplug to kblockd
There are worries that we are now consuming a lot more stack in some cases, since we potentially call into IO dispatch from schedule() or io_schedule(). We can reduce this problem by moving the running of the queue to kblockd, like the old plugging scheme did as well. This may or may not be a good idea from a performance perspective, depending on how many tasks have queue plugs running at the same time. For even the slightly contended case, doing just a single queue run from kblockd instead of multiple runs directly from the unpluggers will be faster. Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
This commit is contained in:
parent
cf82c79839
commit
f4af3c3d07
1 changed files with 1 additions and 1 deletions
|
@ -2665,7 +2665,7 @@ static int plug_rq_cmp(void *priv, struct list_head *a, struct list_head *b)
|
|||
static void queue_unplugged(struct request_queue *q, unsigned int depth)
|
||||
{
|
||||
trace_block_unplug_io(q, depth);
|
||||
__blk_run_queue(q, false);
|
||||
__blk_run_queue(q, true);
|
||||
|
||||
if (q->unplugged_fn)
|
||||
q->unplugged_fn(q);
|
||||
|
|
Loading…
Reference in a new issue