提交 70b36a7b 编写于 作者: M Michal Privoznik

qemuDomainDefPostParse: Fetch qemuCaps from domain object

We can't rely on def->emulator path. It may be provided by user
as we give them opportunity to provide their own XML for
migration. Therefore the path may point to just whatever binary
(or even to a non-existent file). Moreover, this path is meant
for destination, but the capabilities lookup is done on source.
What we can do is to assume same capabilities for post parse
callbacks as the running domain has. They will be used just to
add some default models/controllers/devices/... anyway.
Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
上级 cf198684
...@@ -2327,11 +2327,11 @@ qemuDomainDefPostParse(virDomainDefPtr def, ...@@ -2327,11 +2327,11 @@ qemuDomainDefPostParse(virDomainDefPtr def,
virCapsPtr caps, virCapsPtr caps,
unsigned int parseFlags, unsigned int parseFlags,
void *opaque, void *opaque,
void *parseOpaque ATTRIBUTE_UNUSED) void *parseOpaque)
{ {
virQEMUDriverPtr driver = opaque; virQEMUDriverPtr driver = opaque;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
virQEMUCapsPtr qemuCaps = NULL; virQEMUCapsPtr qemuCaps = parseOpaque;
int ret = -1; int ret = -1;
if (def->os.bootloader || def->os.bootloaderArgs) { if (def->os.bootloader || def->os.bootloaderArgs) {
...@@ -2360,10 +2360,14 @@ qemuDomainDefPostParse(virDomainDefPtr def, ...@@ -2360,10 +2360,14 @@ qemuDomainDefPostParse(virDomainDefPtr def,
!(def->emulator = virDomainDefGetDefaultEmulator(def, caps))) !(def->emulator = virDomainDefGetDefaultEmulator(def, caps)))
goto cleanup; goto cleanup;
if (!(qemuCaps = virQEMUCapsCacheLookup(caps, if (qemuCaps) {
driver->qemuCapsCache, virObjectRef(qemuCaps);
def->emulator))) } else {
goto cleanup; if (!(qemuCaps = virQEMUCapsCacheLookup(caps,
driver->qemuCapsCache,
def->emulator)))
goto cleanup;
}
if (qemuDomainDefAddDefaultDevices(def, qemuCaps) < 0) if (qemuDomainDefAddDefaultDevices(def, qemuCaps) < 0)
goto cleanup; goto cleanup;
......
...@@ -3242,7 +3242,7 @@ qemuMigrationBeginPhase(virQEMUDriverPtr driver, ...@@ -3242,7 +3242,7 @@ qemuMigrationBeginPhase(virQEMUDriverPtr driver,
} }
if (xmlin) { if (xmlin) {
if (!(def = virDomainDefParseString(xmlin, caps, driver->xmlopt, NULL, if (!(def = virDomainDefParseString(xmlin, caps, driver->xmlopt, priv->qemuCaps,
VIR_DOMAIN_DEF_PARSE_INACTIVE | VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE))) VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE)))
goto cleanup; goto cleanup;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册