Review-fixes, changes since last time: - persistent flag is not reset to 0 anymore - dom->id =vm->def->id is moved after domain startup - duplicate of start_flags |= VIR_BHYVE_PROCESS_START_AUTODESTROY removed - flag VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE is used instead of zero - virDomainObjListRemove is called for not persistent domains in case of failure - unnecessary checkActive removed ======== DIFF BETWEEN PATCHv1 and PATCHv2 ================================= diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 1357e07..4ac89c1 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -1139,39 +1133,36 @@ bhyveDomainCreateXML(virConnectPtr conn, if (!(vm = virDomainObjListAdd(privconn->domains, def, privconn->xmlopt, - 0, NULL))) + VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE, NULL))) goto cleanup; def = NULL; - vm->persistent = 0; dom = virGetDomain(conn, vm->def->name, vm->def->uuid); if (!dom) goto cleanup; - dom->id = vm->def->id; - - if (flags & VIR_DOMAIN_START_AUTODESTROY) - start_flags |= VIR_BHYVE_PROCESS_START_AUTODESTROY; - - if (virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is already running")); - goto cleanup; - } - ret = virBhyveProcessStart(dom->conn, privconn, vm, VIR_DOMAIN_RUNNING_BOOTED, start_flags); if (ret) { virObjectUnref(dom); dom = NULL; + + /* If domain is not persistent, remove its data */ + if (!vm->persistent) { + virDomainObjListRemove(privconn->domains, vm); + vm = NULL; + } goto cleanup; } + dom->id = vm->def->id; + cleanup: virObjectUnref(caps); virDomainDefFree(def); - virObjectUnlock(vm); + if (vm) + virObjectUnlock(vm); return dom; } ======== END OF DIFF BETWEEN PATCHv1 and PATCHv2 ========================= Wojciech Macek (1): bhyve: domainCreateXML src/bhyve/bhyve_driver.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) -- 1.9.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list