[libvirt] [PATCH 01/23] Change function signature for creating new lock manager instances

Daniel P. Berrange berrange at redhat.com
Thu Aug 9 15:20:06 UTC 2012


From: "Daniel P. Berrange" <berrange at redhat.com>

To allow a virLockManagerPtr to be created directly from a
driver table struct, replace the virLockManagerPluginPtr parameter
with a virLockDriverPtr parameter.

* src/locking/domain_lock.c, src/locking/lock_manager.c,
  src/locking/lock_manager.h: Replace plugin param with
  a driver in virLockManagerNew

Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
---
 src/locking/domain_lock.c  |  2 +-
 src/locking/lock_manager.c | 31 +++++++++++++++++++------------
 src/locking/lock_manager.h |  3 ++-
 3 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/src/locking/domain_lock.c b/src/locking/domain_lock.c
index 55f5640..ba49f9c 100644
--- a/src/locking/domain_lock.c
+++ b/src/locking/domain_lock.c
@@ -124,7 +124,7 @@ static virLockManagerPtr virDomainLockManagerNew(virLockManagerPluginPtr plugin,
 
     memcpy(params[0].value.uuid, dom->def->uuid, VIR_UUID_BUFLEN);
 
-    if (!(lock = virLockManagerNew(plugin,
+    if (!(lock = virLockManagerNew(virLockManagerPluginGetDriver(plugin),
                                    VIR_LOCK_MANAGER_OBJECT_TYPE_DOMAIN,
                                    ARRAY_CARDINALITY(params),
                                    params,
diff --git a/src/locking/lock_manager.c b/src/locking/lock_manager.c
index 18e739e..1d9c1bf 100644
--- a/src/locking/lock_manager.c
+++ b/src/locking/lock_manager.c
@@ -39,11 +39,11 @@
 
 #define VIR_FROM_THIS VIR_FROM_LOCKING
 
-#define CHECK_PLUGIN(field, errret)                                  \
-    if (!plugin->driver->field) {                                    \
-        virReportError(VIR_ERR_INTERNAL_ERROR,                         \
-                       _("Missing '%s' field in lock manager driver"), \
-                       #field);                                        \
+#define CHECK_DRIVER(field, errret)                                  \
+    if (!driver->field) {                                            \
+        virReportError(VIR_ERR_INTERNAL_ERROR,                       \
+                     _("Missing '%s' field in lock manager driver"), \
+                     #field);                                        \
         return errret;                                               \
     }
 
@@ -265,9 +265,16 @@ bool virLockManagerPluginUsesState(virLockManagerPluginPtr plugin)
 }
 
 
+virLockDriverPtr virLockManagerPluginGetDriver(virLockManagerPluginPtr plugin)
+{
+    VIR_DEBUG("plugin=%p", plugin);
+
+    return plugin->driver;
+}
+
 /**
  * virLockManagerNew:
- * @plugin: the plugin implementation to use
+ * @driver: the lock manager implementation to use
  * @type: the type of process to be supervised
  * @flags: optional flags, currently unused
  *
@@ -276,27 +283,27 @@ bool virLockManagerPluginUsesState(virLockManagerPluginPtr plugin)
  *
  * Returns a new lock manager context
  */
-virLockManagerPtr virLockManagerNew(virLockManagerPluginPtr plugin,
+virLockManagerPtr virLockManagerNew(virLockDriverPtr driver,
                                     unsigned int type,
                                     size_t nparams,
                                     virLockManagerParamPtr params,
                                     unsigned int flags)
 {
     virLockManagerPtr lock;
-    VIR_DEBUG("plugin=%p type=%u nparams=%zu params=%p flags=%x",
-              plugin, type, nparams, params, flags);
+    VIR_DEBUG("driver=%p type=%u nparams=%zu params=%p flags=%x",
+              driver, type, nparams, params, flags);
     virLockManagerLogParams(nparams, params);
 
-    CHECK_PLUGIN(drvNew, NULL);
+    CHECK_DRIVER(drvNew, NULL);
 
     if (VIR_ALLOC(lock) < 0) {
         virReportOOMError();
         return NULL;
     }
 
-    lock->driver = plugin->driver;
+    lock->driver = driver;
 
-    if (plugin->driver->drvNew(lock, type, nparams, params, flags) < 0) {
+    if (driver->drvNew(lock, type, nparams, params, flags) < 0) {
         VIR_FREE(lock);
         return NULL;
     }
diff --git a/src/locking/lock_manager.h b/src/locking/lock_manager.h
index b548d45..25c7f7f 100644
--- a/src/locking/lock_manager.h
+++ b/src/locking/lock_manager.h
@@ -37,8 +37,9 @@ void virLockManagerPluginUnref(virLockManagerPluginPtr plugin);
 const char *virLockManagerPluginGetName(virLockManagerPluginPtr plugin);
 bool virLockManagerPluginUsesState(virLockManagerPluginPtr plugin);
 
+virLockDriverPtr virLockManagerPluginGetDriver(virLockManagerPluginPtr plugin);
 
-virLockManagerPtr virLockManagerNew(virLockManagerPluginPtr plugin,
+virLockManagerPtr virLockManagerNew(virLockDriverPtr driver,
                                     unsigned int type,
                                     size_t nparams,
                                     virLockManagerParamPtr params,
-- 
1.7.11.2




More information about the libvir-list mailing list