]> xenbits.xensource.com Git - libvirt.git/commitdiff
esx: Allow 'vmpvscsi' as SCSI controller model
authorMatthias Bolte <matthias.bolte@googlemail.com>
Thu, 24 Jun 2010 14:58:54 +0000 (16:58 +0200)
committerMatthias Bolte <matthias.bolte@googlemail.com>
Sat, 24 Jul 2010 15:31:04 +0000 (17:31 +0200)
docs/drvesx.html.in
docs/schemas/domain.rng
src/conf/domain_conf.c
src/conf/domain_conf.h
src/esx/esx_vmx.c
tests/vmx2xmldata/vmx2xml-scsi-driver.vmx
tests/vmx2xmldata/vmx2xml-scsi-driver.xml
tests/xml2vmxdata/xml2vmx-scsi-driver.vmx
tests/xml2vmxdata/xml2vmx-scsi-driver.xml

index bc7e1a0201448fb83e195d3f11ef02fd8b4cf8c1..88c70bc9672b013b73b7492b88e071d5d91d292a 100644 (file)
@@ -302,7 +302,13 @@ ethernet0.checkMACAddress = "false"
         </dd>
         <dt><code>lsisas1068</code></dt>
         <dd>
-            LSI Logic SAS 1068 controller.
+            LSI Logic SAS 1068 controller. <span class="since">Since 0.8.0</span>
+        </dd>
+        <dt><code>vmpvscsi</code></dt>
+        <dd>
+            Special VMware Paravirtual SCSI controller, requires VMware tools inside
+            the guest. See <a href="http://kb.vmware.com/kb/1010398">VMware KB1010398</a>
+            for details. <span class="since">Since 0.8.3</span>
         </dd>
     </dl>
     <p>
@@ -642,5 +648,10 @@ Enter administrator password for example-vcenter.com:
                 VMware VMX config parameters
             </a>
         </li>
+        <li>
+            <a href="http://www.vmware.com/pdf/vsp_4_pvscsi_perf.pdf">
+                VMware ESX 4.0 PVSCSI Storage Performance
+            </a>
+        </li>
     </ul>
 </body></html>
index 08e7c01d93e9fc1aeb4fecad279ae0c3c1dc9d75..9289c8f9e407d8c7ea13a9101ba8a4ebcdc87e26 100644 (file)
             <value>buslogic</value>
             <value>lsilogic</value>
             <value>lsisas1068</value>
+            <value>vmpvscsi</value>
           </choice>
         </attribute>
       </optional>
index 680d5c95d6a4b25d25086321ac8aee69525049c2..b52656166c0b0d682bd2e3e96132cf3a21040998 100644 (file)
@@ -143,7 +143,8 @@ VIR_ENUM_IMPL(virDomainController, VIR_DOMAIN_CONTROLLER_TYPE_LAST,
 VIR_ENUM_IMPL(virDomainControllerModel, VIR_DOMAIN_CONTROLLER_MODEL_LAST,
               "buslogic",
               "lsilogic",
-              "lsisas1068")
+              "lsisas1068",
+              "vmpvscsi")
 
 VIR_ENUM_IMPL(virDomainFS, VIR_DOMAIN_FS_TYPE_LAST,
               "mount",
index 7728b6e7be6f86489bdb7182ecc163fdf1510196..2a60515a45e5bb6db5ee6aec338c6fbb003bd795 100644 (file)
@@ -199,6 +199,7 @@ enum virDomainControllerModel {
     VIR_DOMAIN_CONTROLLER_MODEL_BUSLOGIC,
     VIR_DOMAIN_CONTROLLER_MODEL_LSILOGIC,
     VIR_DOMAIN_CONTROLLER_MODEL_LSISAS1068,
+    VIR_DOMAIN_CONTROLLER_MODEL_VMPVSCSI,
 
     VIR_DOMAIN_CONTROLLER_MODEL_LAST
 };
index e10e74584af03ebfc674b54bafcf527d8457b04a..c69e116d295971d192905e94e75fcdd85ebbac9f 100644 (file)
@@ -428,6 +428,15 @@ def->parallels[0]...
 #define ESX_BUILD_VMX_NAME(_suffix)                                           \
     snprintf(_suffix##_name, sizeof(_suffix##_name), "%s."#_suffix, prefix);
 
+/* directly map the virDomainControllerModel to esxVMX_SCSIControllerModel,
+ * this is good enough for now because all virDomainControllerModel values
+ * are actually SCSI controller models in the ESX case */
+VIR_ENUM_DECL(esxVMX_SCSIControllerModel)
+VIR_ENUM_IMPL(esxVMX_SCSIControllerModel, VIR_DOMAIN_CONTROLLER_MODEL_LAST,
+              "buslogic",
+              "lsilogic",
+              "lsisas1068",
+              "pvscsi");
 
 
 int
@@ -740,11 +749,12 @@ esxVMX_GatherSCSIControllers(virDomainDefPtr def, int virtualDev[4],
         if (controller->model != -1 &&
             controller->model != VIR_DOMAIN_CONTROLLER_MODEL_BUSLOGIC &&
             controller->model != VIR_DOMAIN_CONTROLLER_MODEL_LSILOGIC &&
-            controller->model != VIR_DOMAIN_CONTROLLER_MODEL_LSISAS1068) {
+            controller->model != VIR_DOMAIN_CONTROLLER_MODEL_LSISAS1068 &&
+            controller->model != VIR_DOMAIN_CONTROLLER_MODEL_VMPVSCSI) {
             ESX_ERROR(VIR_ERR_INTERNAL_ERROR,
                       _("Expecting domain XML attribute 'model' of entry "
                         "'controller' to be 'buslogic' or 'lsilogic' or "
-                        "'lsisas1068' but found '%s'"),
+                        "'lsisas1068' or 'vmpvscsi' but found '%s'"),
                       virDomainControllerModelTypeToString(controller->model));
             return -1;
         }
@@ -1478,16 +1488,17 @@ esxVMX_ParseSCSIController(virConfPtr conf, int controller, bool *present,
             *tmp = c_tolower(*tmp);
         }
 
-        *virtualDev = virDomainControllerModelTypeFromString(virtualDev_string);
+        *virtualDev = esxVMX_SCSIControllerModelTypeFromString(virtualDev_string);
 
         if (*virtualDev == -1 ||
             (*virtualDev != VIR_DOMAIN_CONTROLLER_MODEL_BUSLOGIC &&
              *virtualDev != VIR_DOMAIN_CONTROLLER_MODEL_LSILOGIC &&
-             *virtualDev != VIR_DOMAIN_CONTROLLER_MODEL_LSISAS1068)) {
+             *virtualDev != VIR_DOMAIN_CONTROLLER_MODEL_LSISAS1068 &&
+             *virtualDev != VIR_DOMAIN_CONTROLLER_MODEL_VMPVSCSI)) {
             ESX_ERROR(VIR_ERR_INTERNAL_ERROR,
                       _("Expecting VMX entry '%s' to be 'buslogic' or 'lsilogic' "
-                        "or 'lsisas1068' but found '%s'"), virtualDev_name,
-                        virtualDev_string);
+                        "or 'lsisas1068' or 'pvscsi' but found '%s'"),
+                       virtualDev_name, virtualDev_string);
             goto failure;
         }
     }
@@ -2619,7 +2630,7 @@ esxVMX_FormatConfig(esxVI_Context *ctx, virCapsPtr caps, virDomainDefPtr def,
 
             if (scsi_virtualDev[i] != -1) {
                 virBufferVSprintf(&buffer, "scsi%d.virtualDev = \"%s\"\n", i,
-                                  virDomainControllerModelTypeToString
+                                  esxVMX_SCSIControllerModelTypeToString
                                     (scsi_virtualDev[i]));
             }
         }
index cb055f6d7b2ecab967add2cb45c6e6ea5863aac7..64d7c99d3af7514a991b8e886c1ec9fe60f8fe26 100644 (file)
@@ -6,6 +6,8 @@ scsi1.present = "true"
 scsi1.virtualDev = "lsilogic"
 scsi2.present = "true"
 scsi2.virtualDev = "lsisas1068"
+scsi3.present = "true"
+scsi3.virtualDev = "pvscsi"
 scsi0:0.present = "true"
 scsi0:0.deviceType = "scsi-hardDisk"
 scsi0:0.fileName = "harddisk1.vmdk"
@@ -15,3 +17,6 @@ scsi1:0.fileName = "harddisk2.vmdk"
 scsi2:0.present = "true"
 scsi2:0.deviceType = "scsi-hardDisk"
 scsi2:0.fileName = "harddisk3.vmdk"
+scsi3:0.present = "true"
+scsi3:0.deviceType = "scsi-hardDisk"
+scsi3:0.fileName = "harddisk4.vmdk"
index d39415d16291528603fe6fe3e1ea0f37823da62f..553783b62ee52a510211b428cfbc53ac2d78b4e2 100644 (file)
       <target dev='sdae' bus='scsi'/>
       <address type='drive' controller='2' bus='0' unit='0'/>
     </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk4.vmdk'/>
+      <target dev='sdat' bus='scsi'/>
+      <address type='drive' controller='3' bus='0' unit='0'/>
+    </disk>
     <controller type='scsi' index='0' model='buslogic'/>
     <controller type='scsi' index='1' model='lsilogic'/>
     <controller type='scsi' index='2' model='lsisas1068'/>
+    <controller type='scsi' index='3' model='vmpvscsi'/>
   </devices>
 </domain>
index 7cceca0cbfed39af1df7fb6c766af3285ef60d51..a92d7fc98cd5b3c1a153015c09f3da40fbd3e426 100644 (file)
@@ -11,6 +11,8 @@ scsi1.present = "true"
 scsi1.virtualDev = "lsilogic"
 scsi2.present = "true"
 scsi2.virtualDev = "lsisas1068"
+scsi3.present = "true"
+scsi3.virtualDev = "pvscsi"
 scsi0:0.present = "true"
 scsi0:0.deviceType = "scsi-hardDisk"
 scsi0:0.fileName = "/vmfs/volumes/datastore/directory/harddisk1.vmdk"
@@ -20,3 +22,6 @@ scsi1:0.fileName = "/vmfs/volumes/datastore/directory/harddisk2.vmdk"
 scsi2:0.present = "true"
 scsi2:0.deviceType = "scsi-hardDisk"
 scsi2:0.fileName = "/vmfs/volumes/datastore/directory/harddisk3.vmdk"
+scsi3:0.present = "true"
+scsi3:0.deviceType = "scsi-hardDisk"
+scsi3:0.fileName = "/vmfs/volumes/datastore/directory/harddisk4.vmdk"
index 797a26e4ae02a1f2dc5ba3c04b133517baf9c849..ac630ee5ba7c7f0f716c627261ddce1925db4b7c 100644 (file)
       <source file='[datastore] directory/harddisk3.vmdk'/>
       <target dev='sdae' bus='scsi'/>
     </disk>
+    <disk type='file' device='disk'>
+      <driver name='vmpvscsi'/>
+      <source file='[datastore] directory/harddisk4.vmdk'/>
+      <target dev='sdat' bus='scsi'/>
+    </disk>
   </devices>
 </domain>