From: John Ferlan Date: Tue, 30 Jan 2018 21:09:30 +0000 (-0500) Subject: conf: Allow configuration of implicit controller model X-Git-Tag: v4.1.0-rc1~239 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d1b59c62144edee2953dfda5a58dfbc1c04d9393;p=thirdparty%2Flibvirt.git conf: Allow configuration of implicit controller model When an implicit controller is added, the model is defined as -1 (IOW: undefined). So, if an implicit SCSI controller was added, can set the model to the default value if the underlying hypervisor supports it. --- diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index b396679521..8efe834894 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -4924,6 +4924,8 @@ virDomainDefPostParseCommon(virDomainDefPtr def, struct virDomainDefPostParseDeviceIteratorData *data, virHashTablePtr bootHash) { + size_t i; + /* verify init path for container based domains */ if (def->os.type == VIR_DOMAIN_OSTYPE_EXE && !def->os.init) { virReportError(VIR_ERR_XML_ERROR, "%s", @@ -4991,6 +4993,21 @@ virDomainDefPostParseCommon(virDomainDefPtr def, return -1; } + /* Implicit SCSI controllers without a defined model might have + * been added in AddImplicitDevices, after we've done the per-device + * post-parse. */ + for (i = 0; i < def->ncontrollers; i++) { + if (def->controllers[i]->model == -1 && + def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI) { + virDomainDeviceDef device = { + .type = VIR_DOMAIN_DEVICE_CONTROLLER, + .data.controller = def->controllers[i], + }; + if (virDomainDefPostParseDeviceIterator(def, &device, NULL, data) < 0) + return -1; + } + } + /* clean up possibly duplicated metadata entries */ virXMLNodeSanitizeNamespaces(def->metadata); diff --git a/tests/qemuargv2xmldata/nomachine-ppc64.xml b/tests/qemuargv2xmldata/nomachine-ppc64.xml index fa41070cb4..439f9e9ac6 100644 --- a/tests/qemuargv2xmldata/nomachine-ppc64.xml +++ b/tests/qemuargv2xmldata/nomachine-ppc64.xml @@ -33,7 +33,7 @@ - +
diff --git a/tests/qemuargv2xmldata/pseries-disk.xml b/tests/qemuargv2xmldata/pseries-disk.xml index 601d0f7f62..1f15a950e3 100644 --- a/tests/qemuargv2xmldata/pseries-disk.xml +++ b/tests/qemuargv2xmldata/pseries-disk.xml @@ -34,7 +34,7 @@ - +
diff --git a/tests/qemuxml2xmloutdata/disk-scsi-device-auto.xml b/tests/qemuxml2xmloutdata/disk-scsi-device-auto.xml index dde3745900..a0db32b56f 100644 --- a/tests/qemuxml2xmloutdata/disk-scsi-device-auto.xml +++ b/tests/qemuxml2xmloutdata/disk-scsi-device-auto.xml @@ -31,7 +31,7 @@
- +