Message ID | 20201203034100.29716-5-kashyap.desai@broadcom.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | io_uring iopoll in scsi layer | expand |
On 03/12/2020 03:41, Kashyap Desai wrote: > hctx->driver_data is not set for SCSI currently. > Separately set hctx->driver_data = shost. nit: this looks ok to me, but I would have made as an earlier patch so that you don't add code and then remove it: > static int scsi_mq_poll(struct blk_mq_hw_ctx *hctx) > { > - struct request_queue *q = hctx->queue; > - struct scsi_device *sdev = q->queuedata; > - struct Scsi_Host *shost = sdev->host; Thanks, John > > Suggested-by: John Garry <john.garry@huawei.com> > Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com> > --- > drivers/scsi/scsi_lib.c | 19 +++++++++++++------ > 1 file changed, 13 insertions(+), 6 deletions(-) > > diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c > index 8675900ccc27..892315c21b70 100644 > --- a/drivers/scsi/scsi_lib.c > +++ b/drivers/scsi/scsi_lib.c > @@ -1789,9 +1789,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) > { > - struct request_queue *q = hctx->queue; > - struct scsi_device *sdev = q->queuedata; > - struct Scsi_Host *shost = sdev->host; > + struct Scsi_Host *shost = hctx->driver_data; > > if (shost->hostt->mq_poll) > return shost->hostt->mq_poll(shost, hctx->queue_num); > @@ -1799,6 +1797,15 @@ static int scsi_mq_poll(struct blk_mq_hw_ctx *hctx) > 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) > { > struct Scsi_Host *shost = container_of(set, struct Scsi_Host, tag_set); > @@ -1866,15 +1873,14 @@ static const struct blk_mq_ops scsi_mq_ops_no_commit = { > .cleanup_rq = scsi_cleanup_rq, > .busy = scsi_mq_lld_busy, > .map_queues = scsi_map_queues, > + .init_hctx = scsi_init_hctx, > .poll = scsi_mq_poll, > }; > > > static void scsi_commit_rqs(struct blk_mq_hw_ctx *hctx) > { > - struct request_queue *q = hctx->queue; > - struct scsi_device *sdev = q->queuedata; > - struct Scsi_Host *shost = sdev->host; > + struct Scsi_Host *shost = hctx->driver_data; > > shost->hostt->commit_rqs(shost, hctx->queue_num); > } > @@ -1895,6 +1901,7 @@ static const struct blk_mq_ops scsi_mq_ops = { > .cleanup_rq = scsi_cleanup_rq, > .busy = scsi_mq_lld_busy, > .map_queues = scsi_map_queues, > + .init_hctx = scsi_init_hctx, > .poll = scsi_mq_poll, > }; > >
> -----Original Message----- > From: John Garry [mailto:john.garry@huawei.com] > Sent: Thursday, December 3, 2020 6:57 PM > To: Kashyap Desai <kashyap.desai@broadcom.com>; linux- > scsi@vger.kernel.org; linux-block@vger.kernel.org > Subject: Re: [PATCH v2 4/4] scsi: set shost as hctx driver_data > > On 03/12/2020 03:41, Kashyap Desai wrote: > > hctx->driver_data is not set for SCSI currently. > > Separately set hctx->driver_data = shost. > > nit: this looks ok to me, but I would have made as an earlier patch so > that you > don't add code and then remove it: I added later - Just in case someone report issue in " scsi_commit_rqs" due to this patch, we can revert back easily. I tested scsi_mq_poll but not scsi_commit_rqs part. Kashyap > > > static int scsi_mq_poll(struct blk_mq_hw_ctx *hctx) > > { > > - struct request_queue *q = hctx->queue; > > - struct scsi_device *sdev = q->queuedata; > > - struct Scsi_Host *shost = sdev->host; > > Thanks, > John >
On 03/12/2020 13:30, Kashyap Desai wrote: >> -----Original Message----- >> From: John Garry [mailto:john.garry@huawei.com] >> Sent: Thursday, December 3, 2020 6:57 PM >> To: Kashyap Desai <kashyap.desai@broadcom.com>; linux- >> scsi@vger.kernel.org; linux-block@vger.kernel.org >> Subject: Re: [PATCH v2 4/4] scsi: set shost as hctx driver_data >> >> On 03/12/2020 03:41, Kashyap Desai wrote: >>> hctx->driver_data is not set for SCSI currently. >>> Separately set hctx->driver_data = shost. >> >> nit: this looks ok to me, but I would have made as an earlier patch so >> that you >> don't add code and then remove it: > > I added later - Just in case someone report issue in " scsi_commit_rqs" due > to this patch, we can revert back easily. > I tested scsi_mq_poll but not scsi_commit_rqs part. > We should be a bit more confident in the patch :) anyway, Reviewed-by: John Garry <john.garry@huawei.com> > >> >> > static int scsi_mq_poll(struct blk_mq_hw_ctx *hctx) >> > { >> > - struct request_queue *q = hctx->queue; >> > - struct scsi_device *sdev = q->queuedata; >> > - struct Scsi_Host *shost = sdev->host; >> >> Thanks, >> John >>
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 8675900ccc27..892315c21b70 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -1789,9 +1789,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) { - struct request_queue *q = hctx->queue; - struct scsi_device *sdev = q->queuedata; - struct Scsi_Host *shost = sdev->host; + struct Scsi_Host *shost = hctx->driver_data; if (shost->hostt->mq_poll) return shost->hostt->mq_poll(shost, hctx->queue_num); @@ -1799,6 +1797,15 @@ static int scsi_mq_poll(struct blk_mq_hw_ctx *hctx) 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) { struct Scsi_Host *shost = container_of(set, struct Scsi_Host, tag_set); @@ -1866,15 +1873,14 @@ static const struct blk_mq_ops scsi_mq_ops_no_commit = { .cleanup_rq = scsi_cleanup_rq, .busy = scsi_mq_lld_busy, .map_queues = scsi_map_queues, + .init_hctx = scsi_init_hctx, .poll = scsi_mq_poll, }; static void scsi_commit_rqs(struct blk_mq_hw_ctx *hctx) { - struct request_queue *q = hctx->queue; - struct scsi_device *sdev = q->queuedata; - struct Scsi_Host *shost = sdev->host; + struct Scsi_Host *shost = hctx->driver_data; shost->hostt->commit_rqs(shost, hctx->queue_num); } @@ -1895,6 +1901,7 @@ static const struct blk_mq_ops scsi_mq_ops = { .cleanup_rq = scsi_cleanup_rq, .busy = scsi_mq_lld_busy, .map_queues = scsi_map_queues, + .init_hctx = scsi_init_hctx, .poll = scsi_mq_poll, };
hctx->driver_data is not set for SCSI currently. Separately set hctx->driver_data = shost. Suggested-by: John Garry <john.garry@huawei.com> Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com> --- drivers/scsi/scsi_lib.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-)