[libvirt PATCH 6/9] admin: use VIR_LOCK_GUARD in client code

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

 



Using VIR_LOCK_GUARD enables the 'done' goto label to be
eliminated.

Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx>
---
 src/admin/admin_remote.c | 72 ++++++++++++----------------------------
 1 file changed, 22 insertions(+), 50 deletions(-)

diff --git a/src/admin/admin_remote.c b/src/admin/admin_remote.c
index f99b93eef6..5322f087ec 100644
--- a/src/admin/admin_remote.c
+++ b/src/admin/admin_remote.c
@@ -133,8 +133,7 @@ remoteAdminClientCloseFunc(virNetClient *client G_GNUC_UNUSED,
                            void *opaque)
 {
     virAdmConnectCloseCallbackData *cbdata = opaque;
-
-    virObjectLock(cbdata);
+    VIR_LOCK_GUARD lock = virObjectLockGuard(cbdata);
 
     if (cbdata->callback) {
         VIR_DEBUG("Triggering connection close callback %p reason=%d, opaque=%p",
@@ -142,17 +141,14 @@ remoteAdminClientCloseFunc(virNetClient *client G_GNUC_UNUSED,
         cbdata->callback(cbdata->conn, reason, cbdata->opaque);
         virAdmConnectCloseCallbackDataReset(cbdata);
     }
-    virObjectUnlock(cbdata);
 }
 
 static int
 remoteAdminConnectOpen(virAdmConnectPtr conn, unsigned int flags)
 {
-    int rv = -1;
     remoteAdminPriv *priv = conn->privateData;
     admin_connect_open_args args;
-
-    virObjectLock(priv);
+    VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
 
     args.flags = flags & ~VIR_CONNECT_NO_ALIASES;
 
@@ -169,40 +165,28 @@ remoteAdminConnectOpen(virAdmConnectPtr conn, unsigned int flags)
 
     if (call(conn, 0, ADMIN_PROC_CONNECT_OPEN,
              (xdrproc_t)xdr_admin_connect_open_args, (char *)&args,
-             (xdrproc_t)xdr_void, (char *)NULL) == -1) {
-        goto done;
-    }
+             (xdrproc_t)xdr_void, (char *)NULL) == -1)
+        return -1;
 
-    rv = 0;
-
- done:
-    virObjectUnlock(priv);
-    return rv;
+    return 0;
 }
 
 static int
 remoteAdminConnectClose(virAdmConnectPtr conn)
 {
-    int rv = -1;
     remoteAdminPriv *priv = conn->privateData;
-
-    virObjectLock(priv);
+    VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
 
     if (call(conn, 0, ADMIN_PROC_CONNECT_CLOSE,
              (xdrproc_t)xdr_void, (char *)NULL,
-             (xdrproc_t)xdr_void, (char *)NULL) == -1) {
-        goto done;
-    }
+             (xdrproc_t)xdr_void, (char *)NULL) == -1)
+        return -1;
 
     virNetClientSetCloseCallback(priv->client, NULL, conn->closeCallback,
                                  virObjectUnref);
     virNetClientClose(priv->client);
 
-    rv = 0;
-
- done:
-    virObjectUnlock(priv);
-    return rv;
+    return 0;
 }
 
 static void
@@ -249,17 +233,17 @@ remoteAdminServerGetThreadPoolParameters(virAdmServerPtr srv,
     remoteAdminPriv *priv = srv->conn->privateData;
     admin_server_get_threadpool_parameters_args args;
     admin_server_get_threadpool_parameters_ret ret;
+    VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
 
     args.flags = flags;
     make_nonnull_server(&args.srv, srv);
 
     memset(&ret, 0, sizeof(ret));
-    virObjectLock(priv);
 
     if (call(srv->conn, 0, ADMIN_PROC_SERVER_GET_THREADPOOL_PARAMETERS,
              (xdrproc_t)xdr_admin_server_get_threadpool_parameters_args, (char *) &args,
              (xdrproc_t)xdr_admin_server_get_threadpool_parameters_ret, (char *) &ret) == -1)
-        goto cleanup;
+        return -1;
 
     if (virTypedParamsDeserialize((struct _virTypedParameterRemote *) ret.params.params_val,
                                   ret.params.params_len,
@@ -272,7 +256,6 @@ remoteAdminServerGetThreadPoolParameters(virAdmServerPtr srv,
 
  cleanup:
     xdr_free((xdrproc_t)xdr_admin_server_get_threadpool_parameters_ret, (char *) &ret);
-    virObjectUnlock(priv);
     return rv;
 }
 
@@ -285,12 +268,11 @@ remoteAdminServerSetThreadPoolParameters(virAdmServerPtr srv,
     int rv = -1;
     remoteAdminPriv *priv = srv->conn->privateData;
     admin_server_set_threadpool_parameters_args args;
+    VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
 
     args.flags = flags;
     make_nonnull_server(&args.srv, srv);
 
-    virObjectLock(priv);
-
     if (virTypedParamsSerialize(params, nparams,
                                 ADMIN_SERVER_THREADPOOL_PARAMETERS_MAX,
                                 (struct _virTypedParameterRemote **) &args.params.params_val,
@@ -308,7 +290,6 @@ remoteAdminServerSetThreadPoolParameters(virAdmServerPtr srv,
  cleanup:
     virTypedParamsRemoteFree((struct _virTypedParameterRemote *) args.params.params_val,
                              args.params.params_len);
-    virObjectUnlock(priv);
     return rv;
 }
 
@@ -322,17 +303,17 @@ remoteAdminClientGetInfo(virAdmClientPtr client,
     remoteAdminPriv *priv = client->srv->conn->privateData;
     admin_client_get_info_args args;
     admin_client_get_info_ret ret;
+    VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
 
     args.flags = flags;
     make_nonnull_client(&args.clnt, client);
 
     memset(&ret, 0, sizeof(ret));
-    virObjectLock(priv);
 
     if (call(client->srv->conn, 0, ADMIN_PROC_CLIENT_GET_INFO,
              (xdrproc_t)xdr_admin_client_get_info_args, (char *) &args,
              (xdrproc_t)xdr_admin_client_get_info_ret, (char *) &ret) == -1)
-        goto cleanup;
+        return -1;
 
     if (virTypedParamsDeserialize((struct _virTypedParameterRemote *) ret.params.params_val,
                                   ret.params.params_len,
@@ -345,7 +326,6 @@ remoteAdminClientGetInfo(virAdmClientPtr client,
 
  cleanup:
     xdr_free((xdrproc_t)xdr_admin_client_get_info_ret, (char *) &ret);
-    virObjectUnlock(priv);
     return rv;
 }
 
@@ -359,18 +339,19 @@ remoteAdminServerGetClientLimits(virAdmServerPtr srv,
     admin_server_get_client_limits_args args;
     admin_server_get_client_limits_ret ret;
     remoteAdminPriv *priv = srv->conn->privateData;
+    VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
+
     args.flags = flags;
     make_nonnull_server(&args.srv, srv);
 
     memset(&ret, 0, sizeof(ret));
-    virObjectLock(priv);
 
     if (call(srv->conn, 0, ADMIN_PROC_SERVER_GET_CLIENT_LIMITS,
              (xdrproc_t) xdr_admin_server_get_client_limits_args,
              (char *) &args,
              (xdrproc_t) xdr_admin_server_get_client_limits_ret,
              (char *) &ret) == -1)
-        goto cleanup;
+        return -1;
 
     if (virTypedParamsDeserialize((struct _virTypedParameterRemote *) ret.params.params_val,
                                   ret.params.params_len,
@@ -384,7 +365,6 @@ remoteAdminServerGetClientLimits(virAdmServerPtr srv,
  cleanup:
     xdr_free((xdrproc_t) xdr_admin_server_get_client_limits_ret,
              (char *) &ret);
-    virObjectUnlock(priv);
     return rv;
 }
 
@@ -397,12 +377,11 @@ remoteAdminServerSetClientLimits(virAdmServerPtr srv,
     int rv = -1;
     admin_server_set_client_limits_args args;
     remoteAdminPriv *priv = srv->conn->privateData;
+    VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
 
     args.flags = flags;
     make_nonnull_server(&args.srv, srv);
 
-    virObjectLock(priv);
-
     if (virTypedParamsSerialize(params, nparams,
                                 ADMIN_SERVER_CLIENT_LIMITS_MAX,
                                 (struct _virTypedParameterRemote **) &args.params.params_val,
@@ -420,7 +399,6 @@ remoteAdminServerSetClientLimits(virAdmServerPtr srv,
  cleanup:
     virTypedParamsRemoteFree((struct _virTypedParameterRemote *) args.params.params_val,
                              args.params.params_len);
-    virObjectUnlock(priv);
     return rv;
 }
 
@@ -433,11 +411,11 @@ remoteAdminConnectGetLoggingOutputs(virAdmConnectPtr conn,
     remoteAdminPriv *priv = conn->privateData;
     admin_connect_get_logging_outputs_args args;
     admin_connect_get_logging_outputs_ret ret;
+    VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
 
     args.flags = flags;
 
     memset(&ret, 0, sizeof(ret));
-    virObjectLock(priv);
 
     if (call(conn,
              0,
@@ -446,16 +424,13 @@ remoteAdminConnectGetLoggingOutputs(virAdmConnectPtr conn,
              (char *) &args,
              (xdrproc_t) xdr_admin_connect_get_logging_outputs_ret,
              (char *) &ret) == -1)
-        goto done;
+        return -1;
 
     if (outputs)
         *outputs = g_steal_pointer(&ret.outputs);
 
     rv = ret.noutputs;
     xdr_free((xdrproc_t) xdr_admin_connect_get_logging_outputs_ret, (char *) &ret);
-
- done:
-    virObjectUnlock(priv);
     return rv;
 }
 
@@ -468,11 +443,11 @@ remoteAdminConnectGetLoggingFilters(virAdmConnectPtr conn,
     remoteAdminPriv *priv = conn->privateData;
     admin_connect_get_logging_filters_args args;
     admin_connect_get_logging_filters_ret ret;
+    VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
 
     args.flags = flags;
 
     memset(&ret, 0, sizeof(ret));
-    virObjectLock(priv);
 
     if (call(conn,
              0,
@@ -481,15 +456,12 @@ remoteAdminConnectGetLoggingFilters(virAdmConnectPtr conn,
              (char *) &args,
              (xdrproc_t) xdr_admin_connect_get_logging_filters_ret,
              (char *) &ret) == -1)
-        goto done;
+        return -1;
 
     if (filters)
         *filters = ret.filters ? *ret.filters : NULL;
 
     rv = ret.nfilters;
     VIR_FREE(ret.filters);
-
- done:
-    virObjectUnlock(priv);
     return rv;
 }
-- 
2.38.1




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux