Message ID | 20191029191202.18925-3-marcelo.cerri@canonical.com |
---|---|
State | New |
Headers | show |
Series | [disco:linux-azure,1/1] scsi: storvsc: Add ability to change scsi queue depth | expand |
On 29/10/2019 19:12, Marcelo Henrique Cerri wrote: > From: Branden Bonaby <brandonbonaby94@gmail.com> > > BugLink: https://bugs.launchpad.net/bugs/1849495 > > Adding functionality to allow the SCSI queue depth to be changed by > utilizing the "scsi_change_queue_depth" function. > > [mkp: checkpatch] > > Signed-off-by: Branden Bonaby <brandonbonaby94@gmail.com> > Reviewed-by: Michael Kelley <mikelley@microsoft.com> > Reviewed-by: K. Y. Srinivasan <kys@microsoft.com> > Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> > (cherry picked from commit adfbd028e155fca3bbe33d458f2f27cb657e5792) > Signed-off-by: Marcelo Henrique Cerri <marcelo.cerri@canonical.com> > --- > drivers/scsi/storvsc_drv.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c > index 3a7278306d4f..d7033ece5459 100644 > --- a/drivers/scsi/storvsc_drv.c > +++ b/drivers/scsi/storvsc_drv.c > @@ -387,6 +387,7 @@ enum storvsc_request_type { > > static int storvsc_ringbuffer_size = (256 * PAGE_SIZE); > static u32 max_outstanding_req_per_channel; > +static int storvsc_change_queue_depth(struct scsi_device *sdev, int queue_depth); > > static int storvsc_vcpus_per_sub_channel = 4; > > @@ -1711,6 +1712,7 @@ static struct scsi_host_template scsi_driver = { > .dma_boundary = PAGE_SIZE-1, > .no_write_same = 1, > .track_queue_depth = 1, > + .change_queue_depth = storvsc_change_queue_depth, > }; > > enum { > @@ -1923,6 +1925,15 @@ static int storvsc_probe(struct hv_device *device, > return ret; > } > > +/* Change a scsi target's queue depth */ > +static int storvsc_change_queue_depth(struct scsi_device *sdev, int queue_depth) > +{ > + if (queue_depth > scsi_driver.can_queue) > + queue_depth = scsi_driver.can_queue; > + > + return scsi_change_queue_depth(sdev, queue_depth); > +} > + > static int storvsc_remove(struct hv_device *dev) > { > struct storvsc_device *stor_device = hv_get_drvdata(dev); > Looks sane to me. Acked-by: Colin Ian King <colin.king@canonical.com>
diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c index 3a7278306d4f..d7033ece5459 100644 --- a/drivers/scsi/storvsc_drv.c +++ b/drivers/scsi/storvsc_drv.c @@ -387,6 +387,7 @@ enum storvsc_request_type { static int storvsc_ringbuffer_size = (256 * PAGE_SIZE); static u32 max_outstanding_req_per_channel; +static int storvsc_change_queue_depth(struct scsi_device *sdev, int queue_depth); static int storvsc_vcpus_per_sub_channel = 4; @@ -1711,6 +1712,7 @@ static struct scsi_host_template scsi_driver = { .dma_boundary = PAGE_SIZE-1, .no_write_same = 1, .track_queue_depth = 1, + .change_queue_depth = storvsc_change_queue_depth, }; enum { @@ -1923,6 +1925,15 @@ static int storvsc_probe(struct hv_device *device, return ret; } +/* Change a scsi target's queue depth */ +static int storvsc_change_queue_depth(struct scsi_device *sdev, int queue_depth) +{ + if (queue_depth > scsi_driver.can_queue) + queue_depth = scsi_driver.can_queue; + + return scsi_change_queue_depth(sdev, queue_depth); +} + static int storvsc_remove(struct hv_device *dev) { struct storvsc_device *stor_device = hv_get_drvdata(dev);