blk-mq: Facilitate a shared sbitmap per tagset
[linux-block.git] / include / linux / blk-mq.h
index 982c4f92b63c808880bad55bfe189f00459ef970..df7b903ce7aea44d10004bc497a68fb5c7da2976 100644 (file)
@@ -231,6 +231,9 @@ enum hctx_type {
  * @flags:        Zero or more BLK_MQ_F_* flags.
  * @driver_data:   Pointer to data owned by the block driver that created this
  *                tag set.
+ * @__bitmap_tags: A shared tags sbitmap, used over all hctx's
+ * @__breserved_tags:
+ *                A shared reserved tags sbitmap, used over all hctx's
  * @tags:         Tag sets. One tag set per hardware queue. Has @nr_hw_queues
  *                elements.
  * @tag_list_lock: Serializes tag_list accesses.
@@ -250,6 +253,8 @@ struct blk_mq_tag_set {
        unsigned int            flags;
        void                    *driver_data;
 
+       struct sbitmap_queue    __bitmap_tags;
+       struct sbitmap_queue    __breserved_tags;
        struct blk_mq_tags      **tags;
 
        struct mutex            tag_list_lock;
@@ -384,6 +389,7 @@ enum {
         * completing IO:
         */
        BLK_MQ_F_STACKING       = 1 << 2,
+       BLK_MQ_F_TAG_HCTX_SHARED = 1 << 3,
        BLK_MQ_F_BLOCKING       = 1 << 5,
        BLK_MQ_F_NO_SCHED       = 1 << 6,
        BLK_MQ_F_ALLOC_POLICY_START_BIT = 8,