mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-22 22:13:18 +00:00
locking: Replace virMutex with GMutex
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Han Han <hhan@redhat.com>
This commit is contained in:
parent
925e34c71a
commit
809a2877ec
@ -59,7 +59,7 @@ VIR_LOG_INIT("locking.lock_daemon");
|
|||||||
#define VIR_LOCK_DAEMON_NUM_LOCKSPACES 3
|
#define VIR_LOCK_DAEMON_NUM_LOCKSPACES 3
|
||||||
|
|
||||||
struct _virLockDaemon {
|
struct _virLockDaemon {
|
||||||
virMutex lock;
|
GMutex lock;
|
||||||
virNetDaemonPtr dmn;
|
virNetDaemonPtr dmn;
|
||||||
virHashTablePtr lockspaces;
|
virHashTablePtr lockspaces;
|
||||||
virLockSpacePtr defaultLockspace;
|
virLockSpacePtr defaultLockspace;
|
||||||
@ -89,7 +89,7 @@ virLockDaemonFree(virLockDaemonPtr lockd)
|
|||||||
if (!lockd)
|
if (!lockd)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
virMutexDestroy(&lockd->lock);
|
g_mutex_clear(&lockd->lock);
|
||||||
virObjectUnref(lockd->dmn);
|
virObjectUnref(lockd->dmn);
|
||||||
virHashFree(lockd->lockspaces);
|
virHashFree(lockd->lockspaces);
|
||||||
virLockSpaceFree(lockd->defaultLockspace);
|
virLockSpaceFree(lockd->defaultLockspace);
|
||||||
@ -100,13 +100,13 @@ virLockDaemonFree(virLockDaemonPtr lockd)
|
|||||||
static inline void
|
static inline void
|
||||||
virLockDaemonLock(virLockDaemonPtr lockd)
|
virLockDaemonLock(virLockDaemonPtr lockd)
|
||||||
{
|
{
|
||||||
virMutexLock(&lockd->lock);
|
g_mutex_lock(&lockd->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
virLockDaemonUnlock(virLockDaemonPtr lockd)
|
virLockDaemonUnlock(virLockDaemonPtr lockd)
|
||||||
{
|
{
|
||||||
virMutexUnlock(&lockd->lock);
|
g_mutex_unlock(&lockd->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void virLockDaemonLockSpaceDataFree(void *data)
|
static void virLockDaemonLockSpaceDataFree(void *data)
|
||||||
@ -123,12 +123,7 @@ virLockDaemonNew(virLockDaemonConfigPtr config, bool privileged)
|
|||||||
if (VIR_ALLOC(lockd) < 0)
|
if (VIR_ALLOC(lockd) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (virMutexInit(&lockd->lock) < 0) {
|
g_mutex_init(&lockd->lock);
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
|
||||||
_("Unable to initialize mutex"));
|
|
||||||
VIR_FREE(lockd);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(lockd->dmn = virNetDaemonNew()))
|
if (!(lockd->dmn = virNetDaemonNew()))
|
||||||
goto error;
|
goto error;
|
||||||
@ -220,12 +215,7 @@ virLockDaemonNewPostExecRestart(virJSONValuePtr object, bool privileged)
|
|||||||
if (VIR_ALLOC(lockd) < 0)
|
if (VIR_ALLOC(lockd) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (virMutexInit(&lockd->lock) < 0) {
|
g_mutex_init(&lockd->lock);
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
|
||||||
_("Unable to initialize mutex"));
|
|
||||||
VIR_FREE(lockd);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(lockd->lockspaces = virHashCreate(VIR_LOCK_DAEMON_NUM_LOCKSPACES,
|
if (!(lockd->lockspaces = virHashCreate(VIR_LOCK_DAEMON_NUM_LOCKSPACES,
|
||||||
virLockDaemonLockSpaceDataFree)))
|
virLockDaemonLockSpaceDataFree)))
|
||||||
@ -450,7 +440,7 @@ virLockDaemonClientFree(void *opaque)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virMutexDestroy(&priv->lock);
|
g_mutex_clear(&priv->lock);
|
||||||
VIR_FREE(priv->ownerName);
|
VIR_FREE(priv->ownerName);
|
||||||
VIR_FREE(priv);
|
VIR_FREE(priv);
|
||||||
}
|
}
|
||||||
@ -469,11 +459,7 @@ virLockDaemonClientNew(virNetServerClientPtr client,
|
|||||||
if (VIR_ALLOC(priv) < 0)
|
if (VIR_ALLOC(priv) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (virMutexInit(&priv->lock) < 0) {
|
g_mutex_init(&priv->lock);
|
||||||
VIR_FREE(priv);
|
|
||||||
virReportSystemError(errno, "%s", _("unable to init mutex"));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (virNetServerClientGetUNIXIdentity(client,
|
if (virNetServerClientGetUNIXIdentity(client,
|
||||||
&clientuid,
|
&clientuid,
|
||||||
@ -508,7 +494,7 @@ virLockDaemonClientNew(virNetServerClientPtr client,
|
|||||||
return priv;
|
return priv;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
virMutexDestroy(&priv->lock);
|
g_mutex_clear(&priv->lock);
|
||||||
VIR_FREE(priv);
|
VIR_FREE(priv);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "virlockspace.h"
|
#include "virlockspace.h"
|
||||||
#include "virthread.h"
|
|
||||||
|
|
||||||
typedef struct _virLockDaemon virLockDaemon;
|
typedef struct _virLockDaemon virLockDaemon;
|
||||||
typedef virLockDaemon *virLockDaemonPtr;
|
typedef virLockDaemon *virLockDaemonPtr;
|
||||||
@ -30,7 +29,7 @@ typedef struct _virLockDaemonClient virLockDaemonClient;
|
|||||||
typedef virLockDaemonClient *virLockDaemonClientPtr;
|
typedef virLockDaemonClient *virLockDaemonClientPtr;
|
||||||
|
|
||||||
struct _virLockDaemonClient {
|
struct _virLockDaemonClient {
|
||||||
virMutex lock;
|
GMutex lock;
|
||||||
bool restricted;
|
bool restricted;
|
||||||
|
|
||||||
pid_t ownerPid;
|
pid_t ownerPid;
|
||||||
|
@ -49,7 +49,7 @@ virLockSpaceProtocolDispatchAcquireResource(virNetServerPtr server G_GNUC_UNUSED
|
|||||||
virLockSpacePtr lockspace;
|
virLockSpacePtr lockspace;
|
||||||
unsigned int newFlags;
|
unsigned int newFlags;
|
||||||
|
|
||||||
virMutexLock(&priv->lock);
|
g_mutex_lock(&priv->lock);
|
||||||
|
|
||||||
virCheckFlagsGoto(VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_SHARED |
|
virCheckFlagsGoto(VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_SHARED |
|
||||||
VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_AUTOCREATE, cleanup);
|
VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_AUTOCREATE, cleanup);
|
||||||
@ -90,7 +90,7 @@ virLockSpaceProtocolDispatchAcquireResource(virNetServerPtr server G_GNUC_UNUSED
|
|||||||
cleanup:
|
cleanup:
|
||||||
if (rv < 0)
|
if (rv < 0)
|
||||||
virNetMessageSaveError(rerr);
|
virNetMessageSaveError(rerr);
|
||||||
virMutexUnlock(&priv->lock);
|
g_mutex_unlock(&priv->lock);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ virLockSpaceProtocolDispatchCreateResource(virNetServerPtr server G_GNUC_UNUSED,
|
|||||||
virNetServerClientGetPrivateData(client);
|
virNetServerClientGetPrivateData(client);
|
||||||
virLockSpacePtr lockspace;
|
virLockSpacePtr lockspace;
|
||||||
|
|
||||||
virMutexLock(&priv->lock);
|
g_mutex_lock(&priv->lock);
|
||||||
|
|
||||||
virCheckFlagsGoto(0, cleanup);
|
virCheckFlagsGoto(0, cleanup);
|
||||||
|
|
||||||
@ -139,7 +139,7 @@ virLockSpaceProtocolDispatchCreateResource(virNetServerPtr server G_GNUC_UNUSED,
|
|||||||
cleanup:
|
cleanup:
|
||||||
if (rv < 0)
|
if (rv < 0)
|
||||||
virNetMessageSaveError(rerr);
|
virNetMessageSaveError(rerr);
|
||||||
virMutexUnlock(&priv->lock);
|
g_mutex_unlock(&priv->lock);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,7 +157,7 @@ virLockSpaceProtocolDispatchDeleteResource(virNetServerPtr server G_GNUC_UNUSED,
|
|||||||
virNetServerClientGetPrivateData(client);
|
virNetServerClientGetPrivateData(client);
|
||||||
virLockSpacePtr lockspace;
|
virLockSpacePtr lockspace;
|
||||||
|
|
||||||
virMutexLock(&priv->lock);
|
g_mutex_lock(&priv->lock);
|
||||||
|
|
||||||
virCheckFlagsGoto(0, cleanup);
|
virCheckFlagsGoto(0, cleanup);
|
||||||
|
|
||||||
@ -188,7 +188,7 @@ virLockSpaceProtocolDispatchDeleteResource(virNetServerPtr server G_GNUC_UNUSED,
|
|||||||
cleanup:
|
cleanup:
|
||||||
if (rv < 0)
|
if (rv < 0)
|
||||||
virNetMessageSaveError(rerr);
|
virNetMessageSaveError(rerr);
|
||||||
virMutexUnlock(&priv->lock);
|
g_mutex_unlock(&priv->lock);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,7 +206,7 @@ virLockSpaceProtocolDispatchNew(virNetServerPtr server G_GNUC_UNUSED,
|
|||||||
virNetServerClientGetPrivateData(client);
|
virNetServerClientGetPrivateData(client);
|
||||||
virLockSpacePtr lockspace;
|
virLockSpacePtr lockspace;
|
||||||
|
|
||||||
virMutexLock(&priv->lock);
|
g_mutex_lock(&priv->lock);
|
||||||
|
|
||||||
virCheckFlagsGoto(0, cleanup);
|
virCheckFlagsGoto(0, cleanup);
|
||||||
|
|
||||||
@ -244,7 +244,7 @@ virLockSpaceProtocolDispatchNew(virNetServerPtr server G_GNUC_UNUSED,
|
|||||||
cleanup:
|
cleanup:
|
||||||
if (rv < 0)
|
if (rv < 0)
|
||||||
virNetMessageSaveError(rerr);
|
virNetMessageSaveError(rerr);
|
||||||
virMutexUnlock(&priv->lock);
|
g_mutex_unlock(&priv->lock);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,7 +261,7 @@ virLockSpaceProtocolDispatchRegister(virNetServerPtr server G_GNUC_UNUSED,
|
|||||||
virLockDaemonClientPtr priv =
|
virLockDaemonClientPtr priv =
|
||||||
virNetServerClientGetPrivateData(client);
|
virNetServerClientGetPrivateData(client);
|
||||||
|
|
||||||
virMutexLock(&priv->lock);
|
g_mutex_lock(&priv->lock);
|
||||||
|
|
||||||
virCheckFlagsGoto(0, cleanup);
|
virCheckFlagsGoto(0, cleanup);
|
||||||
|
|
||||||
@ -289,7 +289,7 @@ virLockSpaceProtocolDispatchRegister(virNetServerPtr server G_GNUC_UNUSED,
|
|||||||
cleanup:
|
cleanup:
|
||||||
if (rv < 0)
|
if (rv < 0)
|
||||||
virNetMessageSaveError(rerr);
|
virNetMessageSaveError(rerr);
|
||||||
virMutexUnlock(&priv->lock);
|
g_mutex_unlock(&priv->lock);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -307,7 +307,7 @@ virLockSpaceProtocolDispatchReleaseResource(virNetServerPtr server G_GNUC_UNUSED
|
|||||||
virNetServerClientGetPrivateData(client);
|
virNetServerClientGetPrivateData(client);
|
||||||
virLockSpacePtr lockspace;
|
virLockSpacePtr lockspace;
|
||||||
|
|
||||||
virMutexLock(&priv->lock);
|
g_mutex_lock(&priv->lock);
|
||||||
|
|
||||||
virCheckFlagsGoto(0, cleanup);
|
virCheckFlagsGoto(0, cleanup);
|
||||||
|
|
||||||
@ -340,7 +340,7 @@ virLockSpaceProtocolDispatchReleaseResource(virNetServerPtr server G_GNUC_UNUSED
|
|||||||
cleanup:
|
cleanup:
|
||||||
if (rv < 0)
|
if (rv < 0)
|
||||||
virNetMessageSaveError(rerr);
|
virNetMessageSaveError(rerr);
|
||||||
virMutexUnlock(&priv->lock);
|
g_mutex_unlock(&priv->lock);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -357,7 +357,7 @@ virLockSpaceProtocolDispatchRestrict(virNetServerPtr server G_GNUC_UNUSED,
|
|||||||
virLockDaemonClientPtr priv =
|
virLockDaemonClientPtr priv =
|
||||||
virNetServerClientGetPrivateData(client);
|
virNetServerClientGetPrivateData(client);
|
||||||
|
|
||||||
virMutexLock(&priv->lock);
|
g_mutex_lock(&priv->lock);
|
||||||
|
|
||||||
virCheckFlagsGoto(0, cleanup);
|
virCheckFlagsGoto(0, cleanup);
|
||||||
|
|
||||||
@ -379,7 +379,7 @@ virLockSpaceProtocolDispatchRestrict(virNetServerPtr server G_GNUC_UNUSED,
|
|||||||
cleanup:
|
cleanup:
|
||||||
if (rv < 0)
|
if (rv < 0)
|
||||||
virNetMessageSaveError(rerr);
|
virNetMessageSaveError(rerr);
|
||||||
virMutexUnlock(&priv->lock);
|
g_mutex_unlock(&priv->lock);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -396,7 +396,7 @@ virLockSpaceProtocolDispatchCreateLockSpace(virNetServerPtr server G_GNUC_UNUSED
|
|||||||
virNetServerClientGetPrivateData(client);
|
virNetServerClientGetPrivateData(client);
|
||||||
virLockSpacePtr lockspace;
|
virLockSpacePtr lockspace;
|
||||||
|
|
||||||
virMutexLock(&priv->lock);
|
g_mutex_lock(&priv->lock);
|
||||||
|
|
||||||
if (priv->restricted) {
|
if (priv->restricted) {
|
||||||
virReportError(VIR_ERR_OPERATION_DENIED, "%s",
|
virReportError(VIR_ERR_OPERATION_DENIED, "%s",
|
||||||
@ -424,6 +424,6 @@ virLockSpaceProtocolDispatchCreateLockSpace(virNetServerPtr server G_GNUC_UNUSED
|
|||||||
cleanup:
|
cleanup:
|
||||||
if (rv < 0)
|
if (rv < 0)
|
||||||
virNetMessageSaveError(rerr);
|
virNetMessageSaveError(rerr);
|
||||||
virMutexUnlock(&priv->lock);
|
g_mutex_unlock(&priv->lock);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user