Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1305160 > unrolled thread

[PATCH 0/2] scsi: storvsc: Miscellaneous fixes

Started by"K. Y. Srinivasan" <kys@microsoft.com>
First post2016-01-09 05:20 +0100
Last post2016-01-09 05:20 +0100
Articles 5 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH 0/2] scsi: storvsc: Miscellaneous fixes  "K. Y. Srinivasan" <kys@microsoft.com> - 2016-01-09 05:20 +0100
    [PATCH 2/2] scsi: storvsc: Use the specified target ID in device lookup "K. Y. Srinivasan" <kys@microsoft.com> - 2016-01-09 05:20 +0100
      Re: [PATCH 2/2] scsi: storvsc: Use the specified target ID in device  lookup Hannes Reinecke <hare@suse.de> - 2016-01-11 08:20 +0100
        RE: [PATCH 2/2] scsi: storvsc: Use the specified target ID in device  lookup KY Srinivasan <kys@microsoft.com> - 2016-01-12 02:10 +0100
    [PATCH 1/2] scsi: storvsc: Install the storvsc specific timeout handler for FC devices "K. Y. Srinivasan" <kys@microsoft.com> - 2016-01-09 05:20 +0100

#1305160 — [PATCH 0/2] scsi: storvsc: Miscellaneous fixes

From"K. Y. Srinivasan" <kys@microsoft.com>
Date2016-01-09 05:20 +0100
Subject[PATCH 0/2] scsi: storvsc: Miscellaneous fixes
Message-ID<qOTap-81-3@gated-at.bofh.it>
Some miscellaneous fixes.

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 |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

-- 
1.7.4.1

[toc] | [next] | [standalone]


#1305161 — [PATCH 2/2] scsi: storvsc: Use the specified target ID in device lookup

From"K. Y. Srinivasan" <kys@microsoft.com>
Date2016-01-09 05:20 +0100
Subject[PATCH 2/2] scsi: storvsc: Use the specified target ID in device lookup
Message-ID<qOTap-81-1@gated-at.bofh.it>
In reply to#1305160
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>
---
 drivers/scsi/storvsc_drv.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index 622f64a..5faf357 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -479,6 +479,7 @@ struct storvsc_scan_work {
 	struct work_struct work;
 	struct Scsi_Host *host;
 	uint lun;
+	uint tgt_id;
 };
 
 static void storvsc_device_scan(struct work_struct *work)
@@ -490,7 +491,7 @@ static void storvsc_device_scan(struct work_struct *work)
 	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, lun);
 	if (!sdev)
 		goto done;
 	scsi_rescan_device(&sdev->sdev_gendev);
@@ -541,7 +542,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 +942,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

[toc] | [prev] | [next] | [standalone]


#1305907 — Re: [PATCH 2/2] scsi: storvsc: Use the specified target ID in device lookup

FromHannes Reinecke <hare@suse.de>
Date2016-01-11 08:20 +0100
SubjectRe: [PATCH 2/2] scsi: storvsc: Use the specified target ID in device lookup
Message-ID<qPEVI-7u6-5@gated-at.bofh.it>
In reply to#1305161
On 01/09/2016 06:51 AM, 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>
> ---
>   drivers/scsi/storvsc_drv.c |    6 ++++--
>   1 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
> index 622f64a..5faf357 100644
> --- a/drivers/scsi/storvsc_drv.c
> +++ b/drivers/scsi/storvsc_drv.c
> @@ -479,6 +479,7 @@ struct storvsc_scan_work {
>   	struct work_struct work;
>   	struct Scsi_Host *host;
>   	uint lun;
> +	uint tgt_id;
>   };
>
>   static void storvsc_device_scan(struct work_struct *work)
> @@ -490,7 +491,7 @@ static void storvsc_device_scan(struct work_struct *work)
>   	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, lun);
>   	if (!sdev)
>   		goto done;
>   	scsi_rescan_device(&sdev->sdev_gendev);
> @@ -541,7 +542,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 +942,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);
>   }
>
As a side note, are these really 32-bit values?
Both the LUN and the target?

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		               zSeries & Storage
hare@suse.de			               +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)

[toc] | [prev] | [next] | [standalone]


#1306878 — RE: [PATCH 2/2] scsi: storvsc: Use the specified target ID in device lookup

FromKY Srinivasan <kys@microsoft.com>
Date2016-01-12 02:10 +0100
SubjectRE: [PATCH 2/2] scsi: storvsc: Use the specified target ID in device lookup
Message-ID<qPVDb-25w-1@gated-at.bofh.it>
In reply to#1305907

> -----Original Message-----
> From: Hannes Reinecke [mailto:hare@suse.de]
> Sent: Sunday, January 10, 2016 11:10 PM
> To: KY Srinivasan <kys@microsoft.com>; gregkh@linuxfoundation.org; linux-
> kernel@vger.kernel.org; devel@linuxdriverproject.org; ohering@suse.com;
> jbottomley@parallels.com; hch@infradead.org; linux-scsi@vger.kernel.org;
> apw@canonical.com; vkuznets@redhat.com; jasowang@redhat.com;
> martin.petersen@oracle.com
> Subject: Re: [PATCH 2/2] scsi: storvsc: Use the specified target ID in device
> lookup
> 
> On 01/09/2016 06:51 AM, 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>
> > ---
> >   drivers/scsi/storvsc_drv.c |    6 ++++--
> >   1 files changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
> > index 622f64a..5faf357 100644
> > --- a/drivers/scsi/storvsc_drv.c
> > +++ b/drivers/scsi/storvsc_drv.c
> > @@ -479,6 +479,7 @@ struct storvsc_scan_work {
> >   	struct work_struct work;
> >   	struct Scsi_Host *host;
> >   	uint lun;
> > +	uint tgt_id;
> >   };
> >
> >   static void storvsc_device_scan(struct work_struct *work)
> > @@ -490,7 +491,7 @@ static void storvsc_device_scan(struct work_struct
> *work)
> >   	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, lun);
> >   	if (!sdev)
> >   		goto done;
> >   	scsi_rescan_device(&sdev->sdev_gendev);
> > @@ -541,7 +542,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 +942,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);
> >   }
> >
> As a side note, are these really 32-bit values?
> Both the LUN and the target?

No, these are 8 bit values as communicated in the vmscsi_request.

Regards,

K. Y


> 
> Cheers,
> 
> Hannes
> --
> Dr. Hannes Reinecke		               zSeries & Storage
> hare@suse.de			               +49 911 74053 688
> SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
> GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
> HRB 21284 (AG Nürnberg)

[toc] | [prev] | [next] | [standalone]


#1305162 — [PATCH 1/2] scsi: storvsc: Install the storvsc specific timeout handler for FC devices

From"K. Y. Srinivasan" <kys@microsoft.com>
Date2016-01-09 05:20 +0100
Subject[PATCH 1/2] scsi: storvsc: Install the storvsc specific timeout handler for FC devices
Message-ID<qOTap-81-5@gated-at.bofh.it>
In reply to#1305160
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>
---
 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

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web