path: root/block/blk-mq-tag.h
diff options
authorMing Lei <>2020-05-29 15:53:14 +0200
committerJens Axboe <>2020-05-29 10:23:25 -0600
commit602380d28e28b454683efac41dc4b2862d055d91 (patch)
tree105845e989e30adfe630116e790f73ee68bf5641 /block/blk-mq-tag.h
parent600c3b0cea784aaba77df3ed4a6b4f2ebfa935ce (diff)
blk-mq: add blk_mq_all_tag_iter
Add a new blk_mq_all_tag_iter function to iterate over all allocated scheduler tags and driver tags. This is more flexible than the existing blk_mq_all_tag_busy_iter function as it allows the callers to do whatever they want on allocated request instead of being limited to started requests. It will be used to implement draining allocated requests on specified hctx in this patchset. [hch: switch from the two booleans to a more readable flags field and consolidate the tags iter functions] Signed-off-by: Ming Lei <> Signed-off-by: Christoph Hellwig <> Reviewed-by: Hannes Reinecke <> Reviewed-by: Daniel Wagner <> Reviewed-by: Bart van Assche <> Signed-off-by: Jens Axboe <>
Diffstat (limited to 'block/blk-mq-tag.h')
1 files changed, 2 insertions, 0 deletions
diff --git a/block/blk-mq-tag.h b/block/blk-mq-tag.h
index 8a741752af8b..d38e48f2a0a4 100644
--- a/block/blk-mq-tag.h
+++ b/block/blk-mq-tag.h
@@ -34,6 +34,8 @@ extern int blk_mq_tag_update_depth(struct blk_mq_hw_ctx *hctx,
extern void blk_mq_tag_wakeup_all(struct blk_mq_tags *tags, bool);
void blk_mq_queue_tag_busy_iter(struct request_queue *q, busy_iter_fn *fn,
void *priv);
+void blk_mq_all_tag_iter(struct blk_mq_tags *tags, busy_tag_iter_fn *fn,
+ void *priv);
static inline struct sbq_wait_state *bt_wait_ptr(struct sbitmap_queue *bt,
struct blk_mq_hw_ctx *hctx)