linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V2 0/2] scsi: storvsc: Miscellaneous fixes
@ 2016-01-28  2:22 K. Y. Srinivasan
  2016-01-28  2:22 ` [PATCH V2 1/2] scsi: storvsc: Install the storvsc specific timeout handler for FC devices K. Y. Srinivasan
  0 siblings, 1 reply; 5+ messages in thread
From: K. Y. Srinivasan @ 2016-01-28  2:22 UTC (permalink / raw)
  To: gregkh, linux-kernel, devel, ohering, jbottomley, hch, linux-scsi,
	apw, vkuznets, jasowang, martin.petersen, hare

Some miscellaneous fixes.

V2: addressed comments from Hannes Reinecke <hare@suse.de>

K. Y. Srinivasan (2):
  scsi: storvsc: Install the storvsc specific timeout handler for FC
    devices
  scsi: storvsc: Use the specified target ID in device lookup

 drivers/scsi/storvsc_drv.c |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)

-- 
1.7.4.1

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

* [PATCH V2 1/2] scsi: storvsc: Install the storvsc specific timeout handler for FC devices
  2016-01-28  2:22 [PATCH V2 0/2] scsi: storvsc: Miscellaneous fixes K. Y. Srinivasan
@ 2016-01-28  2:22 ` K. Y. Srinivasan
  2016-01-28  2:22   ` [PATCH V2 2/2] scsi: storvsc: Use the specified target ID in device lookup K. Y. Srinivasan
  2016-01-28  8:28   ` [PATCH V2 1/2] scsi: storvsc: Install the storvsc specific timeout handler for FC devices Johannes Thumshirn
  0 siblings, 2 replies; 5+ messages in thread
From: K. Y. Srinivasan @ 2016-01-28  2:22 UTC (permalink / raw)
  To: gregkh, linux-kernel, devel, ohering, jbottomley, hch, linux-scsi,
	apw, vkuznets, jasowang, martin.petersen, hare

The default timeout routine used for FC transport is not
suitable for FC devices managed by storvsc since FC devices
managed by storvsc driver do not have an rport associated
with them. Use the time out handler used for SCSI devices
for FC devices as well.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: Alex Ng <alexng@microsoft.com>
Tested-by: Vivek Yadav <vyadav@microsoft.com>
---
 drivers/scsi/storvsc_drv.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index 41c115c..622f64a 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -42,6 +42,7 @@
 #include <scsi/scsi_devinfo.h>
 #include <scsi/scsi_dbg.h>
 #include <scsi/scsi_transport_fc.h>
+#include <scsi/scsi_transport.h>
 
 /*
  * All wire protocol details (storage protocol between the guest and the host)
@@ -1770,6 +1771,11 @@ static int __init storvsc_drv_init(void)
 	fc_transport_template = fc_attach_transport(&fc_transport_functions);
 	if (!fc_transport_template)
 		return -ENODEV;
+
+	/*
+	 * Install Hyper-V specific timeout handler.
+	 */
+	fc_transport_template->eh_timed_out = storvsc_eh_timed_out;
 #endif
 
 	ret = vmbus_driver_register(&storvsc_drv);
-- 
1.7.4.1

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

* [PATCH V2 2/2] scsi: storvsc: Use the specified target ID in device lookup
  2016-01-28  2:22 ` [PATCH V2 1/2] scsi: storvsc: Install the storvsc specific timeout handler for FC devices K. Y. Srinivasan
@ 2016-01-28  2:22   ` K. Y. Srinivasan
  2016-01-28  8:29     ` Johannes Thumshirn
  2016-01-28  8:28   ` [PATCH V2 1/2] scsi: storvsc: Install the storvsc specific timeout handler for FC devices Johannes Thumshirn
  1 sibling, 1 reply; 5+ messages in thread
From: K. Y. Srinivasan @ 2016-01-28  2:22 UTC (permalink / raw)
  To: gregkh, linux-kernel, devel, ohering, jbottomley, hch, linux-scsi,
	apw, vkuznets, jasowang, martin.petersen, hare

The current code assumes that there is only one target in device lookup.
Fix this bug. This will alow us to correctly handle hot reomoval of LUNs.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: Alex Ng <alexng@microsoft.com>
Tested-by: Vivek Yadav <vyadav@microsoft.com>
---
	V2: Made lun and target_id unsigned 8 bit entities - Hannes Reinecke <hare@suse.de>

 drivers/scsi/storvsc_drv.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index 622f64a..132b168 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -478,19 +478,18 @@ struct hv_host_device {
 struct storvsc_scan_work {
 	struct work_struct work;
 	struct Scsi_Host *host;
-	uint lun;
+	u8 lun;
+	u8 tgt_id;
 };
 
 static void storvsc_device_scan(struct work_struct *work)
 {
 	struct storvsc_scan_work *wrk;
-	uint lun;
 	struct scsi_device *sdev;
 
 	wrk = container_of(work, struct storvsc_scan_work, work);
-	lun = wrk->lun;
 
-	sdev = scsi_device_lookup(wrk->host, 0, 0, lun);
+	sdev = scsi_device_lookup(wrk->host, 0, wrk->tgt_id, wrk->lun);
 	if (!sdev)
 		goto done;
 	scsi_rescan_device(&sdev->sdev_gendev);
@@ -541,7 +540,7 @@ static void storvsc_remove_lun(struct work_struct *work)
 	if (!scsi_host_get(wrk->host))
 		goto done;
 
-	sdev = scsi_device_lookup(wrk->host, 0, 0, wrk->lun);
+	sdev = scsi_device_lookup(wrk->host, 0, wrk->tgt_id, wrk->lun);
 
 	if (sdev) {
 		scsi_remove_device(sdev);
@@ -941,6 +940,7 @@ static void storvsc_handle_error(struct vmscsi_request *vm_srb,
 
 	wrk->host = host;
 	wrk->lun = vm_srb->lun;
+	wrk->tgt_id = vm_srb->target_id;
 	INIT_WORK(&wrk->work, process_err_fn);
 	schedule_work(&wrk->work);
 }
-- 
1.7.4.1

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

* Re: [PATCH V2 1/2] scsi: storvsc: Install the storvsc specific timeout handler for FC devices
  2016-01-28  2:22 ` [PATCH V2 1/2] scsi: storvsc: Install the storvsc specific timeout handler for FC devices K. Y. Srinivasan
  2016-01-28  2:22   ` [PATCH V2 2/2] scsi: storvsc: Use the specified target ID in device lookup K. Y. Srinivasan
@ 2016-01-28  8:28   ` Johannes Thumshirn
  1 sibling, 0 replies; 5+ messages in thread
From: Johannes Thumshirn @ 2016-01-28  8:28 UTC (permalink / raw)
  To: K. Y. Srinivasan
  Cc: martin.petersen, linux-scsi, gregkh, jasowang, ohering,
	jbottomley, linux-kernel, hch, hare, apw, devel

On Wed, Jan 27, 2016 at 06:22:44PM -0800, K. Y. Srinivasan wrote:
> The default timeout routine used for FC transport is not
> suitable for FC devices managed by storvsc since FC devices
> managed by storvsc driver do not have an rport associated
> with them. Use the time out handler used for SCSI devices
> for FC devices as well.
> 
> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
> Reviewed-by: Alex Ng <alexng@microsoft.com>
> Tested-by: Vivek Yadav <vyadav@microsoft.com>
> ---
>  drivers/scsi/storvsc_drv.c |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
> index 41c115c..622f64a 100644
> --- a/drivers/scsi/storvsc_drv.c
> +++ b/drivers/scsi/storvsc_drv.c
> @@ -42,6 +42,7 @@
>  #include <scsi/scsi_devinfo.h>
>  #include <scsi/scsi_dbg.h>
>  #include <scsi/scsi_transport_fc.h>
> +#include <scsi/scsi_transport.h>
>  
>  /*
>   * All wire protocol details (storage protocol between the guest and the host)
> @@ -1770,6 +1771,11 @@ static int __init storvsc_drv_init(void)
>  	fc_transport_template = fc_attach_transport(&fc_transport_functions);
>  	if (!fc_transport_template)
>  		return -ENODEV;
> +
> +	/*
> +	 * Install Hyper-V specific timeout handler.
> +	 */
> +	fc_transport_template->eh_timed_out = storvsc_eh_timed_out;
>  #endif
>  
>  	ret = vmbus_driver_register(&storvsc_drv);
> -- 
> 1.7.4.1
> 
> --
> 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

Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
-- 
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] 5+ messages in thread

* Re: [PATCH V2 2/2] scsi: storvsc: Use the specified target ID in device lookup
  2016-01-28  2:22   ` [PATCH V2 2/2] scsi: storvsc: Use the specified target ID in device lookup K. Y. Srinivasan
@ 2016-01-28  8:29     ` Johannes Thumshirn
  0 siblings, 0 replies; 5+ messages in thread
From: Johannes Thumshirn @ 2016-01-28  8:29 UTC (permalink / raw)
  To: K. Y. Srinivasan
  Cc: gregkh, linux-kernel, devel, ohering, jbottomley, hch, linux-scsi,
	apw, vkuznets, jasowang, martin.petersen, hare

On Wed, Jan 27, 2016 at 06:22:45PM -0800, K. Y. Srinivasan wrote:
> The current code assumes that there is only one target in device lookup.
> Fix this bug. This will alow us to correctly handle hot reomoval of LUNs.
> 
> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
> Reviewed-by: Alex Ng <alexng@microsoft.com>
> Tested-by: Vivek Yadav <vyadav@microsoft.com>
> ---
> 	V2: Made lun and target_id unsigned 8 bit entities - Hannes Reinecke <hare@suse.de>
> 
>  drivers/scsi/storvsc_drv.c |   10 +++++-----
>  1 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
> index 622f64a..132b168 100644
> --- a/drivers/scsi/storvsc_drv.c
> +++ b/drivers/scsi/storvsc_drv.c
> @@ -478,19 +478,18 @@ struct hv_host_device {
>  struct storvsc_scan_work {
>  	struct work_struct work;
>  	struct Scsi_Host *host;
> -	uint lun;
> +	u8 lun;
> +	u8 tgt_id;
>  };
>  
>  static void storvsc_device_scan(struct work_struct *work)
>  {
>  	struct storvsc_scan_work *wrk;
> -	uint lun;
>  	struct scsi_device *sdev;
>  
>  	wrk = container_of(work, struct storvsc_scan_work, work);
> -	lun = wrk->lun;
>  
> -	sdev = scsi_device_lookup(wrk->host, 0, 0, lun);
> +	sdev = scsi_device_lookup(wrk->host, 0, wrk->tgt_id, wrk->lun);
>  	if (!sdev)
>  		goto done;
>  	scsi_rescan_device(&sdev->sdev_gendev);
> @@ -541,7 +540,7 @@ static void storvsc_remove_lun(struct work_struct *work)
>  	if (!scsi_host_get(wrk->host))
>  		goto done;
>  
> -	sdev = scsi_device_lookup(wrk->host, 0, 0, wrk->lun);
> +	sdev = scsi_device_lookup(wrk->host, 0, wrk->tgt_id, wrk->lun);
>  
>  	if (sdev) {
>  		scsi_remove_device(sdev);
> @@ -941,6 +940,7 @@ static void storvsc_handle_error(struct vmscsi_request *vm_srb,
>  
>  	wrk->host = host;
>  	wrk->lun = vm_srb->lun;
> +	wrk->tgt_id = vm_srb->target_id;
>  	INIT_WORK(&wrk->work, process_err_fn);
>  	schedule_work(&wrk->work);
>  }
> -- 
> 1.7.4.1
> 
> --
> 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

Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
-- 
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
--
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

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

end of thread, other threads:[~2016-01-28  8:29 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-28  2:22 [PATCH V2 0/2] scsi: storvsc: Miscellaneous fixes K. Y. Srinivasan
2016-01-28  2:22 ` [PATCH V2 1/2] scsi: storvsc: Install the storvsc specific timeout handler for FC devices K. Y. Srinivasan
2016-01-28  2:22   ` [PATCH V2 2/2] scsi: storvsc: Use the specified target ID in device lookup K. Y. Srinivasan
2016-01-28  8:29     ` Johannes Thumshirn
2016-01-28  8:28   ` [PATCH V2 1/2] scsi: storvsc: Install the storvsc specific timeout handler for FC devices Johannes Thumshirn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).