*/
 void blk_mq_tag_wakeup_all(struct blk_mq_tags *tags, bool include_reserve)
 {
-       sbitmap_queue_wake_all(tags->bitmap_tags);
+       sbitmap_queue_wake_all(&tags->bitmap_tags);
        if (include_reserve)
-               sbitmap_queue_wake_all(tags->breserved_tags);
+               sbitmap_queue_wake_all(&tags->breserved_tags);
 }
 
 /*
                        WARN_ON_ONCE(1);
                        return BLK_MQ_NO_TAG;
                }
-               bt = tags->breserved_tags;
+               bt = &tags->breserved_tags;
                tag_offset = 0;
        } else {
-               bt = tags->bitmap_tags;
+               bt = &tags->bitmap_tags;
                tag_offset = tags->nr_reserved_tags;
        }
 
                                                data->ctx);
                tags = blk_mq_tags_from_data(data);
                if (data->flags & BLK_MQ_REQ_RESERVED)
-                       bt = tags->breserved_tags;
+                       bt = &tags->breserved_tags;
                else
-                       bt = tags->bitmap_tags;
+                       bt = &tags->bitmap_tags;
 
                /*
                 * If destination hw queue is changed, fake wake up on
                const int real_tag = tag - tags->nr_reserved_tags;
 
                BUG_ON(real_tag >= tags->nr_tags);
-               sbitmap_queue_clear(tags->bitmap_tags, real_tag, ctx->cpu);
+               sbitmap_queue_clear(&tags->bitmap_tags, real_tag, ctx->cpu);
        } else {
                BUG_ON(tag >= tags->nr_reserved_tags);
-               sbitmap_queue_clear(tags->breserved_tags, tag, ctx->cpu);
+               sbitmap_queue_clear(&tags->breserved_tags, tag, ctx->cpu);
        }
 }
 
        WARN_ON_ONCE(flags & BT_TAG_ITER_RESERVED);
 
        if (tags->nr_reserved_tags)
-               bt_tags_for_each(tags, tags->breserved_tags, fn, priv,
+               bt_tags_for_each(tags, &tags->breserved_tags, fn, priv,
                                 flags | BT_TAG_ITER_RESERVED);
-       bt_tags_for_each(tags, tags->bitmap_tags, fn, priv, flags);
+       bt_tags_for_each(tags, &tags->bitmap_tags, fn, priv, flags);
 }
 
 /**
                        continue;
 
                if (tags->nr_reserved_tags)
-                       bt_for_each(hctx, tags->breserved_tags, fn, priv, true);
-               bt_for_each(hctx, tags->bitmap_tags, fn, priv, false);
+                       bt_for_each(hctx, &tags->breserved_tags, fn, priv, true);
+               bt_for_each(hctx, &tags->bitmap_tags, fn, priv, false);
        }
        blk_queue_exit(q);
 }
        return -ENOMEM;
 }
 
-static int blk_mq_init_bitmap_tags(struct blk_mq_tags *tags,
-                                  int node, int alloc_policy)
-{
-       int ret;
-
-       ret = blk_mq_init_bitmaps(&tags->__bitmap_tags,
-                                 &tags->__breserved_tags,
-                                 tags->nr_tags, tags->nr_reserved_tags,
-                                 node, alloc_policy);
-       if (ret)
-               return ret;
-
-       tags->bitmap_tags = &tags->__bitmap_tags;
-       tags->breserved_tags = &tags->__breserved_tags;
-
-       return 0;
-}
-
 struct blk_mq_tags *blk_mq_init_tags(unsigned int total_tags,
                                     unsigned int reserved_tags,
                                     int node, int alloc_policy)
        tags->nr_reserved_tags = reserved_tags;
        spin_lock_init(&tags->lock);
 
-       if (blk_mq_init_bitmap_tags(tags, node, alloc_policy) < 0) {
+       if (blk_mq_init_bitmaps(&tags->bitmap_tags, &tags->breserved_tags,
+                               total_tags, reserved_tags, node,
+                               alloc_policy) < 0) {
                kfree(tags);
                return NULL;
        }
 
 void blk_mq_free_tags(struct blk_mq_tags *tags)
 {
-       sbitmap_queue_free(tags->bitmap_tags);
-       sbitmap_queue_free(tags->breserved_tags);
+       sbitmap_queue_free(&tags->bitmap_tags);
+       sbitmap_queue_free(&tags->breserved_tags);
        kfree(tags);
 }
 
                 * Don't need (or can't) update reserved tags here, they
                 * remain static and should never need resizing.
                 */
-               sbitmap_queue_resize(tags->bitmap_tags,
+               sbitmap_queue_resize(&tags->bitmap_tags,
                                tdepth - tags->nr_reserved_tags);
        }
 
 {
        struct blk_mq_tags *tags = set->shared_sbitmap_tags;
 
-       sbitmap_queue_resize(&tags->__bitmap_tags, size - set->reserved_tags);
+       sbitmap_queue_resize(&tags->bitmap_tags, size - set->reserved_tags);
 }
 
 void blk_mq_tag_update_sched_shared_sbitmap(struct request_queue *q)
 {
-       sbitmap_queue_resize(q->shared_sbitmap_tags->bitmap_tags,
+       sbitmap_queue_resize(&q->shared_sbitmap_tags->bitmap_tags,
                             q->nr_requests - q->tag_set->reserved_tags);
 }
 
 
 
 static bool __blk_mq_get_driver_tag(struct request *rq)
 {
-       struct sbitmap_queue *bt = rq->mq_hctx->tags->bitmap_tags;
+       struct sbitmap_queue *bt = &rq->mq_hctx->tags->bitmap_tags;
        unsigned int tag_offset = rq->mq_hctx->tags->nr_reserved_tags;
        int tag;
 
        blk_mq_tag_busy(rq->mq_hctx);
 
        if (blk_mq_tag_is_reserved(rq->mq_hctx->sched_tags, rq->internal_tag)) {
-               bt = rq->mq_hctx->tags->breserved_tags;
+               bt = &rq->mq_hctx->tags->breserved_tags;
                tag_offset = 0;
        } else {
                if (!hctx_may_queue(rq->mq_hctx, bt))
                struct sbitmap_queue *sbq;
 
                list_del_init(&wait->entry);
-               sbq = hctx->tags->bitmap_tags;
+               sbq = &hctx->tags->bitmap_tags;
                atomic_dec(&sbq->ws_active);
        }
        spin_unlock(&hctx->dispatch_wait_lock);
 static bool blk_mq_mark_tag_wait(struct blk_mq_hw_ctx *hctx,
                                 struct request *rq)
 {
-       struct sbitmap_queue *sbq = hctx->tags->bitmap_tags;
+       struct sbitmap_queue *sbq = &hctx->tags->bitmap_tags;
        struct wait_queue_head *wq;
        wait_queue_entry_t *wait;
        bool ret;