diff options
author | Keith Busch <keith.busch@intel.com> | 2017-03-01 14:22:10 -0500 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-03-02 10:56:04 -0500 |
commit | 6bae363ee3057a14eec93440826813603559273a (patch) | |
tree | 0f2b50ad0ed9469a72fa81968a4ff53bcd58397d | |
parent | 6a8a21546507a3ec88e81c2ec927a3fb63efa8ff (diff) |
blk-mq: Export blk_mq_freeze_queue_wait
Drivers can start a freeze, so this provides a way to wait for frozen.
Signed-off-by: Keith Busch <keith.busch@intel.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r-- | block/blk-mq.c | 3 | ||||
-rw-r--r-- | include/linux/blk-mq.h | 1 |
2 files changed, 3 insertions, 1 deletions
diff --git a/block/blk-mq.c b/block/blk-mq.c index 94593c6282d8..8da2c04bb88f 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c | |||
@@ -75,10 +75,11 @@ void blk_mq_freeze_queue_start(struct request_queue *q) | |||
75 | } | 75 | } |
76 | EXPORT_SYMBOL_GPL(blk_mq_freeze_queue_start); | 76 | EXPORT_SYMBOL_GPL(blk_mq_freeze_queue_start); |
77 | 77 | ||
78 | static void blk_mq_freeze_queue_wait(struct request_queue *q) | 78 | void blk_mq_freeze_queue_wait(struct request_queue *q) |
79 | { | 79 | { |
80 | wait_event(q->mq_freeze_wq, percpu_ref_is_zero(&q->q_usage_counter)); | 80 | wait_event(q->mq_freeze_wq, percpu_ref_is_zero(&q->q_usage_counter)); |
81 | } | 81 | } |
82 | EXPORT_SYMBOL_GPL(blk_mq_freeze_queue_wait); | ||
82 | 83 | ||
83 | /* | 84 | /* |
84 | * Guarantee no request is in use, so we can change any data structure of | 85 | * Guarantee no request is in use, so we can change any data structure of |
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h index 001d30d727c5..8dacf680c851 100644 --- a/include/linux/blk-mq.h +++ b/include/linux/blk-mq.h | |||
@@ -245,6 +245,7 @@ void blk_mq_tagset_busy_iter(struct blk_mq_tag_set *tagset, | |||
245 | void blk_mq_freeze_queue(struct request_queue *q); | 245 | void blk_mq_freeze_queue(struct request_queue *q); |
246 | void blk_mq_unfreeze_queue(struct request_queue *q); | 246 | void blk_mq_unfreeze_queue(struct request_queue *q); |
247 | void blk_mq_freeze_queue_start(struct request_queue *q); | 247 | void blk_mq_freeze_queue_start(struct request_queue *q); |
248 | void blk_mq_freeze_queue_wait(struct request_queue *q); | ||
248 | int blk_mq_reinit_tagset(struct blk_mq_tag_set *set); | 249 | int blk_mq_reinit_tagset(struct blk_mq_tag_set *set); |
249 | 250 | ||
250 | int blk_mq_map_queues(struct blk_mq_tag_set *set); | 251 | int blk_mq_map_queues(struct blk_mq_tag_set *set); |