mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
virDomainObjListAdd: Transfer definition ownership
Upon successful return from virDomainObjListAdd() the virDomainObj is the owner of secret definition. To make this ownership transfer even more visible, lets pass the definition as a double pointer and use g_steal_pointer(). Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
This commit is contained in:
parent
900fb1a315
commit
6bcd263011
@ -533,11 +533,10 @@ bhyveDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flag
|
|||||||
if (bhyveDomainAssignAddresses(def, NULL) < 0)
|
if (bhyveDomainAssignAddresses(def, NULL) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (!(vm = virDomainObjListAdd(privconn->domains, def,
|
if (!(vm = virDomainObjListAdd(privconn->domains, &def,
|
||||||
privconn->xmlopt,
|
privconn->xmlopt,
|
||||||
0, &oldDef)))
|
0, &oldDef)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
def = NULL;
|
|
||||||
vm->persistent = 1;
|
vm->persistent = 1;
|
||||||
|
|
||||||
if (virDomainDefSave(vm->newDef ? vm->newDef : vm->def,
|
if (virDomainDefSave(vm->newDef ? vm->newDef : vm->def,
|
||||||
@ -915,12 +914,11 @@ bhyveDomainCreateXML(virConnectPtr conn,
|
|||||||
if (bhyveDomainAssignAddresses(def, NULL) < 0)
|
if (bhyveDomainAssignAddresses(def, NULL) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (!(vm = virDomainObjListAdd(privconn->domains, def,
|
if (!(vm = virDomainObjListAdd(privconn->domains, &def,
|
||||||
privconn->xmlopt,
|
privconn->xmlopt,
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
|
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE, NULL)))
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE, NULL)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
def = NULL;
|
|
||||||
|
|
||||||
if (virBhyveProcessStart(conn, vm,
|
if (virBhyveProcessStart(conn, vm,
|
||||||
VIR_DOMAIN_RUNNING_BOOTED,
|
VIR_DOMAIN_RUNNING_BOOTED,
|
||||||
|
@ -237,15 +237,13 @@ chDomainCreateXML(virConnectPtr conn,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (!(vm = virDomainObjListAdd(driver->domains,
|
if (!(vm = virDomainObjListAdd(driver->domains,
|
||||||
vmdef,
|
&vmdef,
|
||||||
driver->xmlopt,
|
driver->xmlopt,
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
|
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
||||||
NULL)))
|
NULL)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
vmdef = NULL;
|
|
||||||
|
|
||||||
if (virCHDomainObjBeginJob(vm, CH_JOB_MODIFY) < 0)
|
if (virCHDomainObjBeginJob(vm, CH_JOB_MODIFY) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@ -323,12 +321,11 @@ chDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flags)
|
|||||||
if (virDomainDefineXMLFlagsEnsureACL(conn, vmdef) < 0)
|
if (virDomainDefineXMLFlagsEnsureACL(conn, vmdef) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (!(vm = virDomainObjListAdd(driver->domains, vmdef,
|
if (!(vm = virDomainObjListAdd(driver->domains, &vmdef,
|
||||||
driver->xmlopt,
|
driver->xmlopt,
|
||||||
0, NULL)))
|
0, NULL)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
vmdef = NULL;
|
|
||||||
vm->persistent = 1;
|
vm->persistent = 1;
|
||||||
|
|
||||||
dom = virGetDomain(conn, vm->def->name, vm->def->uuid, vm->def->id);
|
dom = virGetDomain(conn, vm->def->name, vm->def->uuid, vm->def->id);
|
||||||
|
@ -3865,7 +3865,7 @@ virDomainDefNew(virDomainXMLOption *xmlopt)
|
|||||||
|
|
||||||
|
|
||||||
void virDomainObjAssignDef(virDomainObj *domain,
|
void virDomainObjAssignDef(virDomainObj *domain,
|
||||||
virDomainDef *def,
|
virDomainDef **def,
|
||||||
bool live,
|
bool live,
|
||||||
virDomainDef **oldDef)
|
virDomainDef **oldDef)
|
||||||
{
|
{
|
||||||
@ -3876,7 +3876,7 @@ void virDomainObjAssignDef(virDomainObj *domain,
|
|||||||
*oldDef = domain->newDef;
|
*oldDef = domain->newDef;
|
||||||
else
|
else
|
||||||
virDomainDefFree(domain->newDef);
|
virDomainDefFree(domain->newDef);
|
||||||
domain->newDef = def;
|
domain->newDef = g_steal_pointer(def);
|
||||||
} else {
|
} else {
|
||||||
if (live) {
|
if (live) {
|
||||||
/* save current configuration to be restored on domain shutdown */
|
/* save current configuration to be restored on domain shutdown */
|
||||||
@ -3884,13 +3884,13 @@ void virDomainObjAssignDef(virDomainObj *domain,
|
|||||||
domain->newDef = domain->def;
|
domain->newDef = domain->def;
|
||||||
else
|
else
|
||||||
virDomainDefFree(domain->def);
|
virDomainDefFree(domain->def);
|
||||||
domain->def = def;
|
domain->def = g_steal_pointer(def);
|
||||||
} else {
|
} else {
|
||||||
if (oldDef)
|
if (oldDef)
|
||||||
*oldDef = domain->def;
|
*oldDef = domain->def;
|
||||||
else
|
else
|
||||||
virDomainDefFree(domain->def);
|
virDomainDefFree(domain->def);
|
||||||
domain->def = def;
|
domain->def = g_steal_pointer(def);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3388,7 +3388,7 @@ virDomainNetDefNew(virDomainXMLOption *xmlopt);
|
|||||||
virDomainDef *virDomainDefNew(virDomainXMLOption *xmlopt);
|
virDomainDef *virDomainDefNew(virDomainXMLOption *xmlopt);
|
||||||
|
|
||||||
void virDomainObjAssignDef(virDomainObj *domain,
|
void virDomainObjAssignDef(virDomainObj *domain,
|
||||||
virDomainDef *def,
|
virDomainDef **def,
|
||||||
bool live,
|
bool live,
|
||||||
virDomainDef **oldDef);
|
virDomainDef **oldDef);
|
||||||
int virDomainObjSetDefTransient(virDomainXMLOption *xmlopt,
|
int virDomainObjSetDefTransient(virDomainXMLOption *xmlopt,
|
||||||
|
@ -257,13 +257,17 @@ virDomainObjListAddObjLocked(virDomainObjList *doms,
|
|||||||
* the @def being added is assumed to represent a
|
* the @def being added is assumed to represent a
|
||||||
* live config, not a future inactive config
|
* live config, not a future inactive config
|
||||||
*
|
*
|
||||||
|
* Upon successful return the virDomain object is the owner of
|
||||||
|
* @def and callers should use @vm->def if they need to access
|
||||||
|
* the definition as @def is set to NULL.
|
||||||
|
*
|
||||||
* The returned @vm from this function will be locked and ref
|
* The returned @vm from this function will be locked and ref
|
||||||
* counted. The caller is expected to use virDomainObjEndAPI
|
* counted. The caller is expected to use virDomainObjEndAPI
|
||||||
* when it completes usage.
|
* when it completes usage.
|
||||||
*/
|
*/
|
||||||
static virDomainObj *
|
static virDomainObj *
|
||||||
virDomainObjListAddLocked(virDomainObjList *doms,
|
virDomainObjListAddLocked(virDomainObjList *doms,
|
||||||
virDomainDef *def,
|
virDomainDef **def,
|
||||||
virDomainXMLOption *xmlopt,
|
virDomainXMLOption *xmlopt,
|
||||||
unsigned int flags,
|
unsigned int flags,
|
||||||
virDomainDef **oldDef)
|
virDomainDef **oldDef)
|
||||||
@ -275,13 +279,13 @@ virDomainObjListAddLocked(virDomainObjList *doms,
|
|||||||
*oldDef = NULL;
|
*oldDef = NULL;
|
||||||
|
|
||||||
/* See if a VM with matching UUID already exists */
|
/* See if a VM with matching UUID already exists */
|
||||||
if ((vm = virDomainObjListFindByUUIDLocked(doms, def->uuid))) {
|
if ((vm = virDomainObjListFindByUUIDLocked(doms, (*def)->uuid))) {
|
||||||
if (vm->removing) {
|
if (vm->removing) {
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED,
|
virReportError(VIR_ERR_OPERATION_FAILED,
|
||||||
_("domain '%s' is already being removed"),
|
_("domain '%s' is already being removed"),
|
||||||
vm->def->name);
|
vm->def->name);
|
||||||
goto error;
|
goto error;
|
||||||
} else if (STRNEQ(vm->def->name, def->name)) {
|
} else if (STRNEQ(vm->def->name, (*def)->name)) {
|
||||||
/* UUID matches, but if names don't match, refuse it */
|
/* UUID matches, but if names don't match, refuse it */
|
||||||
virUUIDFormat(vm->def->uuid, uuidstr);
|
virUUIDFormat(vm->def->uuid, uuidstr);
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED,
|
virReportError(VIR_ERR_OPERATION_FAILED,
|
||||||
@ -312,20 +316,20 @@ virDomainObjListAddLocked(virDomainObjList *doms,
|
|||||||
oldDef);
|
oldDef);
|
||||||
} else {
|
} else {
|
||||||
/* UUID does not match, but if a name matches, refuse it */
|
/* UUID does not match, but if a name matches, refuse it */
|
||||||
if ((vm = virDomainObjListFindByNameLocked(doms, def->name))) {
|
if ((vm = virDomainObjListFindByNameLocked(doms, (*def)->name))) {
|
||||||
virUUIDFormat(vm->def->uuid, uuidstr);
|
virUUIDFormat(vm->def->uuid, uuidstr);
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED,
|
virReportError(VIR_ERR_OPERATION_FAILED,
|
||||||
_("domain '%s' already exists with uuid %s"),
|
_("domain '%s' already exists with uuid %s"),
|
||||||
def->name, uuidstr);
|
(*def)->name, uuidstr);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(vm = virDomainObjNew(xmlopt)))
|
if (!(vm = virDomainObjNew(xmlopt)))
|
||||||
goto error;
|
goto error;
|
||||||
vm->def = def;
|
vm->def = g_steal_pointer(def);
|
||||||
|
|
||||||
if (virDomainObjListAddObjLocked(doms, vm) < 0) {
|
if (virDomainObjListAddObjLocked(doms, vm) < 0) {
|
||||||
vm->def = NULL;
|
*def = g_steal_pointer(&vm->def);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -340,7 +344,7 @@ virDomainObjListAddLocked(virDomainObjList *doms,
|
|||||||
|
|
||||||
virDomainObj *
|
virDomainObj *
|
||||||
virDomainObjListAdd(virDomainObjList *doms,
|
virDomainObjListAdd(virDomainObjList *doms,
|
||||||
virDomainDef *def,
|
virDomainDef **def,
|
||||||
virDomainXMLOption *xmlopt,
|
virDomainXMLOption *xmlopt,
|
||||||
unsigned int flags,
|
unsigned int flags,
|
||||||
virDomainDef **oldDef)
|
virDomainDef **oldDef)
|
||||||
@ -498,7 +502,7 @@ virDomainObjListLoadConfig(virDomainObjList *doms,
|
|||||||
if ((autostart = virFileLinkPointsTo(autostartLink, configFile)) < 0)
|
if ((autostart = virFileLinkPointsTo(autostartLink, configFile)) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (!(dom = virDomainObjListAddLocked(doms, def, xmlopt, 0, &oldDef)))
|
if (!(dom = virDomainObjListAddLocked(doms, &def, xmlopt, 0, &oldDef)))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
dom->autostart = autostart;
|
dom->autostart = autostart;
|
||||||
|
@ -40,7 +40,7 @@ enum {
|
|||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE = (1 << 1),
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE = (1 << 1),
|
||||||
};
|
};
|
||||||
virDomainObj *virDomainObjListAdd(virDomainObjList *doms,
|
virDomainObj *virDomainObjListAdd(virDomainObjList *doms,
|
||||||
virDomainDef *def,
|
virDomainDef **def,
|
||||||
virDomainXMLOption *xmlopt,
|
virDomainXMLOption *xmlopt,
|
||||||
unsigned int flags,
|
unsigned int flags,
|
||||||
virDomainDef **oldDef);
|
virDomainDef **oldDef);
|
||||||
|
@ -1482,8 +1482,7 @@ libxlDomainStartNew(libxlDriverPrivate *driver,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
virDomainObjAssignDef(vm, def, true, NULL);
|
virDomainObjAssignDef(vm, &def, true, NULL);
|
||||||
def = NULL;
|
|
||||||
|
|
||||||
if (unlink(managed_save_path) < 0)
|
if (unlink(managed_save_path) < 0)
|
||||||
VIR_WARN("Failed to remove the managed state %s",
|
VIR_WARN("Failed to remove the managed state %s",
|
||||||
|
@ -595,13 +595,12 @@ libxlAddDom0(libxlDriverPrivate *driver)
|
|||||||
if (virUUIDParse("00000000-0000-0000-0000-000000000000", def->uuid) < 0)
|
if (virUUIDParse("00000000-0000-0000-0000-000000000000", def->uuid) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (!(vm = virDomainObjListAdd(driver->domains, def,
|
if (!(vm = virDomainObjListAdd(driver->domains, &def,
|
||||||
driver->xmlopt,
|
driver->xmlopt,
|
||||||
0,
|
0,
|
||||||
NULL)))
|
NULL)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
def = NULL;
|
|
||||||
vm->persistent = 1;
|
vm->persistent = 1;
|
||||||
virDomainObjSetState(vm, VIR_DOMAIN_RUNNING, VIR_DOMAIN_RUNNING_BOOTED);
|
virDomainObjSetState(vm, VIR_DOMAIN_RUNNING, VIR_DOMAIN_RUNNING_BOOTED);
|
||||||
}
|
}
|
||||||
@ -1028,13 +1027,12 @@ libxlDomainCreateXML(virConnectPtr conn, const char *xml,
|
|||||||
if (virDomainCreateXMLEnsureACL(conn, def) < 0)
|
if (virDomainCreateXMLEnsureACL(conn, def) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
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 |
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
||||||
NULL)))
|
NULL)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
def = NULL;
|
|
||||||
|
|
||||||
if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) {
|
if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) {
|
||||||
if (!vm->persistent)
|
if (!vm->persistent)
|
||||||
@ -1948,13 +1946,12 @@ libxlDomainRestoreFlags(virConnectPtr conn, const char *from,
|
|||||||
if (virDomainRestoreFlagsEnsureACL(conn, def) < 0)
|
if (virDomainRestoreFlagsEnsureACL(conn, def) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
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 |
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
||||||
NULL)))
|
NULL)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
def = NULL;
|
|
||||||
|
|
||||||
if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) {
|
if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) {
|
||||||
if (!vm->persistent)
|
if (!vm->persistent)
|
||||||
@ -2826,12 +2823,11 @@ libxlDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flag
|
|||||||
if (virDomainDefineXMLFlagsEnsureACL(conn, def) < 0)
|
if (virDomainDefineXMLFlagsEnsureACL(conn, def) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (!(vm = virDomainObjListAdd(driver->domains, def,
|
if (!(vm = virDomainObjListAdd(driver->domains, &def,
|
||||||
driver->xmlopt,
|
driver->xmlopt,
|
||||||
0,
|
0,
|
||||||
&oldDef)))
|
&oldDef)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
def = NULL;
|
|
||||||
|
|
||||||
vm->persistent = 1;
|
vm->persistent = 1;
|
||||||
|
|
||||||
@ -4143,10 +4139,8 @@ libxlDomainAttachDeviceFlags(virDomainPtr dom, const char *xml,
|
|||||||
/* Finally, if no error until here, we can save config. */
|
/* Finally, if no error until here, we can save config. */
|
||||||
if (flags & VIR_DOMAIN_DEVICE_MODIFY_CONFIG) {
|
if (flags & VIR_DOMAIN_DEVICE_MODIFY_CONFIG) {
|
||||||
ret = virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir);
|
ret = virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir);
|
||||||
if (!ret) {
|
if (!ret)
|
||||||
virDomainObjAssignDef(vm, vmdef, false, NULL);
|
virDomainObjAssignDef(vm, &vmdef, false, NULL);
|
||||||
vmdef = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
endjob:
|
endjob:
|
||||||
@ -4234,10 +4228,8 @@ libxlDomainDetachDeviceFlags(virDomainPtr dom, const char *xml,
|
|||||||
/* Finally, if no error until here, we can save config. */
|
/* Finally, if no error until here, we can save config. */
|
||||||
if (flags & VIR_DOMAIN_DEVICE_MODIFY_CONFIG) {
|
if (flags & VIR_DOMAIN_DEVICE_MODIFY_CONFIG) {
|
||||||
ret = virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir);
|
ret = virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir);
|
||||||
if (!ret) {
|
if (!ret)
|
||||||
virDomainObjAssignDef(vm, vmdef, false, NULL);
|
virDomainObjAssignDef(vm, &vmdef, false, NULL);
|
||||||
vmdef = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
endjob:
|
endjob:
|
||||||
@ -4319,10 +4311,8 @@ libxlDomainUpdateDeviceFlags(virDomainPtr dom, const char *xml,
|
|||||||
/* Finally, if no error until here, we can save config. */
|
/* Finally, if no error until here, we can save config. */
|
||||||
if (!ret && (flags & VIR_DOMAIN_DEVICE_MODIFY_CONFIG)) {
|
if (!ret && (flags & VIR_DOMAIN_DEVICE_MODIFY_CONFIG)) {
|
||||||
ret = virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir);
|
ret = virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir);
|
||||||
if (!ret) {
|
if (!ret)
|
||||||
virDomainObjAssignDef(vm, vmdef, false, NULL);
|
virDomainObjAssignDef(vm, &vmdef, false, NULL);
|
||||||
vmdef = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
|
@ -548,13 +548,12 @@ libxlDomainMigrationDstPrepareTunnel3(virConnectPtr dconn,
|
|||||||
&mig, &xmlout, &taint_hook) < 0)
|
&mig, &xmlout, &taint_hook) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
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 |
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
||||||
NULL)))
|
NULL)))
|
||||||
goto error;
|
goto error;
|
||||||
*def = NULL;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unless an error is encountered in this function, the job will
|
* Unless an error is encountered in this function, the job will
|
||||||
@ -658,13 +657,12 @@ libxlDomainMigrationDstPrepare(virConnectPtr dconn,
|
|||||||
&mig, &xmlout, &taint_hook) < 0)
|
&mig, &xmlout, &taint_hook) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
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 |
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
||||||
NULL)))
|
NULL)))
|
||||||
goto error;
|
goto error;
|
||||||
*def = NULL;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unless an error is encountered in this function, the job will
|
* Unless an error is encountered in this function, the job will
|
||||||
|
@ -435,12 +435,11 @@ lxcDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flags)
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(vm = virDomainObjListAdd(driver->domains, def,
|
if (!(vm = virDomainObjListAdd(driver->domains, &def,
|
||||||
driver->xmlopt,
|
driver->xmlopt,
|
||||||
0, &oldDef)))
|
0, &oldDef)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
def = NULL;
|
|
||||||
vm->persistent = 1;
|
vm->persistent = 1;
|
||||||
|
|
||||||
if (virDomainDefSave(vm->newDef ? vm->newDef : vm->def,
|
if (virDomainDefSave(vm->newDef ? vm->newDef : vm->def,
|
||||||
@ -1118,13 +1117,12 @@ lxcDomainCreateXMLWithFiles(virConnectPtr conn,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
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 |
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
||||||
NULL)))
|
NULL)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
def = NULL;
|
|
||||||
|
|
||||||
if (virLXCDomainObjBeginJob(driver, vm, LXC_JOB_MODIFY) < 0) {
|
if (virLXCDomainObjBeginJob(driver, vm, LXC_JOB_MODIFY) < 0) {
|
||||||
if (!vm->persistent)
|
if (!vm->persistent)
|
||||||
@ -1917,8 +1915,7 @@ lxcDomainSetSchedulerParametersFlags(virDomainPtr dom,
|
|||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
goto endjob;
|
goto endjob;
|
||||||
|
|
||||||
virDomainObjAssignDef(vm, persistentDefCopy, false, NULL);
|
virDomainObjAssignDef(vm, &persistentDefCopy, false, NULL);
|
||||||
persistentDefCopy = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
@ -4368,10 +4365,8 @@ static int lxcDomainAttachDeviceFlags(virDomainPtr dom,
|
|||||||
/* Finally, if no error until here, we can save config. */
|
/* Finally, if no error until here, we can save config. */
|
||||||
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
|
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
|
||||||
ret = virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir);
|
ret = virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir);
|
||||||
if (!ret) {
|
if (!ret)
|
||||||
virDomainObjAssignDef(vm, vmdef, false, NULL);
|
virDomainObjAssignDef(vm, &vmdef, false, NULL);
|
||||||
vmdef = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
endjob:
|
endjob:
|
||||||
@ -4444,8 +4439,7 @@ static int lxcDomainUpdateDeviceFlags(virDomainPtr dom,
|
|||||||
if (virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir) < 0)
|
if (virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir) < 0)
|
||||||
goto endjob;
|
goto endjob;
|
||||||
|
|
||||||
virDomainObjAssignDef(vm, vmdef, false, NULL);
|
virDomainObjAssignDef(vm, &vmdef, false, NULL);
|
||||||
vmdef = NULL;
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
endjob:
|
endjob:
|
||||||
@ -4537,10 +4531,8 @@ static int lxcDomainDetachDeviceFlags(virDomainPtr dom,
|
|||||||
/* Finally, if no error until here, we can save config. */
|
/* Finally, if no error until here, we can save config. */
|
||||||
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
|
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
|
||||||
ret = virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir);
|
ret = virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir);
|
||||||
if (!ret) {
|
if (!ret)
|
||||||
virDomainObjAssignDef(vm, vmdef, false, NULL);
|
virDomainObjAssignDef(vm, &vmdef, false, NULL);
|
||||||
vmdef = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
endjob:
|
endjob:
|
||||||
|
@ -527,7 +527,7 @@ int openvzLoadDomains(struct openvz_driver *driver)
|
|||||||
flags |= VIR_DOMAIN_OBJ_LIST_ADD_LIVE;
|
flags |= VIR_DOMAIN_OBJ_LIST_ADD_LIVE;
|
||||||
|
|
||||||
if (!(dom = virDomainObjListAdd(driver->domains,
|
if (!(dom = virDomainObjListAdd(driver->domains,
|
||||||
def,
|
&def,
|
||||||
driver->xmlopt,
|
driver->xmlopt,
|
||||||
flags,
|
flags,
|
||||||
NULL)))
|
NULL)))
|
||||||
@ -547,7 +547,6 @@ int openvzLoadDomains(struct openvz_driver *driver)
|
|||||||
|
|
||||||
virDomainObjEndAPI(&dom);
|
virDomainObjEndAPI(&dom);
|
||||||
dom = NULL;
|
dom = NULL;
|
||||||
def = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virCommandFree(cmd);
|
virCommandFree(cmd);
|
||||||
|
@ -842,11 +842,10 @@ openvzDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int fla
|
|||||||
if (virXMLCheckIllegalChars("name", vmdef->name, "\n") < 0)
|
if (virXMLCheckIllegalChars("name", vmdef->name, "\n") < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (!(vm = virDomainObjListAdd(driver->domains, vmdef,
|
if (!(vm = virDomainObjListAdd(driver->domains, &vmdef,
|
||||||
driver->xmlopt,
|
driver->xmlopt,
|
||||||
0, NULL)))
|
0, NULL)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
vmdef = NULL;
|
|
||||||
vm->persistent = 1;
|
vm->persistent = 1;
|
||||||
|
|
||||||
if (openvzSetInitialConfig(vm->def) < 0) {
|
if (openvzSetInitialConfig(vm->def) < 0) {
|
||||||
@ -930,13 +929,13 @@ openvzDomainCreateXML(virConnectPtr conn, const char *xml,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (!(vm = virDomainObjListAdd(driver->domains,
|
if (!(vm = virDomainObjListAdd(driver->domains,
|
||||||
vmdef,
|
&vmdef,
|
||||||
driver->xmlopt,
|
driver->xmlopt,
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
|
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
||||||
NULL)))
|
NULL)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
vmdef = NULL;
|
|
||||||
/* All OpenVZ domains seem to be persistent - this is a bit of a violation
|
/* All OpenVZ domains seem to be persistent - this is a bit of a violation
|
||||||
* of this libvirt API which is intended for transient domain creation */
|
* of this libvirt API which is intended for transient domain creation */
|
||||||
vm->persistent = 1;
|
vm->persistent = 1;
|
||||||
@ -2094,13 +2093,12 @@ openvzDomainMigratePrepare3Params(virConnectPtr dconn,
|
|||||||
VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE)))
|
VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE)))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
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 |
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
||||||
NULL)))
|
NULL)))
|
||||||
goto error;
|
goto error;
|
||||||
def = NULL;
|
|
||||||
|
|
||||||
if (!uri_in) {
|
if (!uri_in) {
|
||||||
if ((my_hostname = virGetHostname()) == NULL)
|
if ((my_hostname = virGetHostname()) == NULL)
|
||||||
|
@ -1726,13 +1726,12 @@ static virDomainPtr qemuDomainCreateXML(virConnectPtr conn,
|
|||||||
if (virDomainCreateXMLEnsureACL(conn, def) < 0)
|
if (virDomainCreateXMLEnsureACL(conn, def) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
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 |
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
||||||
NULL)))
|
NULL)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
def = NULL;
|
|
||||||
|
|
||||||
if (qemuProcessBeginJob(driver, vm, VIR_DOMAIN_JOB_OPERATION_START,
|
if (qemuProcessBeginJob(driver, vm, VIR_DOMAIN_JOB_OPERATION_START,
|
||||||
flags) < 0) {
|
flags) < 0) {
|
||||||
@ -5944,13 +5943,12 @@ qemuDomainRestoreFlags(virConnectPtr conn,
|
|||||||
def = tmp;
|
def = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
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 |
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
||||||
NULL)))
|
NULL)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
def = NULL;
|
|
||||||
|
|
||||||
if (flags & VIR_DOMAIN_SAVE_RUNNING)
|
if (flags & VIR_DOMAIN_SAVE_RUNNING)
|
||||||
data->header.was_running = 1;
|
data->header.was_running = 1;
|
||||||
@ -6231,8 +6229,7 @@ qemuDomainObjRestore(virConnectPtr conn,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
virDomainObjAssignDef(vm, def, true, NULL);
|
virDomainObjAssignDef(vm, &def, true, NULL);
|
||||||
def = NULL;
|
|
||||||
|
|
||||||
ret = qemuSaveImageStartVM(conn, driver, vm, &fd, data, path,
|
ret = qemuSaveImageStartVM(conn, driver, vm, &fd, data, path,
|
||||||
start_paused, asyncJob);
|
start_paused, asyncJob);
|
||||||
@ -6601,11 +6598,10 @@ qemuDomainDefineXMLFlags(virConnectPtr conn,
|
|||||||
if (virDomainDefineXMLFlagsEnsureACL(conn, def) < 0)
|
if (virDomainDefineXMLFlagsEnsureACL(conn, def) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (!(vm = virDomainObjListAdd(driver->domains, def,
|
if (!(vm = virDomainObjListAdd(driver->domains, &def,
|
||||||
driver->xmlopt,
|
driver->xmlopt,
|
||||||
0, &oldDef)))
|
0, &oldDef)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
def = NULL;
|
|
||||||
|
|
||||||
if (!oldDef && qemuDomainNamePathsCleanup(cfg, vm->def->name, false) < 0)
|
if (!oldDef && qemuDomainNamePathsCleanup(cfg, vm->def->name, false) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -7925,8 +7921,7 @@ qemuDomainAttachDeviceLiveAndConfig(virDomainObj *vm,
|
|||||||
if (virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir) < 0)
|
if (virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
virDomainObjAssignDef(vm, vmdef, false, NULL);
|
virDomainObjAssignDef(vm, &vmdef, false, NULL);
|
||||||
vmdef = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -8062,10 +8057,8 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr dom,
|
|||||||
/* Finally, if no error until here, we can save config. */
|
/* Finally, if no error until here, we can save config. */
|
||||||
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
|
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
|
||||||
ret = virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir);
|
ret = virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir);
|
||||||
if (!ret) {
|
if (!ret)
|
||||||
virDomainObjAssignDef(vm, vmdef, false, NULL);
|
virDomainObjAssignDef(vm, &vmdef, false, NULL);
|
||||||
vmdef = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
endjob:
|
endjob:
|
||||||
@ -8149,8 +8142,7 @@ qemuDomainDetachDeviceLiveAndConfig(virQEMUDriver *driver,
|
|||||||
if (virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir) < 0)
|
if (virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
virDomainObjAssignDef(vm, vmdef, false, NULL);
|
virDomainObjAssignDef(vm, &vmdef, false, NULL);
|
||||||
vmdef = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
@ -8219,8 +8211,7 @@ qemuDomainDetachDeviceAliasLiveAndConfig(virQEMUDriver *driver,
|
|||||||
if (vmdef) {
|
if (vmdef) {
|
||||||
if (virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir) < 0)
|
if (virDomainDefSave(vmdef, driver->xmlopt, cfg->configDir) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
virDomainObjAssignDef(vm, vmdef, false, NULL);
|
virDomainObjAssignDef(vm, &vmdef, false, NULL);
|
||||||
vmdef = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -9607,8 +9598,7 @@ qemuDomainSetSchedulerParametersFlags(virDomainPtr dom,
|
|||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
goto endjob;
|
goto endjob;
|
||||||
|
|
||||||
virDomainObjAssignDef(vm, persistentDefCopy, false, NULL);
|
virDomainObjAssignDef(vm, &persistentDefCopy, false, NULL);
|
||||||
persistentDefCopy = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
@ -2878,13 +2878,12 @@ qemuMigrationDstPrepareAny(virQEMUDriver *driver,
|
|||||||
QEMU_MIGRATION_COOKIE_BLOCK_DIRTY_BITMAPS)))
|
QEMU_MIGRATION_COOKIE_BLOCK_DIRTY_BITMAPS)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
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 |
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
||||||
NULL)))
|
NULL)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
*def = NULL;
|
|
||||||
|
|
||||||
priv = vm->privateData;
|
priv = vm->privateData;
|
||||||
jobPriv = priv->job.privateData;
|
jobPriv = priv->job.privateData;
|
||||||
|
@ -1984,13 +1984,11 @@ qemuSnapshotRevert(virDomainObj *vm,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (inactiveConfig) {
|
if (inactiveConfig) {
|
||||||
virDomainObjAssignDef(vm, inactiveConfig, false, NULL);
|
virDomainObjAssignDef(vm, &inactiveConfig, false, NULL);
|
||||||
inactiveConfig = NULL;
|
|
||||||
defined = true;
|
defined = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
virDomainObjAssignDef(vm, config, true, NULL);
|
virDomainObjAssignDef(vm, &config, true, NULL);
|
||||||
config = NULL;
|
|
||||||
|
|
||||||
/* No cookie means libvirt which saved the domain was too old to
|
/* No cookie means libvirt which saved the domain was too old to
|
||||||
* mess up the CPU definitions.
|
* mess up the CPU definitions.
|
||||||
@ -2065,8 +2063,7 @@ qemuSnapshotRevert(virDomainObj *vm,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (inactiveConfig) {
|
if (inactiveConfig) {
|
||||||
virDomainObjAssignDef(vm, inactiveConfig, false, NULL);
|
virDomainObjAssignDef(vm, &inactiveConfig, false, NULL);
|
||||||
inactiveConfig = NULL;
|
|
||||||
defined = true;
|
defined = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1043,7 +1043,7 @@ testParseDomains(testDriver *privconn,
|
|||||||
|
|
||||||
if (testDomainGenerateIfnames(def) < 0 ||
|
if (testDomainGenerateIfnames(def) < 0 ||
|
||||||
!(obj = virDomainObjListAdd(privconn->domains,
|
!(obj = virDomainObjListAdd(privconn->domains,
|
||||||
def,
|
&def,
|
||||||
privconn->xmlopt,
|
privconn->xmlopt,
|
||||||
0, NULL))) {
|
0, NULL))) {
|
||||||
virDomainDefFree(def);
|
virDomainDefFree(def);
|
||||||
@ -1053,7 +1053,7 @@ testParseDomains(testDriver *privconn,
|
|||||||
if (testParseDomainSnapshots(privconn, obj, file, ctxt) < 0)
|
if (testParseDomainSnapshots(privconn, obj, file, ctxt) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
nsdata = def->namespaceData;
|
nsdata = obj->def->namespaceData;
|
||||||
obj->persistent = !nsdata->transient;
|
obj->persistent = !nsdata->transient;
|
||||||
obj->hasManagedSave = nsdata->hasManagedSave;
|
obj->hasManagedSave = nsdata->hasManagedSave;
|
||||||
|
|
||||||
@ -1768,13 +1768,12 @@ testDomainCreateXML(virConnectPtr conn, const char *xml,
|
|||||||
if (testDomainGenerateIfnames(def) < 0)
|
if (testDomainGenerateIfnames(def) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
if (!(dom = virDomainObjListAdd(privconn->domains,
|
if (!(dom = virDomainObjListAdd(privconn->domains,
|
||||||
def,
|
&def,
|
||||||
privconn->xmlopt,
|
privconn->xmlopt,
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
|
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
||||||
NULL)))
|
NULL)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
def = NULL;
|
|
||||||
|
|
||||||
if (testDomainStartState(privconn, dom, VIR_DOMAIN_RUNNING_BOOTED) < 0) {
|
if (testDomainStartState(privconn, dom, VIR_DOMAIN_RUNNING_BOOTED) < 0) {
|
||||||
if (!dom->persistent)
|
if (!dom->persistent)
|
||||||
@ -2517,13 +2516,12 @@ testDomainRestoreFlags(virConnectPtr conn,
|
|||||||
if (testDomainGenerateIfnames(def) < 0)
|
if (testDomainGenerateIfnames(def) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
if (!(dom = virDomainObjListAdd(privconn->domains,
|
if (!(dom = virDomainObjListAdd(privconn->domains,
|
||||||
def,
|
&def,
|
||||||
privconn->xmlopt,
|
privconn->xmlopt,
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
|
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
||||||
NULL)))
|
NULL)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
def = NULL;
|
|
||||||
|
|
||||||
if (testDomainStartState(privconn, dom, VIR_DOMAIN_RUNNING_RESTORED) < 0) {
|
if (testDomainStartState(privconn, dom, VIR_DOMAIN_RUNNING_RESTORED) < 0) {
|
||||||
if (!dom->persistent)
|
if (!dom->persistent)
|
||||||
@ -4208,12 +4206,11 @@ static virDomainPtr testDomainDefineXMLFlags(virConnectPtr conn,
|
|||||||
if (testDomainGenerateIfnames(def) < 0)
|
if (testDomainGenerateIfnames(def) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
if (!(dom = virDomainObjListAdd(privconn->domains,
|
if (!(dom = virDomainObjListAdd(privconn->domains,
|
||||||
def,
|
&def,
|
||||||
privconn->xmlopt,
|
privconn->xmlopt,
|
||||||
0,
|
0,
|
||||||
&oldDef)))
|
&oldDef)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
def = NULL;
|
|
||||||
dom->persistent = 1;
|
dom->persistent = 1;
|
||||||
|
|
||||||
event = virDomainEventLifecycleNewFromObj(dom,
|
event = virDomainEventLifecycleNewFromObj(dom,
|
||||||
@ -9065,7 +9062,7 @@ testDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
|
|||||||
virObjectEventStateQueue(privconn->eventState, event);
|
virObjectEventStateQueue(privconn->eventState, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
virDomainObjAssignDef(vm, config, false, NULL);
|
virDomainObjAssignDef(vm, &config, false, NULL);
|
||||||
if (testDomainStartState(privconn, vm,
|
if (testDomainStartState(privconn, vm,
|
||||||
VIR_DOMAIN_RUNNING_FROM_SNAPSHOT) < 0)
|
VIR_DOMAIN_RUNNING_FROM_SNAPSHOT) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -9086,7 +9083,7 @@ testDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Transitions 1, 4, 7 */
|
/* Transitions 1, 4, 7 */
|
||||||
virDomainObjAssignDef(vm, config, false, NULL);
|
virDomainObjAssignDef(vm, &config, false, NULL);
|
||||||
|
|
||||||
if (virDomainObjIsActive(vm)) {
|
if (virDomainObjIsActive(vm)) {
|
||||||
/* Transitions 4, 7 */
|
/* Transitions 4, 7 */
|
||||||
|
@ -156,7 +156,7 @@ vmwareLoadDomains(struct vmware_driver *driver)
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(vm = virDomainObjListAdd(driver->domains, vmdef,
|
if (!(vm = virDomainObjListAdd(driver->domains, &vmdef,
|
||||||
driver->xmlopt,
|
driver->xmlopt,
|
||||||
0, NULL)))
|
0, NULL)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -165,7 +165,7 @@ vmwareLoadDomains(struct vmware_driver *driver)
|
|||||||
|
|
||||||
pDomain->vmxPath = g_strdup(vmxPath);
|
pDomain->vmxPath = g_strdup(vmxPath);
|
||||||
|
|
||||||
vmwareDomainConfigDisplay(pDomain, vmdef);
|
vmwareDomainConfigDisplay(pDomain, vm->def);
|
||||||
|
|
||||||
if ((vm->def->id = vmwareExtractPid(vmxPath)) < 0)
|
if ((vm->def->id = vmwareExtractPid(vmxPath)) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -175,8 +175,6 @@ vmwareLoadDomains(struct vmware_driver *driver)
|
|||||||
vm->persistent = 1;
|
vm->persistent = 1;
|
||||||
|
|
||||||
virDomainObjEndAPI(&vm);
|
virDomainObjEndAPI(&vm);
|
||||||
|
|
||||||
vmdef = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
@ -438,7 +438,7 @@ vmwareDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int fla
|
|||||||
|
|
||||||
/* assign def */
|
/* assign def */
|
||||||
if (!(vm = virDomainObjListAdd(driver->domains,
|
if (!(vm = virDomainObjListAdd(driver->domains,
|
||||||
vmdef,
|
&vmdef,
|
||||||
driver->xmlopt,
|
driver->xmlopt,
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
||||||
NULL)))
|
NULL)))
|
||||||
@ -447,9 +447,8 @@ vmwareDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int fla
|
|||||||
pDomain = vm->privateData;
|
pDomain = vm->privateData;
|
||||||
pDomain->vmxPath = g_strdup(vmxPath);
|
pDomain->vmxPath = g_strdup(vmxPath);
|
||||||
|
|
||||||
vmwareDomainConfigDisplay(pDomain, vmdef);
|
vmwareDomainConfigDisplay(pDomain, vm->def);
|
||||||
|
|
||||||
vmdef = NULL;
|
|
||||||
vm->persistent = 1;
|
vm->persistent = 1;
|
||||||
|
|
||||||
dom = virGetDomain(conn, vm->def->name, vm->def->uuid, -1);
|
dom = virGetDomain(conn, vm->def->name, vm->def->uuid, -1);
|
||||||
@ -689,7 +688,7 @@ vmwareDomainCreateXML(virConnectPtr conn, const char *xml,
|
|||||||
|
|
||||||
/* assign def */
|
/* assign def */
|
||||||
if (!(vm = virDomainObjListAdd(driver->domains,
|
if (!(vm = virDomainObjListAdd(driver->domains,
|
||||||
vmdef,
|
&vmdef,
|
||||||
driver->xmlopt,
|
driver->xmlopt,
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
|
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
|
||||||
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
|
||||||
@ -699,8 +698,7 @@ vmwareDomainCreateXML(virConnectPtr conn, const char *xml,
|
|||||||
pDomain = vm->privateData;
|
pDomain = vm->privateData;
|
||||||
pDomain->vmxPath = g_strdup(vmxPath);
|
pDomain->vmxPath = g_strdup(vmxPath);
|
||||||
|
|
||||||
vmwareDomainConfigDisplay(pDomain, vmdef);
|
vmwareDomainConfigDisplay(pDomain, vm->def);
|
||||||
vmdef = NULL;
|
|
||||||
|
|
||||||
if (vmwareStartVM(driver, vm) < 0) {
|
if (vmwareStartVM(driver, vm) < 0) {
|
||||||
if (!vm->persistent)
|
if (!vm->persistent)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user