virQEMUDriverPtr driver = dom->conn->privateData;
virQEMUDriverConfigPtr cfg = NULL;
virDomainObjPtr vm = NULL;
+ virDomainObjPtr tmp_dom = NULL;
virObjectEventPtr event_new = NULL;
virObjectEventPtr event_old = NULL;
int ret = -1;
goto endjob;
}
+ /*
+ * This is a rather racy check, but still better than reporting
+ * internal error. And since new_name != name here, there's no
+ * deadlock imminent.
+ */
+ tmp_dom = virDomainObjListFindByName(driver->domains, new_name);
+ if (tmp_dom) {
+ virObjectUnlock(tmp_dom);
+ virObjectUnref(tmp_dom);
+ virReportError(VIR_ERR_OPERATION_INVALID,
+ _("domain with name '%s' already exists"),
+ new_name);
+ goto endjob;
+ }
+
if (VIR_STRDUP(new_dom_name, new_name) < 0)
goto endjob;