Commit 080ff351 authored by Jens Axboe's avatar Jens Axboe

blk-mq: re-check for available tags after running the hardware queue

If we run out of tags and have to sleep, we run the hardware queue
to kick pending IO into gear. During that run, we may have completed
requests, so re-check if we have free tags before going to sleep.
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent b3223207
......@@ -261,6 +261,14 @@ static int bt_get(struct blk_mq_alloc_data *data,
*/
blk_mq_run_hw_queue(hctx, false);
/*
* Retry tag allocation after running the hardware queue,
* as running the queue may also have found completions.
*/
tag = __bt_get(hctx, bt, last_tag);
if (tag != -1)
break;
blk_mq_put_ctx(data->ctx);
io_schedule();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment