mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 0/3] storvsc: fixes issues on Fiber Channel
@ 2016-09-06 21:25 Long Li
  2016-09-06 21:25 ` [PATCH 1/3] storvsc: use tagged SRB requests if supported by the device Long Li
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Long Li @ 2016-09-06 21:25 UTC (permalink / raw)
  To: K. Y. Srinivasan, Haiyang Zhang, James E.J. Bottomley,
	Martin K. Petersen
  Cc: devel, linux-scsi, linux-kernel, Long Li

From: Long Li <longli@microsoft.com>

This patch set fixes connectivity issues and improves performance for Fiber Channel disks.

Long Li (3):
  Use tagged SRB requests if supported by the device
  Properly handle SRB_ERROR when sense message is present
  Use block layer default segment size

 drivers/scsi/storvsc_drv.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

-- 
1.8.5.6

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/3] storvsc: use tagged SRB requests if supported by the device
  2016-09-06 21:25 [PATCH 0/3] storvsc: fixes issues on Fiber Channel Long Li
@ 2016-09-06 21:25 ` Long Li
  2016-09-07  7:46   ` Johannes Thumshirn
  2016-09-06 21:25 ` [PATCH 2/3] storvsc: properly handle SRB_ERROR when sense message is present Long Li
  2016-09-06 21:25 ` [PATCH 3/3] storvsc: use block layer default segment size Long Li
  2 siblings, 1 reply; 6+ messages in thread
From: Long Li @ 2016-09-06 21:25 UTC (permalink / raw)
  To: K. Y. Srinivasan, Haiyang Zhang, James E.J. Bottomley,
	Martin K. Petersen
  Cc: devel, linux-scsi, linux-kernel, Long Li

From: Long Li <longli@microsoft.com>

Properly set SRB flags when hosting device supports tagged queuing. This patch improves the performance on Fiber Channel disks.

---
 drivers/scsi/storvsc_drv.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index 8ccfc9e..a8f3e4c 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -136,6 +136,8 @@ struct hv_fc_wwn_packet {
 #define SRB_FLAGS_PORT_DRIVER_RESERVED		0x0F000000
 #define SRB_FLAGS_CLASS_DRIVER_RESERVED		0xF0000000
 
+#define SP_UNTAGGED			((unsigned char) ~0)
+#define SRB_SIMPLE_TAG_REQUEST		0x20
 
 /*
  * Platform neutral description of a scsi request -
@@ -1451,6 +1453,12 @@ static int storvsc_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scmnd)
 	vm_srb->win8_extension.srb_flags |=
 		SRB_FLAGS_DISABLE_SYNCH_TRANSFER;
 
+	if(scmnd->device->tagged_supported) {
+		vm_srb->win8_extension.srb_flags |= (SRB_FLAGS_QUEUE_ACTION_ENABLE | SRB_FLAGS_NO_QUEUE_FREEZE);
+		vm_srb->win8_extension.queue_tag = SP_UNTAGGED;
+		vm_srb->win8_extension.queue_action = SRB_SIMPLE_TAG_REQUEST;
+	}
+
 	/* Build the SRB */
 	switch (scmnd->sc_data_direction) {
 	case DMA_TO_DEVICE:
-- 
1.8.5.6

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 2/3] storvsc: properly handle SRB_ERROR when sense message is present
  2016-09-06 21:25 [PATCH 0/3] storvsc: fixes issues on Fiber Channel Long Li
  2016-09-06 21:25 ` [PATCH 1/3] storvsc: use tagged SRB requests if supported by the device Long Li
@ 2016-09-06 21:25 ` Long Li
  2016-09-06 21:25 ` [PATCH 3/3] storvsc: use block layer default segment size Long Li
  2 siblings, 0 replies; 6+ messages in thread
From: Long Li @ 2016-09-06 21:25 UTC (permalink / raw)
  To: K. Y. Srinivasan, Haiyang Zhang, James E.J. Bottomley,
	Martin K. Petersen
  Cc: devel, linux-scsi, linux-kernel, Long Li

From: Long Li <longli@microsoft.com>

When sense message is present on error, we should pass along to the upper layer to decide how to deal with the error. This patch fixes connectivity issues with Fiber Channel devices.

---
 drivers/scsi/storvsc_drv.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index a8f3e4c..8328c87 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -890,6 +890,9 @@ static void storvsc_handle_error(struct vmscsi_request *vm_srb,
 
 	switch (SRB_STATUS(vm_srb->srb_status)) {
 	case SRB_STATUS_ERROR:
+		/* Let upper layer deal with error when sense message is present */
+		if (vm_srb->srb_status & SRB_STATUS_AUTOSENSE_VALID)
+			break;
 		/*
 		 * If there is an error; offline the device since all
 		 * error recovery strategies would have already been
-- 
1.8.5.6

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 3/3] storvsc: use block layer default segment size
  2016-09-06 21:25 [PATCH 0/3] storvsc: fixes issues on Fiber Channel Long Li
  2016-09-06 21:25 ` [PATCH 1/3] storvsc: use tagged SRB requests if supported by the device Long Li
  2016-09-06 21:25 ` [PATCH 2/3] storvsc: properly handle SRB_ERROR when sense message is present Long Li
@ 2016-09-06 21:25 ` Long Li
  2 siblings, 0 replies; 6+ messages in thread
From: Long Li @ 2016-09-06 21:25 UTC (permalink / raw)
  To: K. Y. Srinivasan, Haiyang Zhang, James E.J. Bottomley,
	Martin K. Petersen
  Cc: devel, linux-scsi, linux-kernel, Long Li

From: Long Li <longli@microsoft.com>

We no long have the restriction of page size limit in the SG list. Remove it. The driver can properly handle default block segment size.

---
 drivers/scsi/storvsc_drv.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index 8328c87..ac57f9c 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -1271,9 +1271,6 @@ static int storvsc_do_io(struct hv_device *device,
 
 static int storvsc_device_configure(struct scsi_device *sdevice)
 {
-
-	blk_queue_max_segment_size(sdevice->request_queue, PAGE_SIZE);
-
 	blk_queue_bounce_limit(sdevice->request_queue, BLK_BOUNCE_ANY);
 
 	blk_queue_rq_timeout(sdevice->request_queue, (storvsc_timeout * HZ));
-- 
1.8.5.6

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/3] storvsc: use tagged SRB requests if supported by the device
  2016-09-06 21:25 ` [PATCH 1/3] storvsc: use tagged SRB requests if supported by the device Long Li
@ 2016-09-07  7:46   ` Johannes Thumshirn
  2016-09-07 17:19     ` Long Li
  0 siblings, 1 reply; 6+ messages in thread
From: Johannes Thumshirn @ 2016-09-07  7:46 UTC (permalink / raw)
  To: Long Li
  Cc: K. Y. Srinivasan, Haiyang Zhang, James E.J. Bottomley,
	Martin K. Petersen, devel, linux-scsi, linux-kernel, Long Li

On Tue, Sep 06, 2016 at 02:25:41PM -0700, Long Li wrote:
> From: Long Li <longli@microsoft.com>
> 
> Properly set SRB flags when hosting device supports tagged queuing. This patch improves the performance on Fiber Channel disks.

ENOSIGNEDOFF and please use checkpatch.pl on the patch. 

> 
> ---
>  drivers/scsi/storvsc_drv.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
> index 8ccfc9e..a8f3e4c 100644
> --- a/drivers/scsi/storvsc_drv.c
> +++ b/drivers/scsi/storvsc_drv.c
> @@ -136,6 +136,8 @@ struct hv_fc_wwn_packet {
>  #define SRB_FLAGS_PORT_DRIVER_RESERVED		0x0F000000
>  #define SRB_FLAGS_CLASS_DRIVER_RESERVED		0xF0000000
>  
> +#define SP_UNTAGGED			((unsigned char) ~0)
> +#define SRB_SIMPLE_TAG_REQUEST		0x20
>  
>  /*
>   * Platform neutral description of a scsi request -
> @@ -1451,6 +1453,12 @@ static int storvsc_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scmnd)
>  	vm_srb->win8_extension.srb_flags |=
>  		SRB_FLAGS_DISABLE_SYNCH_TRANSFER;
>  
> +	if(scmnd->device->tagged_supported) {
> +		vm_srb->win8_extension.srb_flags |= (SRB_FLAGS_QUEUE_ACTION_ENABLE | SRB_FLAGS_NO_QUEUE_FREEZE);
> +		vm_srb->win8_extension.queue_tag = SP_UNTAGGED;
> +		vm_srb->win8_extension.queue_action = SRB_SIMPLE_TAG_REQUEST;
> +	}
> +
>  	/* Build the SRB */
>  	switch (scmnd->sc_data_direction) {
>  	case DMA_TO_DEVICE:
> -- 
> 1.8.5.6
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Johannes Thumshirn                                          Storage
jthumshirn@suse.de                                +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [PATCH 1/3] storvsc: use tagged SRB requests if supported by the device
  2016-09-07  7:46   ` Johannes Thumshirn
@ 2016-09-07 17:19     ` Long Li
  0 siblings, 0 replies; 6+ messages in thread
From: Long Li @ 2016-09-07 17:19 UTC (permalink / raw)
  To: Johannes Thumshirn, Long Li
  Cc: KY Srinivasan, Haiyang Zhang, James E.J. Bottomley,
	Martin K. Petersen, devel, linux-scsi, linux-kernel

> -----Original Message-----
> From: Johannes Thumshirn [mailto:jthumshirn@suse.de]
> Sent: Wednesday, September 7, 2016 12:47 AM
> To: Long Li <longli@exchange.microsoft.com>
> Cc: KY Srinivasan <kys@microsoft.com>; Haiyang Zhang
> <haiyangz@microsoft.com>; James E.J. Bottomley
> <jejb@linux.vnet.ibm.com>; Martin K. Petersen
> <martin.petersen@oracle.com>; devel@linuxdriverproject.org; linux-
> scsi@vger.kernel.org; linux-kernel@vger.kernel.org; Long Li
> <longli@microsoft.com>
> Subject: Re: [PATCH 1/3] storvsc: use tagged SRB requests if supported by
> the device
> 
> On Tue, Sep 06, 2016 at 02:25:41PM -0700, Long Li wrote:
> > From: Long Li <longli@microsoft.com>
> >
> > Properly set SRB flags when hosting device supports tagged queuing. This
> patch improves the performance on Fiber Channel disks.
> 
> ENOSIGNEDOFF and please use checkpatch.pl on the patch.

Thanks for pointing that out. I'll re-send the patches.
> 
> >
> > ---
> >  drivers/scsi/storvsc_drv.c | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> >
> > diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
> > index 8ccfc9e..a8f3e4c 100644
> > --- a/drivers/scsi/storvsc_drv.c
> > +++ b/drivers/scsi/storvsc_drv.c
> > @@ -136,6 +136,8 @@ struct hv_fc_wwn_packet {
> >  #define SRB_FLAGS_PORT_DRIVER_RESERVED		0x0F000000
> >  #define SRB_FLAGS_CLASS_DRIVER_RESERVED		0xF0000000
> >
> > +#define SP_UNTAGGED			((unsigned char) ~0)
> > +#define SRB_SIMPLE_TAG_REQUEST		0x20
> >
> >  /*
> >   * Platform neutral description of a scsi request - @@ -1451,6
> > +1453,12 @@ static int storvsc_queuecommand(struct Scsi_Host *host,
> struct scsi_cmnd *scmnd)
> >  	vm_srb->win8_extension.srb_flags |=
> >  		SRB_FLAGS_DISABLE_SYNCH_TRANSFER;
> >
> > +	if(scmnd->device->tagged_supported) {
> > +		vm_srb->win8_extension.srb_flags |=
> (SRB_FLAGS_QUEUE_ACTION_ENABLE | SRB_FLAGS_NO_QUEUE_FREEZE);
> > +		vm_srb->win8_extension.queue_tag = SP_UNTAGGED;
> > +		vm_srb->win8_extension.queue_action =
> SRB_SIMPLE_TAG_REQUEST;
> > +	}
> > +
> >  	/* Build the SRB */
> >  	switch (scmnd->sc_data_direction) {
> >  	case DMA_TO_DEVICE:
> > --
> > 1.8.5.6
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-scsi"
> > in the body of a message to majordomo@vger.kernel.org More
> majordomo
> > info at
> > https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fvger.k
> > ernel.org%2fmajordomo-
> info.html&data=02%7c01%7clongli%40microsoft.com%
> >
> 7cdedd4c7ad4cf4955224d08d3d6f31f3d%7c72f988bf86f141af91ab2d7cd011db
> 47%
> >
> 7c1%7c0%7c636088312112339554&sdata=QvrOLvFjisQ4Nfz%2bkz1uyt7G7wh
> R7Uz7D
> > DlYMuc5VUM%3d
> 
> --
> Johannes Thumshirn                                          Storage
> jthumshirn@suse.de                                +49 911 74053 689
> SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
> GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG
> Nürnberg) Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76
> 0850

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-09-07 17:51 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-06 21:25 [PATCH 0/3] storvsc: fixes issues on Fiber Channel Long Li
2016-09-06 21:25 ` [PATCH 1/3] storvsc: use tagged SRB requests if supported by the device Long Li
2016-09-07  7:46   ` Johannes Thumshirn
2016-09-07 17:19     ` Long Li
2016-09-06 21:25 ` [PATCH 2/3] storvsc: properly handle SRB_ERROR when sense message is present Long Li
2016-09-06 21:25 ` [PATCH 3/3] storvsc: use block layer default segment size Long Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®