From 68a81f77d03651e143f9f8b7e552b7d115ecbfea Mon Sep 17 00:00:00 2001 From: Dmitry Guryanov Date: Wed, 23 Apr 2014 18:35:02 +0400 Subject: [PATCH] parallels: don't add domain to the list twice There is a problem with function parallelsDomainDefineXML. If we are defining a new domain, then we need to do 2 things: aclually create a VM in PCS and add new domain to the cached list of domains _parallelsConn.domains. This is done in the function parallelsLoadDomains. So call to virDomainObjListAdd will return a error, because a domain with the same name and id will already be in the list. Signed-off-by: Dmitry Guryanov --- src/parallels/parallels_driver.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/src/parallels/parallels_driver.c b/src/parallels/parallels_driver.c index 1c58b456fb..4ab3e1c3ac 100644 --- a/src/parallels/parallels_driver.c +++ b/src/parallels/parallels_driver.c @@ -2303,7 +2303,7 @@ parallelsDomainDefineXML(virConnectPtr conn, const char *xml) parallelsConnPtr privconn = conn->privateData; virDomainPtr ret = NULL; virDomainDefPtr def; - virDomainObjPtr dom = NULL, olddom = NULL; + virDomainObjPtr olddom = NULL; parallelsDriverLock(privconn); if ((def = virDomainDefParseString(xml, privconn->caps, privconn->xmlopt, @@ -2345,24 +2345,12 @@ parallelsDomainDefineXML(virConnectPtr conn, const char *xml) } virObjectUnlock(olddom); - if (!(dom = virDomainObjListAdd(privconn->domains, def, - privconn->xmlopt, - 0, NULL))) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Can't allocate domobj")); - goto cleanup; - } - - def = NULL; - - ret = virGetDomain(conn, dom->def->name, dom->def->uuid); + ret = virGetDomain(conn, def->name, def->uuid); if (ret) - ret->id = dom->def->id; + ret->id = def->id; cleanup: virDomainDefFree(def); - if (dom) - virObjectUnlock(dom); parallelsDriverUnlock(privconn); return ret; } -- GitLab