static virDomainDefPtr
qemuDomainDefFromXML(virQEMUDriverPtr driver,
+ virQEMUCapsPtr qemuCaps,
const char *xml)
{
virCapsPtr caps;
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
return NULL;
- def = virDomainDefParseString(xml, caps, driver->xmlopt, NULL,
+ def = virDomainDefParseString(xml, caps, driver->xmlopt, qemuCaps,
VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE);
virDomainDefPtr
qemuDomainDefCopy(virQEMUDriverPtr driver,
+ virQEMUCapsPtr qemuCaps,
virDomainDefPtr src,
unsigned int flags)
{
if (!(xml = qemuDomainDefFormatXML(driver, src, flags)))
return NULL;
- ret = qemuDomainDefFromXML(driver, xml);
+ ret = qemuDomainDefFromXML(driver, qemuCaps, xml);
VIR_FREE(xml);
return ret;
bool
qemuDomainDefCheckABIStability(virQEMUDriverPtr driver,
+ virQEMUCapsPtr qemuCaps,
virDomainDefPtr src,
virDomainDefPtr dst)
{
virDomainDefPtr migratableDefDst = NULL;
bool ret = false;
- if (!(migratableDefSrc = qemuDomainDefCopy(driver, src, COPY_FLAGS)) ||
- !(migratableDefDst = qemuDomainDefCopy(driver, dst, COPY_FLAGS)))
+ if (!(migratableDefSrc = qemuDomainDefCopy(driver, qemuCaps, src, COPY_FLAGS)) ||
+ !(migratableDefDst = qemuDomainDefCopy(driver, qemuCaps, dst, COPY_FLAGS)))
goto cleanup;
ret = qemuDomainMigratableDefCheckABIStability(driver,
virDomainObjPtr vm,
virDomainDefPtr dst)
{
+ qemuDomainObjPrivatePtr priv = vm->privateData;
virDomainDefPtr migratableSrc = NULL;
virDomainDefPtr migratableDst = NULL;
char *xml = NULL;
bool ret = false;
if (!(xml = qemuDomainFormatXML(driver, vm, COPY_FLAGS)) ||
- !(migratableSrc = qemuDomainDefFromXML(driver, xml)) ||
- !(migratableDst = qemuDomainDefCopy(driver, dst, COPY_FLAGS)))
+ !(migratableSrc = qemuDomainDefFromXML(driver, priv->qemuCaps, xml)) ||
+ !(migratableDst = qemuDomainDefCopy(driver, priv->qemuCaps, dst, COPY_FLAGS)))
goto cleanup;
ret = qemuDomainMigratableDefCheckABIStability(driver,
VIR_DOMAIN_DEF_PARSE_INACTIVE)))
goto cleanup;
- if (!(newdef_migr = qemuDomainDefCopy(driver,
+ if (!(newdef_migr = qemuDomainDefCopy(driver, NULL,
newdef,
QEMU_DOMAIN_FORMAT_LIVE_FLAGS |
VIR_DOMAIN_XML_MIGRATABLE)))
switch ((virDomainSnapshotState) snapdef->state) {
case VIR_DOMAIN_SNAPSHOT_RUNNING:
case VIR_DOMAIN_SNAPSHOT_PAUSED:
-
+ priv = vm->privateData;
start_flags |= VIR_QEMU_PROCESS_START_PAUSED;
/* Transitions 2, 3, 5, 6, 8, 9 */
if (!(config->cpu = virCPUDefCopy(cookie->cpu)))
goto endjob;
- compatible = qemuDomainDefCheckABIStability(driver, vm->def,
+ compatible = qemuDomainDefCheckABIStability(driver,
+ priv->qemuCaps,
+ vm->def,
config);
} else {
compatible = qemuDomainCheckABIStability(driver, vm, config);
}
}
- priv = vm->privateData;
if (virDomainObjGetState(vm, NULL) == VIR_DOMAIN_RUNNING) {
/* Transitions 5, 6 */
if (qemuProcessStopCPUs(driver, vm,
if (!newdef)
goto cleanup;
- if (!qemuDomainDefCheckABIStability(driver, *def, newdef)) {
+ if (!qemuDomainDefCheckABIStability(driver, NULL, *def, newdef)) {
virDomainDefFree(newdef);
goto cleanup;
}
goto error;
} else {
virDomainDefPtr def = vm->newDef ? vm->newDef : vm->def;
- if (!(persistDef = qemuDomainDefCopy(driver, def,
+ if (!(persistDef = qemuDomainDefCopy(driver, priv->qemuCaps, def,
VIR_DOMAIN_XML_SECURE |
VIR_DOMAIN_XML_MIGRATABLE)))
goto error;