]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
vmx: Fix a case with 64 disks on one SCSI controller
authorMartin Kletzander <mkletzan@redhat.com>
Tue, 16 Jun 2026 12:29:21 +0000 (14:29 +0200)
committerMartin Kletzander <mkletzan@redhat.com>
Mon, 22 Jun 2026 12:29:43 +0000 (14:29 +0200)
The constants for maximum units on a bus are slightly tricky because for
the narrow bus it does not need to account for the extra unit used by
the controller, but the wide and super-wide ones need to.

With this patch a VMX with 64 disks on a pvscsi controller can be
properly parsed.

To properly handle the maximum numbers one of the conditions also needs
to be changed to not allow for units 16 and 65.  This does not change
various conditionals in XML parsing and VMX formatting as they need a
significant rewrite.  And since that is already working only with the
wide scsi controller (and not the super-wide one) we leave that refactor
for another day as it was done previously.

Tests show this is now possible and they fail before this change.

Resolves: https://redhat.atlassian.net/browse/RHEL-181350
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/conf/domain_conf.h
src/vmx/vmx.c
tests/vmx2xmldata/esx-in-the-wild-11.xml
tests/vmx2xmldata/scsi-driver-max.vmx [new file with mode: 0644]
tests/vmx2xmldata/scsi-driver-max.xml [new file with mode: 0644]
tests/vmx2xmldata/scsi-driver-superwide-max.vmx [new file with mode: 0644]
tests/vmx2xmldata/scsi-driver-superwide-max.xml [new file with mode: 0644]
tests/vmx2xmltest.c

index bd360cd4a3dafcc81be4c0d4e2d020bbc106dd81..0c6c79c41378da5f0d2b017e74867947a5f3168d 100644 (file)
@@ -3184,8 +3184,22 @@ struct _virDomainHypervFeatures {
     char *vendor_id;
 };
 
-#define SCSI_SUPER_WIDE_BUS_MAX_CONT_UNIT 64
+/*
+ * Beware, these numbers mean slightly different things.  Because the unit
+ * number 7 is reserved for the controller, any higher limits must account for
+ * that fact.  I.e. a super-wide bus can have at max 64 disks, but accounting
+ * for the controller occupying one of the units the number needs to be 65.
+ *
+ * The maximums are taken from the following page:
+ * https://configmax.broadcom.com/guest?vmwareproduct=vSphere
+ */
+#define SCSI_SUPER_WIDE_BUS_MAX_CONT_UNIT 65
 #define SCSI_WIDE_BUS_MAX_CONT_UNIT 16
+
+/*
+ * Since 7 unit numbers [0..7) do not interfere with the controller occupying
+ * unit number 7 it reflects the correct number of disks (targets).
+ */
 #define SCSI_NARROW_BUS_MAX_CONT_UNIT 7
 
 
index 572087341ae0b147a5820e08c2af2ed5375bc8ad..72ec1454aa95b7a18a702a6d3ebb6a4eb44a854c 100644 (file)
@@ -2271,7 +2271,7 @@ virVMXGenerateDiskTarget(virDomainDiskDef *def,
             return -1;
         }
 
-        if (unit < 0 || unit > vmdef->scsiBusMaxUnit || unit == 7) {
+        if (unit < 0 || unit >= vmdef->scsiBusMaxUnit || unit == 7) {
             virReportError(VIR_ERR_INTERNAL_ERROR,
                            _("SCSI unit index %1$d out of [0..6,8..%2$u] range"),
                            unit, vmdef->scsiBusMaxUnit);
index 981287bb49309e13e799834d7880928e07edb086..ded63c3345a4de6482d91a4c494878dc3636d1ec 100644 (file)
@@ -29,7 +29,7 @@
     </disk>
     <disk type='file' device='disk'>
       <source file='[datastore] directory/esx6.7-rhel7.7-x86_64_4.vmdk'/>
-      <target dev='sdbl' bus='scsi'/>
+      <target dev='sdbm' bus='scsi'/>
       <address type='drive' controller='1' bus='0' target='0' unit='0'/>
     </disk>
     <controller type='scsi' index='0' model='vmpvscsi'/>
diff --git a/tests/vmx2xmldata/scsi-driver-max.vmx b/tests/vmx2xmldata/scsi-driver-max.vmx
new file mode 100644 (file)
index 0000000..eba4cef
--- /dev/null
@@ -0,0 +1,50 @@
+config.version = "8"
+virtualHW.version = "12"
+scsi0.present = "true"
+scsi0.virtualDev = "pvscsi"
+scsi0:0.present = "true"
+scsi0:0.deviceType = "scsi-hardDisk"
+scsi0:0.fileName = "harddisk0.vmdk"
+scsi0:1.present = "true"
+scsi0:1.deviceType = "scsi-hardDisk"
+scsi0:1.fileName = "harddisk1.vmdk"
+scsi0:2.present = "true"
+scsi0:2.deviceType = "scsi-hardDisk"
+scsi0:2.fileName = "harddisk2.vmdk"
+scsi0:3.present = "true"
+scsi0:3.deviceType = "scsi-hardDisk"
+scsi0:3.fileName = "harddisk3.vmdk"
+scsi0:4.present = "true"
+scsi0:4.deviceType = "scsi-hardDisk"
+scsi0:4.fileName = "harddisk4.vmdk"
+scsi0:5.present = "true"
+scsi0:5.deviceType = "scsi-hardDisk"
+scsi0:5.fileName = "harddisk5.vmdk"
+scsi0:6.present = "true"
+scsi0:6.deviceType = "scsi-hardDisk"
+scsi0:6.fileName = "harddisk6.vmdk"
+scsi0:8.present = "true"
+scsi0:8.deviceType = "scsi-hardDisk"
+scsi0:8.fileName = "harddisk8.vmdk"
+scsi0:9.present = "true"
+scsi0:9.deviceType = "scsi-hardDisk"
+scsi0:9.fileName = "harddisk9.vmdk"
+scsi0:10.present = "true"
+scsi0:10.deviceType = "scsi-hardDisk"
+scsi0:10.fileName = "harddisk10.vmdk"
+scsi0:11.present = "true"
+scsi0:11.deviceType = "scsi-hardDisk"
+scsi0:11.fileName = "harddisk11.vmdk"
+scsi0:12.present = "true"
+scsi0:12.deviceType = "scsi-hardDisk"
+scsi0:12.fileName = "harddisk12.vmdk"
+scsi0:13.present = "true"
+scsi0:13.deviceType = "scsi-hardDisk"
+scsi0:13.fileName = "harddisk13.vmdk"
+scsi0:14.present = "true"
+scsi0:14.deviceType = "scsi-hardDisk"
+scsi0:14.fileName = "harddisk14.vmdk"
+scsi0:15.present = "true"
+scsi0:15.deviceType = "scsi-hardDisk"
+scsi0:15.fileName = "harddisk15.vmdk"
+displayName = "test"
diff --git a/tests/vmx2xmldata/scsi-driver-max.xml b/tests/vmx2xmldata/scsi-driver-max.xml
new file mode 100644 (file)
index 0000000..fa6c133
--- /dev/null
@@ -0,0 +1,95 @@
+<domain type='vmware'>
+  <name>test</name>
+  <uuid>00000000-0000-0000-0000-000000000000</uuid>
+  <memory unit='KiB'>32768</memory>
+  <currentMemory unit='KiB'>32768</currentMemory>
+  <vcpu placement='static'>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'>
+      <source file='[datastore] directory/harddisk0.vmdk'/>
+      <target dev='sda' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk1.vmdk'/>
+      <target dev='sdb' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk2.vmdk'/>
+      <target dev='sdc' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk3.vmdk'/>
+      <target dev='sdd' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='3'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk4.vmdk'/>
+      <target dev='sde' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='4'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk5.vmdk'/>
+      <target dev='sdf' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='5'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk6.vmdk'/>
+      <target dev='sdg' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='6'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk8.vmdk'/>
+      <target dev='sdh' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='8'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk9.vmdk'/>
+      <target dev='sdi' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='9'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk10.vmdk'/>
+      <target dev='sdj' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='10'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk11.vmdk'/>
+      <target dev='sdk' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='11'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk12.vmdk'/>
+      <target dev='sdl' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='12'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk13.vmdk'/>
+      <target dev='sdm' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='13'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk14.vmdk'/>
+      <target dev='sdn' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='14'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk15.vmdk'/>
+      <target dev='sdo' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='15'/>
+    </disk>
+    <controller type='scsi' index='0' model='vmpvscsi'/>
+    <video>
+      <model type='vmvga' vram='4096' primary='yes'/>
+    </video>
+  </devices>
+</domain>
diff --git a/tests/vmx2xmldata/scsi-driver-superwide-max.vmx b/tests/vmx2xmldata/scsi-driver-superwide-max.vmx
new file mode 100644 (file)
index 0000000..38df812
--- /dev/null
@@ -0,0 +1,197 @@
+config.version = "8"
+virtualHW.version = "13"
+scsi0.present = "true"
+scsi0.virtualDev = "pvscsi"
+scsi0:0.present = "true"
+scsi0:0.deviceType = "scsi-hardDisk"
+scsi0:0.fileName = "harddisk0.vmdk"
+scsi0:1.present = "true"
+scsi0:1.deviceType = "scsi-hardDisk"
+scsi0:1.fileName = "harddisk1.vmdk"
+scsi0:2.present = "true"
+scsi0:2.deviceType = "scsi-hardDisk"
+scsi0:2.fileName = "harddisk2.vmdk"
+scsi0:3.present = "true"
+scsi0:3.deviceType = "scsi-hardDisk"
+scsi0:3.fileName = "harddisk3.vmdk"
+scsi0:4.present = "true"
+scsi0:4.deviceType = "scsi-hardDisk"
+scsi0:4.fileName = "harddisk4.vmdk"
+scsi0:5.present = "true"
+scsi0:5.deviceType = "scsi-hardDisk"
+scsi0:5.fileName = "harddisk5.vmdk"
+scsi0:6.present = "true"
+scsi0:6.deviceType = "scsi-hardDisk"
+scsi0:6.fileName = "harddisk6.vmdk"
+scsi0:8.present = "true"
+scsi0:8.deviceType = "scsi-hardDisk"
+scsi0:8.fileName = "harddisk8.vmdk"
+scsi0:9.present = "true"
+scsi0:9.deviceType = "scsi-hardDisk"
+scsi0:9.fileName = "harddisk9.vmdk"
+scsi0:10.present = "true"
+scsi0:10.deviceType = "scsi-hardDisk"
+scsi0:10.fileName = "harddisk10.vmdk"
+scsi0:11.present = "true"
+scsi0:11.deviceType = "scsi-hardDisk"
+scsi0:11.fileName = "harddisk11.vmdk"
+scsi0:12.present = "true"
+scsi0:12.deviceType = "scsi-hardDisk"
+scsi0:12.fileName = "harddisk12.vmdk"
+scsi0:13.present = "true"
+scsi0:13.deviceType = "scsi-hardDisk"
+scsi0:13.fileName = "harddisk13.vmdk"
+scsi0:14.present = "true"
+scsi0:14.deviceType = "scsi-hardDisk"
+scsi0:14.fileName = "harddisk14.vmdk"
+scsi0:15.present = "true"
+scsi0:15.deviceType = "scsi-hardDisk"
+scsi0:15.fileName = "harddisk15.vmdk"
+scsi0:16.present = "true"
+scsi0:16.deviceType = "scsi-hardDisk"
+scsi0:16.fileName = "harddisk16.vmdk"
+scsi0:17.present = "true"
+scsi0:17.deviceType = "scsi-hardDisk"
+scsi0:17.fileName = "harddisk17.vmdk"
+scsi0:18.present = "true"
+scsi0:18.deviceType = "scsi-hardDisk"
+scsi0:18.fileName = "harddisk18.vmdk"
+scsi0:19.present = "true"
+scsi0:19.deviceType = "scsi-hardDisk"
+scsi0:19.fileName = "harddisk19.vmdk"
+scsi0:20.present = "true"
+scsi0:20.deviceType = "scsi-hardDisk"
+scsi0:20.fileName = "harddisk20.vmdk"
+scsi0:21.present = "true"
+scsi0:21.deviceType = "scsi-hardDisk"
+scsi0:21.fileName = "harddisk21.vmdk"
+scsi0:22.present = "true"
+scsi0:22.deviceType = "scsi-hardDisk"
+scsi0:22.fileName = "harddisk22.vmdk"
+scsi0:23.present = "true"
+scsi0:23.deviceType = "scsi-hardDisk"
+scsi0:23.fileName = "harddisk23.vmdk"
+scsi0:24.present = "true"
+scsi0:24.deviceType = "scsi-hardDisk"
+scsi0:24.fileName = "harddisk24.vmdk"
+scsi0:25.present = "true"
+scsi0:25.deviceType = "scsi-hardDisk"
+scsi0:25.fileName = "harddisk25.vmdk"
+scsi0:26.present = "true"
+scsi0:26.deviceType = "scsi-hardDisk"
+scsi0:26.fileName = "harddisk26.vmdk"
+scsi0:27.present = "true"
+scsi0:27.deviceType = "scsi-hardDisk"
+scsi0:27.fileName = "harddisk27.vmdk"
+scsi0:28.present = "true"
+scsi0:28.deviceType = "scsi-hardDisk"
+scsi0:28.fileName = "harddisk28.vmdk"
+scsi0:29.present = "true"
+scsi0:29.deviceType = "scsi-hardDisk"
+scsi0:29.fileName = "harddisk29.vmdk"
+scsi0:30.present = "true"
+scsi0:30.deviceType = "scsi-hardDisk"
+scsi0:30.fileName = "harddisk30.vmdk"
+scsi0:31.present = "true"
+scsi0:31.deviceType = "scsi-hardDisk"
+scsi0:31.fileName = "harddisk31.vmdk"
+scsi0:32.present = "true"
+scsi0:32.deviceType = "scsi-hardDisk"
+scsi0:32.fileName = "harddisk32.vmdk"
+scsi0:33.present = "true"
+scsi0:33.deviceType = "scsi-hardDisk"
+scsi0:33.fileName = "harddisk33.vmdk"
+scsi0:34.present = "true"
+scsi0:34.deviceType = "scsi-hardDisk"
+scsi0:34.fileName = "harddisk34.vmdk"
+scsi0:35.present = "true"
+scsi0:35.deviceType = "scsi-hardDisk"
+scsi0:35.fileName = "harddisk35.vmdk"
+scsi0:36.present = "true"
+scsi0:36.deviceType = "scsi-hardDisk"
+scsi0:36.fileName = "harddisk36.vmdk"
+scsi0:37.present = "true"
+scsi0:37.deviceType = "scsi-hardDisk"
+scsi0:37.fileName = "harddisk37.vmdk"
+scsi0:38.present = "true"
+scsi0:38.deviceType = "scsi-hardDisk"
+scsi0:38.fileName = "harddisk38.vmdk"
+scsi0:39.present = "true"
+scsi0:39.deviceType = "scsi-hardDisk"
+scsi0:39.fileName = "harddisk39.vmdk"
+scsi0:40.present = "true"
+scsi0:40.deviceType = "scsi-hardDisk"
+scsi0:40.fileName = "harddisk40.vmdk"
+scsi0:41.present = "true"
+scsi0:41.deviceType = "scsi-hardDisk"
+scsi0:41.fileName = "harddisk41.vmdk"
+scsi0:42.present = "true"
+scsi0:42.deviceType = "scsi-hardDisk"
+scsi0:42.fileName = "harddisk42.vmdk"
+scsi0:43.present = "true"
+scsi0:43.deviceType = "scsi-hardDisk"
+scsi0:43.fileName = "harddisk43.vmdk"
+scsi0:44.present = "true"
+scsi0:44.deviceType = "scsi-hardDisk"
+scsi0:44.fileName = "harddisk44.vmdk"
+scsi0:45.present = "true"
+scsi0:45.deviceType = "scsi-hardDisk"
+scsi0:45.fileName = "harddisk45.vmdk"
+scsi0:46.present = "true"
+scsi0:46.deviceType = "scsi-hardDisk"
+scsi0:46.fileName = "harddisk46.vmdk"
+scsi0:47.present = "true"
+scsi0:47.deviceType = "scsi-hardDisk"
+scsi0:47.fileName = "harddisk47.vmdk"
+scsi0:48.present = "true"
+scsi0:48.deviceType = "scsi-hardDisk"
+scsi0:48.fileName = "harddisk48.vmdk"
+scsi0:49.present = "true"
+scsi0:49.deviceType = "scsi-hardDisk"
+scsi0:49.fileName = "harddisk49.vmdk"
+scsi0:50.present = "true"
+scsi0:50.deviceType = "scsi-hardDisk"
+scsi0:50.fileName = "harddisk50.vmdk"
+scsi0:51.present = "true"
+scsi0:51.deviceType = "scsi-hardDisk"
+scsi0:51.fileName = "harddisk51.vmdk"
+scsi0:52.present = "true"
+scsi0:52.deviceType = "scsi-hardDisk"
+scsi0:52.fileName = "harddisk52.vmdk"
+scsi0:53.present = "true"
+scsi0:53.deviceType = "scsi-hardDisk"
+scsi0:53.fileName = "harddisk53.vmdk"
+scsi0:54.present = "true"
+scsi0:54.deviceType = "scsi-hardDisk"
+scsi0:54.fileName = "harddisk54.vmdk"
+scsi0:55.present = "true"
+scsi0:55.deviceType = "scsi-hardDisk"
+scsi0:55.fileName = "harddisk55.vmdk"
+scsi0:56.present = "true"
+scsi0:56.deviceType = "scsi-hardDisk"
+scsi0:56.fileName = "harddisk56.vmdk"
+scsi0:57.present = "true"
+scsi0:57.deviceType = "scsi-hardDisk"
+scsi0:57.fileName = "harddisk57.vmdk"
+scsi0:58.present = "true"
+scsi0:58.deviceType = "scsi-hardDisk"
+scsi0:58.fileName = "harddisk58.vmdk"
+scsi0:59.present = "true"
+scsi0:59.deviceType = "scsi-hardDisk"
+scsi0:59.fileName = "harddisk59.vmdk"
+scsi0:60.present = "true"
+scsi0:60.deviceType = "scsi-hardDisk"
+scsi0:60.fileName = "harddisk60.vmdk"
+scsi0:61.present = "true"
+scsi0:61.deviceType = "scsi-hardDisk"
+scsi0:61.fileName = "harddisk61.vmdk"
+scsi0:62.present = "true"
+scsi0:62.deviceType = "scsi-hardDisk"
+scsi0:62.fileName = "harddisk62.vmdk"
+scsi0:63.present = "true"
+scsi0:63.deviceType = "scsi-hardDisk"
+scsi0:63.fileName = "harddisk63.vmdk"
+scsi0:64.present = "true"
+scsi0:64.deviceType = "scsi-hardDisk"
+scsi0:64.fileName = "harddisk63.vmdk"
+displayName = "test"
diff --git a/tests/vmx2xmldata/scsi-driver-superwide-max.xml b/tests/vmx2xmldata/scsi-driver-superwide-max.xml
new file mode 100644 (file)
index 0000000..2e4bc0b
--- /dev/null
@@ -0,0 +1,340 @@
+<domain type='vmware'>
+  <name>test</name>
+  <uuid>00000000-0000-0000-0000-000000000000</uuid>
+  <memory unit='KiB'>32768</memory>
+  <currentMemory unit='KiB'>32768</currentMemory>
+  <vcpu placement='static'>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'>
+      <source file='[datastore] directory/harddisk0.vmdk'/>
+      <target dev='sda' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk1.vmdk'/>
+      <target dev='sdb' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk2.vmdk'/>
+      <target dev='sdc' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk3.vmdk'/>
+      <target dev='sdd' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='3'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk4.vmdk'/>
+      <target dev='sde' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='4'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk5.vmdk'/>
+      <target dev='sdf' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='5'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk6.vmdk'/>
+      <target dev='sdg' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='6'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk8.vmdk'/>
+      <target dev='sdh' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='8'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk9.vmdk'/>
+      <target dev='sdi' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='9'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk10.vmdk'/>
+      <target dev='sdj' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='10'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk11.vmdk'/>
+      <target dev='sdk' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='11'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk12.vmdk'/>
+      <target dev='sdl' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='12'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk13.vmdk'/>
+      <target dev='sdm' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='13'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk14.vmdk'/>
+      <target dev='sdn' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='14'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk15.vmdk'/>
+      <target dev='sdo' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='15'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk16.vmdk'/>
+      <target dev='sdp' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='16'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk17.vmdk'/>
+      <target dev='sdq' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='17'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk18.vmdk'/>
+      <target dev='sdr' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='18'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk19.vmdk'/>
+      <target dev='sds' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='19'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk20.vmdk'/>
+      <target dev='sdt' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='20'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk21.vmdk'/>
+      <target dev='sdu' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='21'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk22.vmdk'/>
+      <target dev='sdv' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='22'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk23.vmdk'/>
+      <target dev='sdw' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='23'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk24.vmdk'/>
+      <target dev='sdx' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='24'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk25.vmdk'/>
+      <target dev='sdy' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='25'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk26.vmdk'/>
+      <target dev='sdz' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='26'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk27.vmdk'/>
+      <target dev='sdaa' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='27'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk28.vmdk'/>
+      <target dev='sdab' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='28'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk29.vmdk'/>
+      <target dev='sdac' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='29'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk30.vmdk'/>
+      <target dev='sdad' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='30'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk31.vmdk'/>
+      <target dev='sdae' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='31'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk32.vmdk'/>
+      <target dev='sdaf' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='32'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk33.vmdk'/>
+      <target dev='sdag' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='33'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk34.vmdk'/>
+      <target dev='sdah' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='34'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk35.vmdk'/>
+      <target dev='sdai' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='35'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk36.vmdk'/>
+      <target dev='sdaj' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='36'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk37.vmdk'/>
+      <target dev='sdak' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='37'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk38.vmdk'/>
+      <target dev='sdal' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='38'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk39.vmdk'/>
+      <target dev='sdam' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='39'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk40.vmdk'/>
+      <target dev='sdan' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='40'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk41.vmdk'/>
+      <target dev='sdao' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='41'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk42.vmdk'/>
+      <target dev='sdap' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='42'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk43.vmdk'/>
+      <target dev='sdaq' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='43'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk44.vmdk'/>
+      <target dev='sdar' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='44'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk45.vmdk'/>
+      <target dev='sdas' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='45'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk46.vmdk'/>
+      <target dev='sdat' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='46'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk47.vmdk'/>
+      <target dev='sdau' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='47'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk48.vmdk'/>
+      <target dev='sdav' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='48'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk49.vmdk'/>
+      <target dev='sdaw' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='49'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk50.vmdk'/>
+      <target dev='sdax' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='50'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk51.vmdk'/>
+      <target dev='sday' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='51'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk52.vmdk'/>
+      <target dev='sdaz' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='52'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk53.vmdk'/>
+      <target dev='sdba' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='53'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk54.vmdk'/>
+      <target dev='sdbb' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='54'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk55.vmdk'/>
+      <target dev='sdbc' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='55'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk56.vmdk'/>
+      <target dev='sdbd' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='56'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk57.vmdk'/>
+      <target dev='sdbe' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='57'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk58.vmdk'/>
+      <target dev='sdbf' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='58'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk59.vmdk'/>
+      <target dev='sdbg' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='59'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk60.vmdk'/>
+      <target dev='sdbh' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='60'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk61.vmdk'/>
+      <target dev='sdbi' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='61'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk62.vmdk'/>
+      <target dev='sdbj' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='62'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk63.vmdk'/>
+      <target dev='sdbk' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='63'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <source file='[datastore] directory/harddisk63.vmdk'/>
+      <target dev='sdbl' bus='scsi'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='64'/>
+    </disk>
+    <controller type='scsi' index='0' model='vmpvscsi'/>
+    <video>
+      <model type='vmvga' vram='4096' primary='yes'/>
+    </video>
+  </devices>
+</domain>
index 3ffc04fda42f00d9a2a7a97447e9ee4b9335da49..585ef00bd65439a37826273cc7fdaf950b5d4e22 100644 (file)
@@ -151,6 +151,8 @@ mymain(void)
     DO_TEST("graphics-vnc");
 
     DO_TEST("scsi-driver");
+    DO_TEST("scsi-driver-max");
+    DO_TEST("scsi-driver-superwide-max");
     DO_TEST("scsi-writethrough");
 
     DO_TEST("harddisk-scsi-file");