[libvirt] [PATCH Repost] esx: Allow 'lsisas1068' as SCSI controller type

Matthias Bolte matthias.bolte at googlemail.com
Tue Apr 6 21:38:00 UTC 2010


Extend tests to cover all SCSI controller types and document the
new type.

The lsisas1068 SCSI controller type was added in ESX 4.0. The VMX
parser reports an error when this controller type is present. This
makes virsh dumpxml fail for every domain that uses this controller
type.

This patch fixes this and adds lsisas1068 to the list of accepted
SCSI controller types.

Reported by Jonathan Kelley.
---

This is a repost of this patch [1].

DanPB pointed out that the ESX driver is currently abusing the <driver>
element to expose the SCSI controller type.

Now we have the <controller> element to explicitly model stuff like
SCSI controllers in the domain XML config. The ESX driver doesn't
support this yet. Also there is currently no way to express the SCSI
controller type in the <controller> element. Something like the model
attribute for NICs need to be added here too.

So I'd like to push this patch now in order to have the immediate
problem of failing virsh dumpxml fixed in libvirt 0.8.0. I already got
asked offlist when this problem will be fixed.

[1] https://www.redhat.com/archives/libvir-list/2010-March/msg00548.html

Matthias

 docs/drvesx.html.in                         |    4 +++
 src/esx/esx_vmx.c                           |   14 +++++++-----
 tests/vmx2xmldata/vmx2xml-scsi-buslogic.vmx |    7 ------
 tests/vmx2xmldata/vmx2xml-scsi-buslogic.xml |   20 ------------------
 tests/vmx2xmldata/vmx2xml-scsi-driver.vmx   |   17 +++++++++++++++
 tests/vmx2xmldata/vmx2xml-scsi-driver.xml   |   30 +++++++++++++++++++++++++++
 tests/vmx2xmltest.c                         |    2 +-
 tests/xml2vmxdata/xml2vmx-scsi-buslogic.vmx |   12 ----------
 tests/xml2vmxdata/xml2vmx-scsi-buslogic.xml |   15 -------------
 tests/xml2vmxdata/xml2vmx-scsi-driver.vmx   |   22 +++++++++++++++++++
 tests/xml2vmxdata/xml2vmx-scsi-driver.xml   |   25 ++++++++++++++++++++++
 tests/xml2vmxtest.c                         |    2 +-
 12 files changed, 108 insertions(+), 62 deletions(-)
 delete mode 100644 tests/vmx2xmldata/vmx2xml-scsi-buslogic.vmx
 delete mode 100644 tests/vmx2xmldata/vmx2xml-scsi-buslogic.xml
 create mode 100644 tests/vmx2xmldata/vmx2xml-scsi-driver.vmx
 create mode 100644 tests/vmx2xmldata/vmx2xml-scsi-driver.xml
 delete mode 100644 tests/xml2vmxdata/xml2vmx-scsi-buslogic.vmx
 delete mode 100644 tests/xml2vmxdata/xml2vmx-scsi-buslogic.xml
 create mode 100644 tests/xml2vmxdata/xml2vmx-scsi-driver.vmx
 create mode 100644 tests/xml2vmxdata/xml2vmx-scsi-driver.xml

diff --git a/docs/drvesx.html.in b/docs/drvesx.html.in
index d5c192d..422a7f0 100644
--- a/docs/drvesx.html.in
+++ b/docs/drvesx.html.in
@@ -282,6 +282,10 @@ ethernet0.checkMACAddress = "false"
         <dd>
             LSI Logic SCSI controller for recent guests.
         </dd>
+        <dt><code>lsisas1068</code></dt>
+        <dd>
+            LSI Logic SAS 1068 controller.
+        </dd>
     </dl>
     <p>
         Here a domain XML snippet:
diff --git a/src/esx/esx_vmx.c b/src/esx/esx_vmx.c
index d242fc6..647e720 100644
--- a/src/esx/esx_vmx.c
+++ b/src/esx/esx_vmx.c
@@ -552,10 +552,11 @@ esxVMX_GatherSCSIControllers(virDomainDefPtr def, char *virtualDev[4],
 
         if (disk->driverName != NULL &&
             STRCASENEQ(disk->driverName, "buslogic") &&
-            STRCASENEQ(disk->driverName, "lsilogic")) {
+            STRCASENEQ(disk->driverName, "lsilogic") &&
+            STRCASENEQ(disk->driverName, "lsisas1068")) {
             ESX_ERROR(VIR_ERR_INTERNAL_ERROR,
                       _("Expecting domain XML entry 'devices/disk/target' to "
-                        "be 'buslogic' or 'lsilogic' but found '%s'"),
+                        "be 'buslogic' or 'lsilogic' or 'lsisas1068' but found '%s'"),
                       disk->driverName);
             return -1;
         }
@@ -1266,10 +1267,11 @@ esxVMX_ParseSCSIController(virConfPtr conf, int controller, int *present,
 
     if (*virtualDev != NULL &&
         STRCASENEQ(*virtualDev, "buslogic") &&
-        STRCASENEQ(*virtualDev, "lsilogic")) {
+        STRCASENEQ(*virtualDev, "lsilogic") &&
+        STRCASENEQ(*virtualDev, "lsisas1068")) {
         ESX_ERROR(VIR_ERR_INTERNAL_ERROR,
-                  _("Expecting VMX entry '%s' to be 'buslogic' or 'lsilogic' "
-                    "but found '%s'"), virtualDev_name, *virtualDev);
+                  _("Expecting VMX entry '%s' to be 'buslogic' or 'lsilogic' or "
+                    "'lsisas1068' but found '%s'"), virtualDev_name, *virtualDev);
         goto failure;
     }
 
@@ -1309,7 +1311,7 @@ esxVMX_ParseDisk(esxVI_Context *ctx, virConfPtr conf, int device, int bus,
      *        bus = VIR_DOMAIN_DISK_BUS_SCSI
      * controller = [0..3]
      *         id = [0..6,8..15]
-     * virtualDev = {'buslogic', 'lsilogic'}
+     * virtualDev = {'buslogic', 'lsilogic', 'lsisas1068'}
      *
      *     device = {VIR_DOMAIN_DISK_DEVICE_DISK, VIR_DOMAIN_DISK_DEVICE_CDROM}
      *        bus = VIR_DOMAIN_DISK_BUS_IDE
diff --git a/tests/vmx2xmldata/vmx2xml-scsi-buslogic.vmx b/tests/vmx2xmldata/vmx2xml-scsi-buslogic.vmx
deleted file mode 100644
index 1725051..0000000
--- a/tests/vmx2xmldata/vmx2xml-scsi-buslogic.vmx
+++ /dev/null
@@ -1,7 +0,0 @@
-config.version = "8"
-virtualHW.version = "4"
-scsi0.present = "true"
-scsi0.virtualDev = "buslogic"
-scsi0:0.present = "true"
-scsi0:0.deviceType = "scsi-hardDisk"
-scsi0:0.fileName = "harddisk.vmdk"
diff --git a/tests/vmx2xmldata/vmx2xml-scsi-buslogic.xml b/tests/vmx2xmldata/vmx2xml-scsi-buslogic.xml
deleted file mode 100644
index 2ffb866..0000000
--- a/tests/vmx2xmldata/vmx2xml-scsi-buslogic.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<domain type='vmware'>
-  <uuid>00000000-0000-0000-0000-000000000000</uuid>
-  <memory>32768</memory>
-  <currentMemory>32768</currentMemory>
-  <vcpu>1</vcpu>
-  <os>
-    <type arch='i686'>hvm</type>
-  </os>
-  <clock offset='utc'/>
-  <on_poweroff>destroy</on_poweroff>
-  <on_reboot>restart</on_reboot>
-  <on_crash>destroy</on_crash>
-  <devices>
-    <disk type='file' device='disk'>
-      <driver name='buslogic'/>
-      <source file='[datastore] directory/harddisk.vmdk'/>
-      <target dev='sda' bus='scsi'/>
-    </disk>
-  </devices>
-</domain>
diff --git a/tests/vmx2xmldata/vmx2xml-scsi-driver.vmx b/tests/vmx2xmldata/vmx2xml-scsi-driver.vmx
new file mode 100644
index 0000000..cb055f6
--- /dev/null
+++ b/tests/vmx2xmldata/vmx2xml-scsi-driver.vmx
@@ -0,0 +1,17 @@
+config.version = "8"
+virtualHW.version = "4"
+scsi0.present = "true"
+scsi0.virtualDev = "buslogic"
+scsi1.present = "true"
+scsi1.virtualDev = "lsilogic"
+scsi2.present = "true"
+scsi2.virtualDev = "lsisas1068"
+scsi0:0.present = "true"
+scsi0:0.deviceType = "scsi-hardDisk"
+scsi0:0.fileName = "harddisk1.vmdk"
+scsi1:0.present = "true"
+scsi1:0.deviceType = "scsi-hardDisk"
+scsi1:0.fileName = "harddisk2.vmdk"
+scsi2:0.present = "true"
+scsi2:0.deviceType = "scsi-hardDisk"
+scsi2:0.fileName = "harddisk3.vmdk"
diff --git a/tests/vmx2xmldata/vmx2xml-scsi-driver.xml b/tests/vmx2xmldata/vmx2xml-scsi-driver.xml
new file mode 100644
index 0000000..1fa9ac4
--- /dev/null
+++ b/tests/vmx2xmldata/vmx2xml-scsi-driver.xml
@@ -0,0 +1,30 @@
+<domain type='vmware'>
+  <uuid>00000000-0000-0000-0000-000000000000</uuid>
+  <memory>32768</memory>
+  <currentMemory>32768</currentMemory>
+  <vcpu>1</vcpu>
+  <os>
+    <type arch='i686'>hvm</type>
+  </os>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <disk type='file' device='disk'>
+      <driver name='buslogic'/>
+      <source file='[datastore] directory/harddisk1.vmdk'/>
+      <target dev='sda' bus='scsi'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <driver name='lsilogic'/>
+      <source file='[datastore] directory/harddisk2.vmdk'/>
+      <target dev='sdp' bus='scsi'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <driver name='lsisas1068'/>
+      <source file='[datastore] directory/harddisk3.vmdk'/>
+      <target dev='sdae' bus='scsi'/>
+    </disk>
+  </devices>
+</domain>
diff --git a/tests/vmx2xmltest.c b/tests/vmx2xmltest.c
index b036f5b..f3b3b5e 100644
--- a/tests/vmx2xmltest.c
+++ b/tests/vmx2xmltest.c
@@ -130,7 +130,7 @@ mymain(int argc, char **argv)
 
     DO_TEST("graphics-vnc", "graphics-vnc", esxVI_APIVersion_25);
 
-    DO_TEST("scsi-buslogic", "scsi-buslogic", esxVI_APIVersion_25);
+    DO_TEST("scsi-driver", "scsi-driver", esxVI_APIVersion_25);
     DO_TEST("scsi-writethrough", "scsi-writethrough", esxVI_APIVersion_25);
 
     DO_TEST("harddisk-scsi-file", "harddisk-scsi-file", esxVI_APIVersion_25);
diff --git a/tests/xml2vmxdata/xml2vmx-scsi-buslogic.vmx b/tests/xml2vmxdata/xml2vmx-scsi-buslogic.vmx
deleted file mode 100644
index 2f98da3..0000000
--- a/tests/xml2vmxdata/xml2vmx-scsi-buslogic.vmx
+++ /dev/null
@@ -1,12 +0,0 @@
-config.version = "8"
-virtualHW.version = "4"
-guestOS = "other"
-uuid.bios = "56 4d 9b ef ac d9 b4 e0-c8 f0 ae a8 b9 10 35 15"
-displayName = "scsi-buslogic"
-memsize = "4"
-numvcpus = "1"
-scsi0.present = "true"
-scsi0.virtualDev = "buslogic"
-scsi0:0.present = "true"
-scsi0:0.deviceType = "scsi-hardDisk"
-scsi0:0.fileName = "/vmfs/volumes/datastore/directory/harddisk.vmdk"
diff --git a/tests/xml2vmxdata/xml2vmx-scsi-buslogic.xml b/tests/xml2vmxdata/xml2vmx-scsi-buslogic.xml
deleted file mode 100644
index 5d52c54..0000000
--- a/tests/xml2vmxdata/xml2vmx-scsi-buslogic.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<domain type='vmware'>
-  <name>scsi-buslogic</name>
-  <uuid>564d9bef-acd9-b4e0-c8f0-aea8b9103515</uuid>
-  <memory>4096</memory>
-  <os>
-    <type>hvm</type>
-  </os>
-  <devices>
-    <disk type='file' device='disk'>
-      <driver name='buslogic'/>
-      <source file='[datastore] directory/harddisk.vmdk'/>
-      <target dev='sda' bus='scsi'/>
-    </disk>
-  </devices>
-</domain>
diff --git a/tests/xml2vmxdata/xml2vmx-scsi-driver.vmx b/tests/xml2vmxdata/xml2vmx-scsi-driver.vmx
new file mode 100644
index 0000000..7cceca0
--- /dev/null
+++ b/tests/xml2vmxdata/xml2vmx-scsi-driver.vmx
@@ -0,0 +1,22 @@
+config.version = "8"
+virtualHW.version = "4"
+guestOS = "other"
+uuid.bios = "56 4d 9b ef ac d9 b4 e0-c8 f0 ae a8 b9 10 35 15"
+displayName = "scsi-buslogic"
+memsize = "4"
+numvcpus = "1"
+scsi0.present = "true"
+scsi0.virtualDev = "buslogic"
+scsi1.present = "true"
+scsi1.virtualDev = "lsilogic"
+scsi2.present = "true"
+scsi2.virtualDev = "lsisas1068"
+scsi0:0.present = "true"
+scsi0:0.deviceType = "scsi-hardDisk"
+scsi0:0.fileName = "/vmfs/volumes/datastore/directory/harddisk1.vmdk"
+scsi1:0.present = "true"
+scsi1:0.deviceType = "scsi-hardDisk"
+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"
diff --git a/tests/xml2vmxdata/xml2vmx-scsi-driver.xml b/tests/xml2vmxdata/xml2vmx-scsi-driver.xml
new file mode 100644
index 0000000..797a26e
--- /dev/null
+++ b/tests/xml2vmxdata/xml2vmx-scsi-driver.xml
@@ -0,0 +1,25 @@
+<domain type='vmware'>
+  <name>scsi-buslogic</name>
+  <uuid>564d9bef-acd9-b4e0-c8f0-aea8b9103515</uuid>
+  <memory>4096</memory>
+  <os>
+    <type>hvm</type>
+  </os>
+  <devices>
+    <disk type='file' device='disk'>
+      <driver name='buslogic'/>
+      <source file='[datastore] directory/harddisk1.vmdk'/>
+      <target dev='sda' bus='scsi'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <driver name='lsilogic'/>
+      <source file='[datastore] directory/harddisk2.vmdk'/>
+      <target dev='sdp' bus='scsi'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <driver name='lsisas1068'/>
+      <source file='[datastore] directory/harddisk3.vmdk'/>
+      <target dev='sdae' bus='scsi'/>
+    </disk>
+  </devices>
+</domain>
diff --git a/tests/xml2vmxtest.c b/tests/xml2vmxtest.c
index b8b9d6f..f9c4730 100644
--- a/tests/xml2vmxtest.c
+++ b/tests/xml2vmxtest.c
@@ -175,7 +175,7 @@ mymain(int argc, char **argv)
 
     DO_TEST("graphics-vnc", "graphics-vnc", esxVI_APIVersion_25);
 
-    DO_TEST("scsi-buslogic", "scsi-buslogic", esxVI_APIVersion_25);
+    DO_TEST("scsi-driver", "scsi-driver", esxVI_APIVersion_25);
     DO_TEST("scsi-writethrough", "scsi-writethrough", esxVI_APIVersion_25);
 
     DO_TEST("harddisk-scsi-file", "harddisk-scsi-file", esxVI_APIVersion_25);
-- 
1.6.3.3




More information about the libvir-list mailing list