summaryrefslogtreecommitdiff
path: root/src/vmx
diff options
context:
space:
mode:
authorMichal Privoznik <mprivozn@redhat.com>2021-07-29 16:09:58 +0200
committerMichal Privoznik <mprivozn@redhat.com>2021-08-16 14:22:38 +0200
commit32f7db0989e47319ce585d05af32193244e1223a (patch)
tree2a977688180a29d1c1d7cf1e1a5f813f1a6af3d9 /src/vmx
parent5c254bb541f97f7a87458f4b7bf0e31802133047 (diff)
downloadlibvirt-32f7db0989e47319ce585d05af32193244e1223a.tar.gz
vmx: Support super wide SCSI bus
Since its 6.7 release, vSphere allows up to 64 units on a SCSI bus [1]. The release version translates to virtualHW_version 13 and thus if we are dealing with sufficiently new version we can enable the feature. 1: https://configmax.vmware.com/guest?vmwareproduct=vSphere&release=vSphere%206.7&categories=1-0 Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1738392 Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
Diffstat (limited to 'src/vmx')
-rw-r--r--src/vmx/vmx.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
index 46006b47d1..d3540acd84 100644
--- a/src/vmx/vmx.c
+++ b/src/vmx/vmx.c
@@ -1476,6 +1476,8 @@ virVMXParseConfig(virVMXContext *ctx,
"4 or higher but found %lld"),
virtualHW_version);
goto cleanup;
+ } else if (virtualHW_version >= 13) {
+ def->scsiBusMaxUnit = SCSI_SUPER_WIDE_BUS_MAX_CONT_UNIT;
}
/* vmx:uuid.bios -> def:uuid */
@@ -1729,7 +1731,7 @@ virVMXParseConfig(virVMXContext *ctx,
if (! present)
continue;
- for (unit = 0; unit < 16; ++unit) {
+ for (unit = 0; unit < def->scsiBusMaxUnit; unit++) {
g_autoptr(virDomainDiskDef) disk = NULL;
if (unit == 7) {
@@ -2164,7 +2166,8 @@ virVMXParseDisk(virVMXContext *ctx, virDomainXMLOption *xmlopt, virConf *conf,
* VIR_DOMAIN_DISK_DEVICE_LUN}
* busType = VIR_DOMAIN_DISK_BUS_SCSI
* controllerOrBus = [0..3] -> controller
- * unit = [0..6,8..15]
+ * unit = [0..6,8..15] for virtualHW_version < 13
+ * unit = [0..6,8..64] for virtualHW_version >= 13
*
* device = {VIR_DOMAIN_DISK_DEVICE_DISK,
* VIR_DOMAIN_DISK_DEVICE_CDROM,
@@ -2230,10 +2233,10 @@ virVMXParseDisk(virVMXContext *ctx, virDomainXMLOption *xmlopt, virConf *conf,
goto cleanup;
}
- if (unit < 0 || unit > 15 || unit == 7) {
+ if (unit < 0 || unit > vmdef->scsiBusMaxUnit || unit == 7) {
virReportError(VIR_ERR_INTERNAL_ERROR,
- _("SCSI unit index %d out of [0..6,8..15] range"),
- unit);
+ _("SCSI unit index %d out of [0..6,8..%u] range"),
+ unit, vmdef->scsiBusMaxUnit);
goto cleanup;
}