mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 01:45:17 +00:00
vz_driver: Use automatic mutex management
Signed-off-by: Tim Wiederhake <twiederh@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
c8f5b33631
commit
6be7beb3bd
@ -2018,53 +2018,43 @@ vzConnectRegisterCloseCallback(virConnectPtr conn,
|
|||||||
virFreeCallback freecb)
|
virFreeCallback freecb)
|
||||||
{
|
{
|
||||||
struct _vzConn *privconn = conn->privateData;
|
struct _vzConn *privconn = conn->privateData;
|
||||||
int ret = -1;
|
|
||||||
|
|
||||||
if (virConnectRegisterCloseCallbackEnsureACL(conn) < 0)
|
if (virConnectRegisterCloseCallbackEnsureACL(conn) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
virObjectLock(privconn->driver);
|
VIR_WITH_OBJECT_LOCK_GUARD(privconn->driver) {
|
||||||
|
if (virConnectCloseCallbackDataGetCallback(privconn->closeCallback) != NULL) {
|
||||||
|
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||||
|
_("A close callback is already registered"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (virConnectCloseCallbackDataGetCallback(privconn->closeCallback) != NULL) {
|
virConnectCloseCallbackDataRegister(privconn->closeCallback, conn, cb,
|
||||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
opaque, freecb);
|
||||||
_("A close callback is already registered"));
|
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virConnectCloseCallbackDataRegister(privconn->closeCallback, conn, cb,
|
return 0;
|
||||||
opaque, freecb);
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
virObjectUnlock(privconn->driver);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
vzConnectUnregisterCloseCallback(virConnectPtr conn, virConnectCloseFunc cb)
|
vzConnectUnregisterCloseCallback(virConnectPtr conn, virConnectCloseFunc cb)
|
||||||
{
|
{
|
||||||
struct _vzConn *privconn = conn->privateData;
|
struct _vzConn *privconn = conn->privateData;
|
||||||
int ret = -1;
|
|
||||||
|
|
||||||
if (virConnectUnregisterCloseCallbackEnsureACL(conn) < 0)
|
if (virConnectUnregisterCloseCallbackEnsureACL(conn) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
virObjectLock(privconn->driver);
|
VIR_WITH_OBJECT_LOCK_GUARD(privconn->driver) {
|
||||||
|
if (virConnectCloseCallbackDataGetCallback(privconn->closeCallback) != cb) {
|
||||||
|
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||||
|
_("A different callback was requested"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (virConnectCloseCallbackDataGetCallback(privconn->closeCallback) != cb) {
|
virConnectCloseCallbackDataUnregister(privconn->closeCallback, cb);
|
||||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
|
||||||
_("A different callback was requested"));
|
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virConnectCloseCallbackDataUnregister(privconn->closeCallback, cb);
|
return 0;
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
virObjectUnlock(privconn->driver);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vzDomainSetMemoryFlags(virDomainPtr domain, unsigned long memory,
|
static int vzDomainSetMemoryFlags(virDomainPtr domain, unsigned long memory,
|
||||||
@ -3795,9 +3785,9 @@ vzConnectGetAllDomainStats(virConnectPtr conn,
|
|||||||
virDomainStatsRecordPtr tmp;
|
virDomainStatsRecordPtr tmp;
|
||||||
virDomainObj *dom = doms[i];
|
virDomainObj *dom = doms[i];
|
||||||
|
|
||||||
virObjectLock(dom);
|
VIR_WITH_OBJECT_LOCK_GUARD(dom) {
|
||||||
tmp = vzDomainGetAllStats(conn, dom);
|
tmp = vzDomainGetAllStats(conn, dom);
|
||||||
virObjectUnlock(dom);
|
}
|
||||||
|
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user