mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 17:24:17 +08:00
Drivers: scsi: storvsc: Fix a bug in handling VMBUS protocol version
Based on the negotiated VMBUS protocol version, we adjust the size of the storage protocol messages. The two sizes we currently handle are pre-win8 and post-win8. In WS2012 R2, we are negotiating higher VMBUS protocol version than the win8 version. Make adjustments to correctly handle this. Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> Reviewed-by: Hannes Reinecke <hare@suse.de> Cc: <stable@vger.kernel.org> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
8caf92d805
commit
adb6f9e1a8
@ -1752,19 +1752,22 @@ static int storvsc_probe(struct hv_device *device,
|
||||
* set state to properly communicate with the host.
|
||||
*/
|
||||
|
||||
if (vmbus_proto_version == VERSION_WIN8) {
|
||||
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;
|
||||
} else {
|
||||
switch (vmbus_proto_version) {
|
||||
case VERSION_WS2008:
|
||||
case VERSION_WIN7:
|
||||
sense_buffer_size = PRE_WIN8_STORVSC_SENSE_BUFFER_SIZE;
|
||||
vmscsi_size_delta = sizeof(struct vmscsi_win8_extension);
|
||||
vmstor_current_major = VMSTOR_WIN7_MAJOR;
|
||||
vmstor_current_minor = VMSTOR_WIN7_MINOR;
|
||||
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;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (dev_id->driver_data == SFC_GUID)
|
||||
scsi_driver.can_queue = (STORVSC_MAX_IO_REQUESTS *
|
||||
STORVSC_FC_MAX_TARGETS);
|
||||
|
Loading…
Reference in New Issue
Block a user