RE: [PATCH 3/4] Drivers: scsi: storvsc: Fix a bug in storvsc limits

From: Long Li
Date: Tue Dec 30 2014 - 14:40:03 EST




> -----Original Message-----
> From: devel [mailto:driverdev-devel-bounces@xxxxxxxxxxxxxxxxxxxxxx] On
> Behalf Of K. Y. Srinivasan
> Sent: Tuesday, December 16, 2014 1:22 PM
> To: gregkh@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> devel@xxxxxxxxxxxxxxxxxxxxxx; ohering@xxxxxxxx;
> jbottomley@xxxxxxxxxxxxx; hch@xxxxxxxxxxxxx; linux-scsi@xxxxxxxxxxxxxxx
> Subject: [PATCH 3/4] Drivers: scsi: storvsc: Fix a bug in storvsc limits
>
> Commit 4cd83ecdac20d30725b4f96e5d7814a1e290bc7e changed the limits to
> reflect the values on the host. It turns out that WS2008R2 cannot correctly
> handle these new limits. Fix this bug by setting the limits based on the host.
>
> Signed-off-by: K. Y. Srinivasan <kys@xxxxxxxxxxxxx>
Reviewed-by: Long Li <longli@xxxxxxxxxxxxx>
> ---
> drivers/scsi/storvsc_drv.c | 15 ++++++++++++---
> 1 files changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c index
> a7163c6..fdc5164 100644
> --- a/drivers/scsi/storvsc_drv.c
> +++ b/drivers/scsi/storvsc_drv.c
> @@ -1782,6 +1782,9 @@ static int storvsc_probe(struct hv_device *device,
> bool dev_is_ide = ((dev_id->driver_data == IDE_GUID) ? true : false);
> int target = 0;
> struct storvsc_device *stor_device;
> + int max_luns_per_target;
> + int max_targets;
> + int max_channels;
>
> /*
> * Based on the windows host we are running on, @@ -1795,12
> +1798,18 @@ static int storvsc_probe(struct hv_device *device,
> vmscsi_size_delta = sizeof(struct vmscsi_win8_extension);
> vmstor_current_major = VMSTOR_WIN7_MAJOR;
> vmstor_current_minor = VMSTOR_WIN7_MINOR;
> + max_luns_per_target =
> STORVSC_IDE_MAX_LUNS_PER_TARGET;
> + max_targets = STORVSC_IDE_MAX_TARGETS;
> + max_channels = STORVSC_IDE_MAX_CHANNELS;
> break;
> default:
> sense_buffer_size =
> POST_WIN7_STORVSC_SENSE_BUFFER_SIZE;
> vmscsi_size_delta = 0;
> vmstor_current_major = VMSTOR_WIN8_MAJOR;
> vmstor_current_minor = VMSTOR_WIN8_MINOR;
> + max_luns_per_target = STORVSC_MAX_LUNS_PER_TARGET;
> + max_targets = STORVSC_MAX_TARGETS;
> + max_channels = STORVSC_MAX_CHANNELS;
> break;
> }
>
> @@ -1848,9 +1857,9 @@ static int storvsc_probe(struct hv_device *device,
> break;
>
> case SCSI_GUID:
> - host->max_lun = STORVSC_MAX_LUNS_PER_TARGET;
> - host->max_id = STORVSC_MAX_TARGETS;
> - host->max_channel = STORVSC_MAX_CHANNELS - 1;
> + host->max_lun = max_luns_per_target;
> + host->max_id = max_targets;
> + host->max_channel = max_channels - 1;
> break;
>
> default:
> --
> 1.7.4.1
>
> _______________________________________________
> devel mailing list
> devel@xxxxxxxxxxxxxxxxxxxxxx
> http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/