Commit 4309ea74 authored by Kashyap Desai's avatar Kashyap Desai Committed by Martin K. Petersen

scsi: core: Set shost as hctx driver_data

hctx->driver_data is not set for SCSI currently. Set hctx->driver_data =
shost.

Link: https://lore.kernel.org/r/20210215074048.19424-6-kashyap.desai@broadcom.comSuggested-by: default avatarJohn Garry <john.garry@huawei.com>
Reviewed-by: default avatarJohn Garry <john.garry@huawei.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Signed-off-by: default avatarKashyap Desai <kashyap.desai@broadcom.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 4a0c6f43
...@@ -1813,9 +1813,7 @@ static void scsi_mq_exit_request(struct blk_mq_tag_set *set, struct request *rq, ...@@ -1813,9 +1813,7 @@ static void scsi_mq_exit_request(struct blk_mq_tag_set *set, struct request *rq,
static int scsi_mq_poll(struct blk_mq_hw_ctx *hctx) static int scsi_mq_poll(struct blk_mq_hw_ctx *hctx)
{ {
struct request_queue *q = hctx->queue; struct Scsi_Host *shost = hctx->driver_data;
struct scsi_device *sdev = q->queuedata;
struct Scsi_Host *shost = sdev->host;
if (shost->hostt->mq_poll) if (shost->hostt->mq_poll)
return shost->hostt->mq_poll(shost, hctx->queue_num); return shost->hostt->mq_poll(shost, hctx->queue_num);
...@@ -1823,6 +1821,15 @@ static int scsi_mq_poll(struct blk_mq_hw_ctx *hctx) ...@@ -1823,6 +1821,15 @@ static int scsi_mq_poll(struct blk_mq_hw_ctx *hctx)
return 0; return 0;
} }
static int scsi_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,
unsigned int hctx_idx)
{
struct Scsi_Host *shost = data;
hctx->driver_data = shost;
return 0;
}
static int scsi_map_queues(struct blk_mq_tag_set *set) static int scsi_map_queues(struct blk_mq_tag_set *set)
{ {
struct Scsi_Host *shost = container_of(set, struct Scsi_Host, tag_set); struct Scsi_Host *shost = container_of(set, struct Scsi_Host, tag_set);
...@@ -1890,6 +1897,7 @@ static const struct blk_mq_ops scsi_mq_ops_no_commit = { ...@@ -1890,6 +1897,7 @@ static const struct blk_mq_ops scsi_mq_ops_no_commit = {
.cleanup_rq = scsi_cleanup_rq, .cleanup_rq = scsi_cleanup_rq,
.busy = scsi_mq_lld_busy, .busy = scsi_mq_lld_busy,
.map_queues = scsi_map_queues, .map_queues = scsi_map_queues,
.init_hctx = scsi_init_hctx,
.poll = scsi_mq_poll, .poll = scsi_mq_poll,
.set_rq_budget_token = scsi_mq_set_rq_budget_token, .set_rq_budget_token = scsi_mq_set_rq_budget_token,
.get_rq_budget_token = scsi_mq_get_rq_budget_token, .get_rq_budget_token = scsi_mq_get_rq_budget_token,
...@@ -1898,9 +1906,7 @@ static const struct blk_mq_ops scsi_mq_ops_no_commit = { ...@@ -1898,9 +1906,7 @@ static const struct blk_mq_ops scsi_mq_ops_no_commit = {
static void scsi_commit_rqs(struct blk_mq_hw_ctx *hctx) static void scsi_commit_rqs(struct blk_mq_hw_ctx *hctx)
{ {
struct request_queue *q = hctx->queue; struct Scsi_Host *shost = hctx->driver_data;
struct scsi_device *sdev = q->queuedata;
struct Scsi_Host *shost = sdev->host;
shost->hostt->commit_rqs(shost, hctx->queue_num); shost->hostt->commit_rqs(shost, hctx->queue_num);
} }
...@@ -1921,6 +1927,7 @@ static const struct blk_mq_ops scsi_mq_ops = { ...@@ -1921,6 +1927,7 @@ static const struct blk_mq_ops scsi_mq_ops = {
.cleanup_rq = scsi_cleanup_rq, .cleanup_rq = scsi_cleanup_rq,
.busy = scsi_mq_lld_busy, .busy = scsi_mq_lld_busy,
.map_queues = scsi_map_queues, .map_queues = scsi_map_queues,
.init_hctx = scsi_init_hctx,
.poll = scsi_mq_poll, .poll = scsi_mq_poll,
.set_rq_budget_token = scsi_mq_set_rq_budget_token, .set_rq_budget_token = scsi_mq_set_rq_budget_token,
.get_rq_budget_token = scsi_mq_get_rq_budget_token, .get_rq_budget_token = scsi_mq_get_rq_budget_token,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment