diff options
author | Sam Bradshaw <sbradshaw@micron.com> | 2014-05-23 15:30:16 -0400 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2014-05-23 15:30:16 -0400 |
commit | edf866b3805c5651bf7d035b72dc0190cb6ff4a7 (patch) | |
tree | 92396c09eb02e704abee45c72988b2616b31b0de /block | |
parent | 07068d5b8ed8fa6759b2826ba9197e49b69a1fc3 (diff) |
blk-mq: export blk_mq_tag_busy_iter
Export the blk-mq in-flight tag iterator for driver consumption.
This is particularly useful in exception paths or SRSI where
in-flight IOs need to be cancelled and/or reissued. The NVMe driver
conversion will use this.
Signed-off-by: Sam Bradshaw <sbradshaw@micron.com>
Signed-off-by: Matias Bjørling <m@bjorling.me>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block')
-rw-r--r-- | block/blk-mq-tag.c | 1 | ||||
-rw-r--r-- | block/blk-mq-tag.h | 1 |
2 files changed, 1 insertions, 1 deletions
diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c index f6dea968b710..05e2baf4fa0d 100644 --- a/block/blk-mq-tag.c +++ b/block/blk-mq-tag.c | |||
@@ -400,6 +400,7 @@ void blk_mq_tag_busy_iter(struct blk_mq_tags *tags, | |||
400 | fn(data, tag_map); | 400 | fn(data, tag_map); |
401 | kfree(tag_map); | 401 | kfree(tag_map); |
402 | } | 402 | } |
403 | EXPORT_SYMBOL(blk_mq_tag_busy_iter); | ||
403 | 404 | ||
404 | static unsigned int bt_unused_tags(struct blk_mq_bitmap_tags *bt) | 405 | static unsigned int bt_unused_tags(struct blk_mq_bitmap_tags *bt) |
405 | { | 406 | { |
diff --git a/block/blk-mq-tag.h b/block/blk-mq-tag.h index e7ff5ceeeb97..2e5e6872d089 100644 --- a/block/blk-mq-tag.h +++ b/block/blk-mq-tag.h | |||
@@ -51,7 +51,6 @@ extern void blk_mq_free_tags(struct blk_mq_tags *tags); | |||
51 | extern unsigned int blk_mq_get_tag(struct blk_mq_hw_ctx *hctx, unsigned int *last_tag, gfp_t gfp, bool reserved); | 51 | extern unsigned int blk_mq_get_tag(struct blk_mq_hw_ctx *hctx, unsigned int *last_tag, gfp_t gfp, bool reserved); |
52 | extern void blk_mq_wait_for_tags(struct blk_mq_hw_ctx *hctx, bool reserved); | 52 | extern void blk_mq_wait_for_tags(struct blk_mq_hw_ctx *hctx, bool reserved); |
53 | extern void blk_mq_put_tag(struct blk_mq_hw_ctx *hctx, unsigned int tag, unsigned int *last_tag); | 53 | extern void blk_mq_put_tag(struct blk_mq_hw_ctx *hctx, unsigned int tag, unsigned int *last_tag); |
54 | extern void blk_mq_tag_busy_iter(struct blk_mq_tags *tags, void (*fn)(void *data, unsigned long *), void *data); | ||
55 | extern bool blk_mq_has_free_tags(struct blk_mq_tags *tags); | 54 | extern bool blk_mq_has_free_tags(struct blk_mq_tags *tags); |
56 | extern ssize_t blk_mq_tag_sysfs_show(struct blk_mq_tags *tags, char *page); | 55 | extern ssize_t blk_mq_tag_sysfs_show(struct blk_mq_tags *tags, char *page); |
57 | extern void blk_mq_tag_init_last_tag(struct blk_mq_tags *tags, unsigned int *last_tag); | 56 | extern void blk_mq_tag_init_last_tag(struct blk_mq_tags *tags, unsigned int *last_tag); |