Message ID | 20180322214718.29547-1-longli@linuxonhyperv.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
> -----Original Message----- > From: linux-kernel-owner@vger.kernel.org <linux-kernel-owner@vger.kernel.org> On Behalf > Of Long Li > Sent: Thursday, March 22, 2018 2:47 PM > To: KY Srinivasan <kys@microsoft.com>; Haiyang Zhang <haiyangz@microsoft.com>; Stephen > Hemminger <sthemmin@microsoft.com>; James E . J . Bottomley <JBottomley@odin.com>; > Martin K . Petersen <martin.petersen@oracle.com>; devel@linuxdriverproject.org; linux- > scsi@vger.kernel.org; linux-kernel@vger.kernel.org > Cc: Long Li <longli@microsoft.com> > Subject: [PATCH v2] storvsc: Set up correct queue depth values for IDE devices > > From: Long Li <longli@microsoft.com> > > Unlike SCSI and FC, we don't use multiple channels for IDE. > Also fix the calculation for sub-channels. > > Change log: > v2: Addressed comment on incorrect number of sub-channels. > (Michael Kelley <Michael.H.Kelley@microsoft.com>) > > Signed-off-by: Long Li <longli@microsoft.com> Reviewed-by: Michael Kelley <mikelley@microsoft.com> > --- > drivers/scsi/storvsc_drv.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c > index 8c51d628b52e..a2ec0bc9e9fa 100644 > --- a/drivers/scsi/storvsc_drv.c > +++ b/drivers/scsi/storvsc_drv.c > @@ -1722,11 +1722,14 @@ static int storvsc_probe(struct hv_device *device, > max_targets = STORVSC_MAX_TARGETS; > max_channels = STORVSC_MAX_CHANNELS; > /* > - * On Windows8 and above, we support sub-channels for storage. > + * On Windows8 and above, we support sub-channels for storage > + * on SCSI and FC controllers. > * The number of sub-channels offerred is based on the number of > * VCPUs in the guest. > */ > - max_sub_channels = (num_cpus / storvsc_vcpus_per_sub_channel); > + if (!dev_is_ide) > + max_sub_channels = > + (num_cpus - 1) / storvsc_vcpus_per_sub_channel; > } > > scsi_driver.can_queue = (max_outstanding_req_per_channel * > -- > 2.14.1
Hi Martin Can you take a look at the following patch? Long > > -----Original Message----- > > From: linux-kernel-owner@vger.kernel.org > > <linux-kernel-owner@vger.kernel.org> On Behalf Of Long Li > > Sent: Thursday, March 22, 2018 2:47 PM > > To: KY Srinivasan <kys@microsoft.com>; Haiyang Zhang > > <haiyangz@microsoft.com>; Stephen Hemminger > <sthemmin@microsoft.com>; > > James E . J . Bottomley <JBottomley@odin.com>; Martin K . Petersen > > <martin.petersen@oracle.com>; devel@linuxdriverproject.org; linux- > > scsi@vger.kernel.org; linux-kernel@vger.kernel.org > > Cc: Long Li <longli@microsoft.com> > > Subject: [PATCH v2] storvsc: Set up correct queue depth values for IDE > > devices > > > > From: Long Li <longli@microsoft.com> > > > > Unlike SCSI and FC, we don't use multiple channels for IDE. > > Also fix the calculation for sub-channels. > > > > Change log: > > v2: Addressed comment on incorrect number of sub-channels. > > (Michael Kelley <Michael.H.Kelley@microsoft.com>) > > > > Signed-off-by: Long Li <longli@microsoft.com> > > Reviewed-by: Michael Kelley <mikelley@microsoft.com> > > > --- > > drivers/scsi/storvsc_drv.c | 7 +++++-- > > 1 file changed, 5 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c > > index 8c51d628b52e..a2ec0bc9e9fa 100644 > > --- a/drivers/scsi/storvsc_drv.c > > +++ b/drivers/scsi/storvsc_drv.c > > @@ -1722,11 +1722,14 @@ static int storvsc_probe(struct hv_device > *device, > > max_targets = STORVSC_MAX_TARGETS; > > max_channels = STORVSC_MAX_CHANNELS; > > /* > > - * On Windows8 and above, we support sub-channels for > storage. > > + * On Windows8 and above, we support sub-channels for > storage > > + * on SCSI and FC controllers. > > * The number of sub-channels offerred is based on the > number of > > * VCPUs in the guest. > > */ > > - max_sub_channels = (num_cpus / > storvsc_vcpus_per_sub_channel); > > + if (!dev_is_ide) > > + max_sub_channels = > > + (num_cpus - 1) / > storvsc_vcpus_per_sub_channel; > > } > > > > scsi_driver.can_queue = (max_outstanding_req_per_channel * > > -- > > 2.14.1
Long, > Can you take a look at the following patch? >> > + max_sub_channels = >> > + (num_cpus - 1) / storvsc_vcpus_per_sub_channel; What happens if num_cpus = 1?
> Subject: Re: [PATCH v2] storvsc: Set up correct queue depth values for IDE > devices > > > Long, > > > Can you take a look at the following patch? > > >> > + max_sub_channels = > >> > + (num_cpus - 1) / storvsc_vcpus_per_sub_channel; > > What happens if num_cpus = 1? If num_cpus=1, we don't have any sub channels. The host offers one sub channel for VM with 5 CPUs, after that it offers an additional sub channel every 4 CPUs. The primary channel is always offered. > > -- > Martin K. Petersen Oracle Linux Engineering
Long, > If num_cpus=1, we don't have any sub channels. > > The host offers one sub channel for VM with 5 CPUs, after that it offers > an additional sub channel every 4 CPUs. > > The primary channel is always offered. Applied to 4.17/scsi-fixes. Thanks!
diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c index 8c51d628b52e..a2ec0bc9e9fa 100644 --- a/drivers/scsi/storvsc_drv.c +++ b/drivers/scsi/storvsc_drv.c @@ -1722,11 +1722,14 @@ static int storvsc_probe(struct hv_device *device, max_targets = STORVSC_MAX_TARGETS; max_channels = STORVSC_MAX_CHANNELS; /* - * On Windows8 and above, we support sub-channels for storage. + * On Windows8 and above, we support sub-channels for storage + * on SCSI and FC controllers. * The number of sub-channels offerred is based on the number of * VCPUs in the guest. */ - max_sub_channels = (num_cpus / storvsc_vcpus_per_sub_channel); + if (!dev_is_ide) + max_sub_channels = + (num_cpus - 1) / storvsc_vcpus_per_sub_channel; } scsi_driver.can_queue = (max_outstanding_req_per_channel *