kfree(cmd->sense_buffer);
 }
 
+static int scsi_map_queues(struct blk_mq_tag_set *set)
+{
+       struct Scsi_Host *shost = container_of(set, struct Scsi_Host, tag_set);
+
+       if (shost->hostt->map_queues)
+               return shost->hostt->map_queues(shost);
+       return blk_mq_map_queues(set);
+}
+
 static u64 scsi_calculate_bounce_limit(struct Scsi_Host *shost)
 {
        struct device *host_dev;
        .timeout        = scsi_timeout,
        .init_request   = scsi_init_request,
        .exit_request   = scsi_exit_request,
+       .map_queues     = scsi_map_queues,
 };
 
 struct request_queue *scsi_mq_alloc_queue(struct scsi_device *sdev)
 
         */
        int (* change_queue_depth)(struct scsi_device *, int);
 
+       /*
+        * This functions lets the driver expose the queue mapping
+        * to the block layer.
+        *
+        * Status: OPTIONAL
+        */
+       int (* map_queues)(struct Scsi_Host *shost);
+
        /*
         * This function determines the BIOS parameters for a given
         * harddisk.  These tend to be numbers that are made up by