aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/blk-mq.h
diff options
context:
space:
mode:
authorSagi Grimberg <sagi@grimberg.me>2016-07-06 08:55:48 -0400
committerJens Axboe <axboe@fb.com>2016-07-08 10:38:49 -0400
commit486cf9899e311838b6ab95d19ff87c4da44d6508 (patch)
treee80448aaa15469f06c1215f46fd1494fc7ab9761 /include/linux/blk-mq.h
parentd9e46d5d7cb0d27a07f6c33a90ac6b4b522a5657 (diff)
blk-mq: Introduce blk_mq_reinit_tagset
The new nvme-rdma driver will need to reinitialize all the tags as part of the error recovery procedure (realloc the tag memory region). Add a helper in blk-mq for it that can iterate over all requests in a tagset to make this easier. Signed-off-by: Sagi Grimberg <sagi@grimberg.me> Tested-by: Ming Lin <ming.l@ssi.samsung.com> Reviewed-by: Stephen Bates <Stephen.Bates@pmcs.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Steve Wise <swise@opengridcomputing.com> Tested-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'include/linux/blk-mq.h')
-rw-r--r--include/linux/blk-mq.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
index cbfd8ca5f13e..e43bbffb5b7a 100644
--- a/include/linux/blk-mq.h
+++ b/include/linux/blk-mq.h
@@ -96,6 +96,7 @@ typedef int (init_request_fn)(void *, struct request *, unsigned int,
96 unsigned int, unsigned int); 96 unsigned int, unsigned int);
97typedef void (exit_request_fn)(void *, struct request *, unsigned int, 97typedef void (exit_request_fn)(void *, struct request *, unsigned int,
98 unsigned int); 98 unsigned int);
99typedef int (reinit_request_fn)(void *, struct request *);
99 100
100typedef void (busy_iter_fn)(struct blk_mq_hw_ctx *, struct request *, void *, 101typedef void (busy_iter_fn)(struct blk_mq_hw_ctx *, struct request *, void *,
101 bool); 102 bool);
@@ -145,6 +146,7 @@ struct blk_mq_ops {
145 */ 146 */
146 init_request_fn *init_request; 147 init_request_fn *init_request;
147 exit_request_fn *exit_request; 148 exit_request_fn *exit_request;
149 reinit_request_fn *reinit_request;
148}; 150};
149 151
150enum { 152enum {
@@ -245,6 +247,7 @@ void blk_mq_tagset_busy_iter(struct blk_mq_tag_set *tagset,
245void blk_mq_freeze_queue(struct request_queue *q); 247void blk_mq_freeze_queue(struct request_queue *q);
246void blk_mq_unfreeze_queue(struct request_queue *q); 248void blk_mq_unfreeze_queue(struct request_queue *q);
247void blk_mq_freeze_queue_start(struct request_queue *q); 249void blk_mq_freeze_queue_start(struct request_queue *q);
250int blk_mq_reinit_tagset(struct blk_mq_tag_set *set);
248 251
249void blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set, int nr_hw_queues); 252void blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set, int nr_hw_queues);
250 253