diff options
author | Jens Axboe <axboe@fb.com> | 2014-12-22 14:04:42 -0700 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2014-12-31 09:39:16 -0700 |
commit | aed3ea94bdd2ac0a21ed0103d34097e202ee77f6 (patch) | |
tree | e432ae8b2224a4172e4c91350b0135b14c587442 /block/blk-mq-tag.h | |
parent | 2b25d981790b830f0e045881386866b970bf9066 (diff) |
block: wake up waiters when a queue is marked dying
If it's dying, we can't expect new request to complete and come
in an wake up other tasks waiting for requests. So after we
have marked it as dying, wake up everybody currently waiting
for a request. Once they wake, they will retry their allocation
and fail appropriately due to the state of the queue.
Tested-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block/blk-mq-tag.h')
-rw-r--r-- | block/blk-mq-tag.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/block/blk-mq-tag.h b/block/blk-mq-tag.h index 6206ed17ef7..a6fa0fc9d41 100644 --- a/block/blk-mq-tag.h +++ b/block/blk-mq-tag.h @@ -54,6 +54,7 @@ extern bool blk_mq_has_free_tags(struct blk_mq_tags *tags); extern ssize_t blk_mq_tag_sysfs_show(struct blk_mq_tags *tags, char *page); extern void blk_mq_tag_init_last_tag(struct blk_mq_tags *tags, unsigned int *last_tag); extern int blk_mq_tag_update_depth(struct blk_mq_tags *tags, unsigned int depth); +extern void blk_mq_tag_wakeup_all(struct blk_mq_tags *tags, bool); enum { BLK_MQ_TAG_CACHE_MIN = 1, |