[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH] libxl: Drop driver lock in libxlDomainDefineXML



On 18.09.2014 23:17, Jim Fehlig wrote:
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 suse com>
---
  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


ACK

Michal


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]