storvsc: use correct defaults for values determined by protocol negotiation
Use correct defaults for values determined by protocol negotiation, instead of resetting them with every scsi controller. Tested-by: Alex Ng <alexng@microsoft.com> Signed-off-by: Keith Mange <keith.mange@microsoft.com> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> Signed-off-by: James Bottomley <JBottomley@Odin.com>
This commit is contained in:
parent
1a3631081d
commit
cb11feada9
|
@ -151,19 +151,17 @@ struct hv_fc_wwn_packet {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sense buffer size changed in win8; have a run-time
|
* Sense buffer size changed in win8; have a run-time
|
||||||
* variable to track the size we should use.
|
* variable to track the size we should use. This value will
|
||||||
|
* likely change during protocol negotiation but it is valid
|
||||||
|
* to start by assuming pre-Win8.
|
||||||
*/
|
*/
|
||||||
static int sense_buffer_size;
|
static int sense_buffer_size = PRE_WIN8_STORVSC_SENSE_BUFFER_SIZE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The size of the vmscsi_request has changed in win8. The
|
* The storage protocol version is determined during the
|
||||||
* additional size is because of new elements added to the
|
* initial exchange with the host. It will indicate which
|
||||||
* structure. These elements are valid only when we are talking
|
* storage functionality is available in the host.
|
||||||
* to a win8 host.
|
*/
|
||||||
* Track the correction to size we need to apply.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static int vmscsi_size_delta;
|
|
||||||
static int vmstor_proto_version;
|
static int vmstor_proto_version;
|
||||||
|
|
||||||
struct vmscsi_win8_extension {
|
struct vmscsi_win8_extension {
|
||||||
|
@ -208,6 +206,17 @@ struct vmscsi_request {
|
||||||
} __attribute((packed));
|
} __attribute((packed));
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The size of the vmscsi_request has changed in win8. The
|
||||||
|
* additional size is because of new elements added to the
|
||||||
|
* structure. These elements are valid only when we are talking
|
||||||
|
* to a win8 host.
|
||||||
|
* Track the correction to size we need to apply. This value
|
||||||
|
* will likely change during protocol negotiation but it is
|
||||||
|
* valid to start by assuming pre-Win8.
|
||||||
|
*/
|
||||||
|
static int vmscsi_size_delta = sizeof(struct vmscsi_win8_extension);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The list of storage protocols in order of preference.
|
* The list of storage protocols in order of preference.
|
||||||
*/
|
*/
|
||||||
|
@ -1810,14 +1819,10 @@ static int storvsc_probe(struct hv_device *device,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (vmbus_proto_version < VERSION_WIN8) {
|
if (vmbus_proto_version < VERSION_WIN8) {
|
||||||
sense_buffer_size = PRE_WIN8_STORVSC_SENSE_BUFFER_SIZE;
|
|
||||||
vmscsi_size_delta = sizeof(struct vmscsi_win8_extension);
|
|
||||||
max_luns_per_target = STORVSC_IDE_MAX_LUNS_PER_TARGET;
|
max_luns_per_target = STORVSC_IDE_MAX_LUNS_PER_TARGET;
|
||||||
max_targets = STORVSC_IDE_MAX_TARGETS;
|
max_targets = STORVSC_IDE_MAX_TARGETS;
|
||||||
max_channels = STORVSC_IDE_MAX_CHANNELS;
|
max_channels = STORVSC_IDE_MAX_CHANNELS;
|
||||||
} else {
|
} else {
|
||||||
sense_buffer_size = POST_WIN7_STORVSC_SENSE_BUFFER_SIZE;
|
|
||||||
vmscsi_size_delta = 0;
|
|
||||||
max_luns_per_target = STORVSC_MAX_LUNS_PER_TARGET;
|
max_luns_per_target = STORVSC_MAX_LUNS_PER_TARGET;
|
||||||
max_targets = STORVSC_MAX_TARGETS;
|
max_targets = STORVSC_MAX_TARGETS;
|
||||||
max_channels = STORVSC_MAX_CHANNELS;
|
max_channels = STORVSC_MAX_CHANNELS;
|
||||||
|
|
Loading…
Reference in New Issue