diff options
Diffstat (limited to 'block')
-rw-r--r-- | block/blk-mq-tag.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c index 230ef3056b72..eb55492e6875 100644 --- a/block/blk-mq-tag.c +++ b/block/blk-mq-tag.c | |||
@@ -254,6 +254,13 @@ static int bt_get(struct blk_mq_alloc_data *data, | |||
254 | if (tag != -1) | 254 | if (tag != -1) |
255 | break; | 255 | break; |
256 | 256 | ||
257 | /* | ||
258 | * We're out of tags on this hardware queue, kick any | ||
259 | * pending IO submits before going to sleep waiting for | ||
260 | * some to complete. | ||
261 | */ | ||
262 | blk_mq_run_hw_queue(hctx, false); | ||
263 | |||
257 | blk_mq_put_ctx(data->ctx); | 264 | blk_mq_put_ctx(data->ctx); |
258 | 265 | ||
259 | io_schedule(); | 266 | io_schedule(); |