scsi: allow LLDDs to expose the queue mapping to blk-mq

Just hand through the blk-mq map_queues method in the host template.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Christoph Hellwig 2016-11-01 08:12:48 -06:00 committed by Martin K. Petersen
parent 9e5a7e2295
commit 2d9c5c20c9
2 changed files with 18 additions and 0 deletions

View File

@ -1990,6 +1990,15 @@ static void scsi_exit_request(void *data, struct request *rq,
kfree(cmd->sense_buffer); 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) static u64 scsi_calculate_bounce_limit(struct Scsi_Host *shost)
{ {
struct device *host_dev; struct device *host_dev;
@ -2082,6 +2091,7 @@ static struct blk_mq_ops scsi_mq_ops = {
.timeout = scsi_timeout, .timeout = scsi_timeout,
.init_request = scsi_init_request, .init_request = scsi_init_request,
.exit_request = scsi_exit_request, .exit_request = scsi_exit_request,
.map_queues = scsi_map_queues,
}; };
struct request_queue *scsi_mq_alloc_queue(struct scsi_device *sdev) struct request_queue *scsi_mq_alloc_queue(struct scsi_device *sdev)

View File

@ -277,6 +277,14 @@ struct scsi_host_template {
*/ */
int (* change_queue_depth)(struct scsi_device *, int); 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 * This function determines the BIOS parameters for a given
* harddisk. These tend to be numbers that are made up by * harddisk. These tend to be numbers that are made up by