提交 4e215bcb 编写于 作者: P Peter Krempa

qemu: save image: Split out new definition check/update

Split out the call to the update method only to places where it is
actually used rather than having a mega-method that does all the stuff.
上级 eb9595b7
...@@ -5503,16 +5503,6 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver, ...@@ -5503,16 +5503,6 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver,
VIR_DOMAIN_XML_INACTIVE))) VIR_DOMAIN_XML_INACTIVE)))
goto error; goto error;
if (xmlin) {
virDomainDefPtr tmp;
if (!(tmp = qemuDomainSaveImageUpdateDef(driver, def, xmlin)))
goto error;
virDomainDefFree(def);
def = tmp;
}
if (xmlout) if (xmlout)
*xmlout = xml; *xmlout = xml;
else else
...@@ -5655,6 +5645,7 @@ qemuDomainRestoreFlags(virConnectPtr conn, ...@@ -5655,6 +5645,7 @@ qemuDomainRestoreFlags(virConnectPtr conn,
{ {
virQEMUDriverPtr driver = conn->privateData; virQEMUDriverPtr driver = conn->privateData;
virDomainDefPtr def = NULL; virDomainDefPtr def = NULL;
virDomainDefPtr newdef = NULL;
virDomainObjPtr vm = NULL; virDomainObjPtr vm = NULL;
int fd = -1; int fd = -1;
int ret = -1; int ret = -1;
...@@ -5681,6 +5672,14 @@ qemuDomainRestoreFlags(virConnectPtr conn, ...@@ -5681,6 +5672,14 @@ qemuDomainRestoreFlags(virConnectPtr conn,
if (virDomainRestoreFlagsEnsureACL(conn, def) < 0) if (virDomainRestoreFlagsEnsureACL(conn, def) < 0)
goto cleanup; goto cleanup;
if (dxml) {
if (!(newdef = qemuDomainSaveImageUpdateDef(driver, def, dxml)))
goto cleanup;
virDomainDefFree(def);
def = newdef;
}
if (!(vm = virDomainObjListAdd(driver->domains, def, if (!(vm = virDomainObjListAdd(driver->domains, def,
driver->xmlopt, driver->xmlopt,
VIR_DOMAIN_OBJ_LIST_ADD_LIVE | VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
...@@ -5757,6 +5756,7 @@ qemuDomainSaveImageDefineXML(virConnectPtr conn, const char *path, ...@@ -5757,6 +5756,7 @@ qemuDomainSaveImageDefineXML(virConnectPtr conn, const char *path,
virQEMUDriverPtr driver = conn->privateData; virQEMUDriverPtr driver = conn->privateData;
int ret = -1; int ret = -1;
virDomainDefPtr def = NULL; virDomainDefPtr def = NULL;
virDomainDefPtr newdef = NULL;
int fd = -1; int fd = -1;
virQEMUSaveHeader header; virQEMUSaveHeader header;
char *xml = NULL; char *xml = NULL;
...@@ -5784,7 +5784,10 @@ qemuDomainSaveImageDefineXML(virConnectPtr conn, const char *path, ...@@ -5784,7 +5784,10 @@ qemuDomainSaveImageDefineXML(virConnectPtr conn, const char *path,
if (virDomainSaveImageDefineXMLEnsureACL(conn, def) < 0) if (virDomainSaveImageDefineXMLEnsureACL(conn, def) < 0)
goto cleanup; goto cleanup;
xml = qemuDomainDefFormatXML(driver, def, if (!(newdef = qemuDomainSaveImageUpdateDef(driver, def, dxml)))
goto cleanup;
xml = qemuDomainDefFormatXML(driver, newdef,
VIR_DOMAIN_XML_INACTIVE | VIR_DOMAIN_XML_INACTIVE |
VIR_DOMAIN_XML_SECURE | VIR_DOMAIN_XML_SECURE |
VIR_DOMAIN_XML_MIGRATABLE); VIR_DOMAIN_XML_MIGRATABLE);
...@@ -5815,6 +5818,7 @@ qemuDomainSaveImageDefineXML(virConnectPtr conn, const char *path, ...@@ -5815,6 +5818,7 @@ qemuDomainSaveImageDefineXML(virConnectPtr conn, const char *path,
cleanup: cleanup:
virDomainDefFree(def); virDomainDefFree(def);
virDomainDefFree(newdef);
VIR_FORCE_CLOSE(fd); VIR_FORCE_CLOSE(fd);
VIR_FREE(xml); VIR_FREE(xml);
return ret; return ret;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册