There is no need to acquire the driver-wide lock in libxlDomainDefineXML. When switching to jobs in the libxl driver, most driver-wide locks were removed. The locking here was preserved since I mistakenly thought virDomainObjListAdd needed protection. This is not the case, so remove the unnecessary locking. Signed-off-by: Jim Fehlig <jfehlig@xxxxxxxx> --- src/libxl/libxl_driver.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 2f2c590..d4ecd62 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -2381,25 +2381,22 @@ libxlDomainDefineXML(virConnectPtr conn, const char *xml) virObjectEventPtr event = NULL; virDomainDefPtr oldDef = NULL; - /* Lock the driver until the virDomainObj is created and locked */ - libxlDriverLock(driver); if (!(def = virDomainDefParseString(xml, cfg->caps, driver->xmlopt, 1 << VIR_DOMAIN_VIRT_XEN, VIR_DOMAIN_XML_INACTIVE))) - goto cleanup_unlock; + goto cleanup; if (virDomainDefineXMLEnsureACL(conn, def) < 0) - goto cleanup_unlock; + goto cleanup; if (!(vm = virDomainObjListAdd(driver->domains, def, driver->xmlopt, 0, &oldDef))) - goto cleanup_unlock; + goto cleanup; def = NULL; vm->persistent = 1; - libxlDriverUnlock(driver); if (virDomainSaveConfig(cfg->configDir, vm->newDef ? vm->newDef : vm->def) < 0) { @@ -2426,10 +2423,6 @@ libxlDomainDefineXML(virConnectPtr conn, const char *xml) libxlDomainEventQueue(driver, event); virObjectUnref(cfg); return dom; - - cleanup_unlock: - libxlDriverUnlock(driver); - goto cleanup; } static int -- 1.8.4.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list