From d1b59c62144edee2953dfda5a58dfbc1c04d9393 Mon Sep 17 00:00:00 2001 From: John Ferlan Date: Tue, 30 Jan 2018 16:09:30 -0500 Subject: [PATCH] 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. --- src/conf/domain_conf.c | 17 +++++++++++++++++ tests/qemuargv2xmldata/nomachine-ppc64.xml | 2 +- tests/qemuargv2xmldata/pseries-disk.xml | 2 +- .../disk-scsi-device-auto.xml | 2 +- 4 files changed, 20 insertions(+), 3 deletions(-) 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 @@
- +
-- 2.47.2