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:
@@ -81,6 +81,15 @@ void blk_mq_freeze_queue_wait(struct request_queue *q)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(blk_mq_freeze_queue_wait);
|
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
|
* Guarantee no request is in use, so we can change any data structure of
|
||||||
* the queue afterward.
|
* 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_unfreeze_queue(struct request_queue *q);
|
||||||
void blk_mq_freeze_queue_start(struct request_queue *q);
|
void blk_mq_freeze_queue_start(struct request_queue *q);
|
||||||
void blk_mq_freeze_queue_wait(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_reinit_tagset(struct blk_mq_tag_set *set);
|
||||||
|
|
||||||
int blk_mq_map_queues(struct blk_mq_tag_set *set);
|
int blk_mq_map_queues(struct blk_mq_tag_set *set);
|
||||||
|
Reference in New Issue
Block a user