blk-mq: Provide freeze queue timeout
A driver may wish to take corrective action if queued requests do not complete within a set time. Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
6bae363ee3
commit
f91328c40a
|
@ -81,6 +81,15 @@ void blk_mq_freeze_queue_wait(struct request_queue *q)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(blk_mq_freeze_queue_wait);
|
||||
|
||||
int blk_mq_freeze_queue_wait_timeout(struct request_queue *q,
|
||||
unsigned long timeout)
|
||||
{
|
||||
return wait_event_timeout(q->mq_freeze_wq,
|
||||
percpu_ref_is_zero(&q->q_usage_counter),
|
||||
timeout);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(blk_mq_freeze_queue_wait_timeout);
|
||||
|
||||
/*
|
||||
* Guarantee no request is in use, so we can change any data structure of
|
||||
* the queue afterward.
|
||||
|
|
|
@ -246,6 +246,8 @@ void blk_mq_freeze_queue(struct request_queue *q);
|
|||
void blk_mq_unfreeze_queue(struct request_queue *q);
|
||||
void blk_mq_freeze_queue_start(struct request_queue *q);
|
||||
void blk_mq_freeze_queue_wait(struct request_queue *q);
|
||||
int blk_mq_freeze_queue_wait_timeout(struct request_queue *q,
|
||||
unsigned long timeout);
|
||||
int blk_mq_reinit_tagset(struct blk_mq_tag_set *set);
|
||||
|
||||
int blk_mq_map_queues(struct blk_mq_tag_set *set);
|
||||
|
|
Loading…
Reference in New Issue