mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-01 09:47:20 +03:00
conf: Run devicePostParse() again for the first serial device
The devicePostParse() callback is invoked for all devices so that drivers have a chance to set their own specific values; however, virDomainDefAddImplicitDevices() runs *after* the devicePostParse() callbacks have been invoked and can add new devices, in which case the driver wouldn't have a chance to customize them. Work around the issue by invoking the devicePostParse() callback after virDomainDefAddImplicitDevices(), only for the first serial devices, which might have been added by it. The same was already happening for the first video device for the very same reason. This will become important later on, when we will change virDomainDefAddConsoleCompat() not to set a targetType for automatically added serial devices. Signed-off-by: Andrea Bolognani <abologna@redhat.com> Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
parent
f4b50cc1b9
commit
2628afc143
@ -4946,6 +4946,18 @@ virDomainDefPostParseCommon(virDomainDefPtr def,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (def->nserials != 0) {
|
||||
virDomainDeviceDef device = {
|
||||
.type = VIR_DOMAIN_DEVICE_CHR,
|
||||
.data.chr = def->serials[0],
|
||||
};
|
||||
|
||||
/* serials[0] might have been added in AddImplicitDevices, after we've
|
||||
* done the per-device post-parse */
|
||||
if (virDomainDefPostParseDeviceIterator(def, &device, NULL, data) < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* clean up possibly duplicated metadata entries */
|
||||
virXMLNodeSanitizeNamespaces(def->metadata);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user