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

Long Li longli at microsoft.com
Tue Dec 30 19:24:00 UTC 2014



> -----Original Message-----
> From: devel [mailto:driverdev-devel-bounces at linuxdriverproject.org] On
> Behalf Of K. Y. Srinivasan
> Sent: Tuesday, December 16, 2014 1:22 PM
> To: gregkh at linuxfoundation.org; linux-kernel at vger.kernel.org;
> devel at linuxdriverproject.org; ohering at suse.com;
> jbottomley at parallels.com; hch at infradead.org; linux-scsi at vger.kernel.org
> 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 at microsoft.com>
Reviewed-by: Long Li <longli at microsoft.com>
> ---
>  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 at linuxdriverproject.org
> http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


More information about the devel mailing list