]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
storvsc: use correct defaults for values determined by protocol negotiation
authorKeith Mange <keith.mange@microsoft.com>
Thu, 13 Aug 2015 15:43:49 +0000 (08:43 -0700)
committerJames Bottomley <JBottomley@Odin.com>
Thu, 27 Aug 2015 05:41:35 +0000 (22:41 -0700)
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>
drivers/scsi/storvsc_drv.c

index d6a42c0000481ec3dc195421bfe2bc92a143112d..8937ce92f8752d96b935ba88dcb252fd345cdc0e 100644 (file)
@@ -151,19 +151,17 @@ struct hv_fc_wwn_packet {
 
 /*
  * 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
- * 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.
- */
-
-static int vmscsi_size_delta;
+ * The storage protocol version is determined during the
+ * initial exchange with the host.  It will indicate which
+ * storage functionality is available in the host.
+*/
 static int vmstor_proto_version;
 
 struct vmscsi_win8_extension {
@@ -208,6 +206,17 @@ struct vmscsi_request {
 } __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.
  */
@@ -1810,14 +1819,10 @@ static int storvsc_probe(struct hv_device *device,
         */
 
        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_targets = STORVSC_IDE_MAX_TARGETS;
                max_channels = STORVSC_IDE_MAX_CHANNELS;
        } else {
-               sense_buffer_size = POST_WIN7_STORVSC_SENSE_BUFFER_SIZE;
-               vmscsi_size_delta = 0;
                max_luns_per_target = STORVSC_MAX_LUNS_PER_TARGET;
                max_targets = STORVSC_MAX_TARGETS;
                max_channels = STORVSC_MAX_CHANNELS;