With the majority of fields in the virLXCDriverPtr struct now immutable or self-locking, there is no need for practically any methods to be using the LXC driver lock. Only a handful of helper APIs now need it. --- src/lxc/lxc_conf.c | 14 ++++- src/lxc/lxc_conf.h | 3 - src/lxc/lxc_driver.c | 171 +++++--------------------------------------------- src/lxc/lxc_process.c | 14 +---- 4 files changed, 27 insertions(+), 175 deletions(-) diff --git a/src/lxc/lxc_conf.c b/src/lxc/lxc_conf.c index 6739df9..c1cee3f 100644 --- a/src/lxc/lxc_conf.c +++ b/src/lxc/lxc_conf.c @@ -167,16 +167,22 @@ error: virCapsPtr virLXCDriverGetCapabilities(virLXCDriverPtr driver, bool refresh) { + virCapsPtr ret; if (refresh) { virCapsPtr caps = NULL; if ((caps = virLXCDriverCapsInit(driver)) == NULL) return NULL; + lxcDriverLock(driver); virObjectUnref(driver->caps); driver->caps = caps; + } else { + lxcDriverLock(driver); } - return virObjectRef(driver->caps); + ret = virObjectRef(driver->caps); + lxcDriverUnlock(driver); + return ret; } @@ -273,7 +279,11 @@ done: virLXCDriverConfigPtr virLXCDriverGetConfig(virLXCDriverPtr driver) { - return virObjectRef(driver->config); + virLXCDriverConfigPtr cfg; + lxcDriverLock(driver); + cfg = virObjectRef(driver->config); + lxcDriverUnlock(driver); + return cfg; } static void diff --git a/src/lxc/lxc_conf.h b/src/lxc/lxc_conf.h index f8caebe..a6208a2 100644 --- a/src/lxc/lxc_conf.h +++ b/src/lxc/lxc_conf.h @@ -76,9 +76,6 @@ struct _virLXCDriver { * lockless access thereafter */ virCapsPtr caps; - /* Immutable pointer. Unsafe APIs XXX */ - virCgroupPtr cgroup; - /* Immutable pointer, Immutable object */ virDomainXMLOptionPtr xmlopt; diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 1210e77..92f0d15 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -162,10 +162,7 @@ static int lxcConnectClose(virConnectPtr conn) { virLXCDriverPtr driver = conn->privateData; - lxcDriverLock(driver); virCloseCallbacksRun(driver->closeCallbacks, conn, driver->domains, driver); - lxcDriverUnlock(driver); - conn->privateData = NULL; return 0; } @@ -199,15 +196,11 @@ static char *lxcConnectGetCapabilities(virConnectPtr conn) { if (virConnectGetCapabilitiesEnsureACL(conn) < 0) return NULL; - lxcDriverLock(driver); - if (!(caps = virLXCDriverGetCapabilities(driver, false))) { - lxcDriverUnlock(driver); + if (!(caps = virLXCDriverGetCapabilities(driver, false))) return NULL; - } if ((xml = virCapabilitiesFormatXML(caps)) == NULL) virReportOOMError(); - lxcDriverUnlock(driver); virObjectUnref(caps); return xml; @@ -221,9 +214,7 @@ static virDomainPtr lxcDomainLookupByID(virConnectPtr conn, virDomainObjPtr vm; virDomainPtr dom = NULL; - lxcDriverLock(driver); vm = virDomainObjListFindByID(driver->domains, id); - lxcDriverUnlock(driver); if (!vm) { virReportError(VIR_ERR_NO_DOMAIN, @@ -251,9 +242,7 @@ static virDomainPtr lxcDomainLookupByUUID(virConnectPtr conn, virDomainObjPtr vm; virDomainPtr dom = NULL; - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, uuid); - lxcDriverUnlock(driver); if (!vm) { char uuidstr[VIR_UUID_STRING_BUFLEN]; @@ -283,9 +272,7 @@ static virDomainPtr lxcDomainLookupByName(virConnectPtr conn, virDomainObjPtr vm; virDomainPtr dom = NULL; - lxcDriverLock(driver); vm = virDomainObjListFindByName(driver->domains, name); - lxcDriverUnlock(driver); if (!vm) { virReportError(VIR_ERR_NO_DOMAIN, _("No domain with matching name '%s'"), name); @@ -312,9 +299,7 @@ static int lxcDomainIsActive(virDomainPtr dom) virDomainObjPtr obj; int ret = -1; - lxcDriverLock(driver); obj = virDomainObjListFindByUUID(driver->domains, dom->uuid); - lxcDriverUnlock(driver); if (!obj) { char uuidstr[VIR_UUID_STRING_BUFLEN]; virUUIDFormat(dom->uuid, uuidstr); @@ -341,9 +326,7 @@ static int lxcDomainIsPersistent(virDomainPtr dom) virDomainObjPtr obj; int ret = -1; - lxcDriverLock(driver); obj = virDomainObjListFindByUUID(driver->domains, dom->uuid); - lxcDriverUnlock(driver); if (!obj) { char uuidstr[VIR_UUID_STRING_BUFLEN]; virUUIDFormat(dom->uuid, uuidstr); @@ -369,9 +352,7 @@ static int lxcDomainIsUpdated(virDomainPtr dom) virDomainObjPtr obj; int ret = -1; - lxcDriverLock(driver); obj = virDomainObjListFindByUUID(driver->domains, dom->uuid); - lxcDriverUnlock(driver); if (!obj) { char uuidstr[VIR_UUID_STRING_BUFLEN]; virUUIDFormat(dom->uuid, uuidstr); @@ -398,10 +379,8 @@ static int lxcConnectListDomains(virConnectPtr conn, int *ids, int nids) { if (virConnectListDomainsEnsureACL(conn) < 0) return -1; - lxcDriverLock(driver); n = virDomainObjListGetActiveIDs(driver->domains, ids, nids, virConnectListDomainsCheckACL, conn); - lxcDriverUnlock(driver); return n; } @@ -413,10 +392,8 @@ static int lxcConnectNumOfDomains(virConnectPtr conn) { if (virConnectNumOfDomainsEnsureACL(conn) < 0) return -1; - lxcDriverLock(driver); n = virDomainObjListNumOfDomains(driver->domains, true, virConnectNumOfDomainsCheckACL, conn); - lxcDriverUnlock(driver); return n; } @@ -429,10 +406,8 @@ static int lxcConnectListDefinedDomains(virConnectPtr conn, if (virConnectListDefinedDomainsEnsureACL(conn) < 0) return -1; - lxcDriverLock(driver); n = virDomainObjListGetInactiveNames(driver->domains, names, nnames, virConnectListDefinedDomainsCheckACL, conn); - lxcDriverUnlock(driver); return n; } @@ -445,10 +420,8 @@ static int lxcConnectNumOfDefinedDomains(virConnectPtr conn) { if (virConnectNumOfDefinedDomainsEnsureACL(conn) < 0) return -1; - lxcDriverLock(driver); n = virDomainObjListNumOfDomains(driver->domains, false, virConnectNumOfDefinedDomainsCheckACL, conn); - lxcDriverUnlock(driver); return n; } @@ -463,12 +436,9 @@ static virDomainPtr lxcDomainDefineXML(virConnectPtr conn, const char *xml) virDomainPtr dom = NULL; virDomainEventPtr event = NULL; virDomainDefPtr oldDef = NULL; - virLXCDriverConfigPtr cfg = NULL; + virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver); virCapsPtr caps = NULL; - lxcDriverLock(driver); - cfg = virLXCDriverGetConfig(driver); - if (!(caps = virLXCDriverGetCapabilities(driver, false))) goto cleanup; @@ -521,7 +491,6 @@ cleanup: if (event) virDomainEventStateQueue(driver->domainEventState, event); virObjectUnref(caps); - lxcDriverUnlock(driver); virObjectUnref(cfg); return dom; } @@ -533,13 +502,10 @@ static int lxcDomainUndefineFlags(virDomainPtr dom, virDomainObjPtr vm; virDomainEventPtr event = NULL; int ret = -1; - virLXCDriverConfigPtr cfg = NULL; + virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver); virCheckFlags(0, -1); - lxcDriverLock(driver); - cfg = virLXCDriverGetConfig(driver); - vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); if (!vm) { char uuidstr[VIR_UUID_STRING_BUFLEN]; @@ -581,7 +547,6 @@ cleanup: virObjectUnlock(vm); if (event) virDomainEventStateQueue(driver->domainEventState, event); - lxcDriverUnlock(driver); virObjectUnref(cfg); return ret; } @@ -599,7 +564,6 @@ static int lxcDomainGetInfo(virDomainPtr dom, int ret = -1, rc; virLXCDomainObjPrivatePtr priv; - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); if (!vm) { @@ -643,7 +607,6 @@ static int lxcDomainGetInfo(virDomainPtr dom, ret = 0; cleanup: - lxcDriverUnlock(driver); if (vm) virObjectUnlock(vm); return ret; @@ -661,9 +624,7 @@ lxcDomainGetState(virDomainPtr dom, virCheckFlags(0, -1); - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); - lxcDriverUnlock(driver); if (!vm) { char uuidstr[VIR_UUID_STRING_BUFLEN]; @@ -691,9 +652,7 @@ static char *lxcDomainGetOSType(virDomainPtr dom) virDomainObjPtr vm; char *ret = NULL; - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); - lxcDriverUnlock(driver); if (!vm) { char uuidstr[VIR_UUID_STRING_BUFLEN]; @@ -723,9 +682,7 @@ lxcDomainGetMaxMemory(virDomainPtr dom) virDomainObjPtr vm; unsigned long long ret = 0; - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); - lxcDriverUnlock(driver); if (!vm) { char uuidstr[VIR_UUID_STRING_BUFLEN]; @@ -751,9 +708,7 @@ static int lxcDomainSetMaxMemory(virDomainPtr dom, unsigned long newmax) { virDomainObjPtr vm; int ret = -1; - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); - lxcDriverUnlock(driver); if (!vm) { char uuidstr[VIR_UUID_STRING_BUFLEN]; @@ -787,9 +742,7 @@ static int lxcDomainSetMemory(virDomainPtr dom, unsigned long newmem) { int ret = -1; virLXCDomainObjPrivatePtr priv; - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); - lxcDriverUnlock(driver); if (!vm) { char uuidstr[VIR_UUID_STRING_BUFLEN]; virUUIDFormat(dom->uuid, uuidstr); @@ -852,7 +805,6 @@ lxcDomainSetMemoryParameters(virDomainPtr dom, NULL) < 0) return -1; - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); if (vm == NULL) { @@ -898,7 +850,6 @@ lxcDomainSetMemoryParameters(virDomainPtr dom, cleanup: if (vm) virObjectUnlock(vm); - lxcDriverUnlock(driver); return ret; } @@ -918,7 +869,6 @@ lxcDomainGetMemoryParameters(virDomainPtr dom, virCheckFlags(0, -1); - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); if (vm == NULL) { @@ -994,7 +944,6 @@ lxcDomainGetMemoryParameters(virDomainPtr dom, cleanup: if (vm) virObjectUnlock(vm); - lxcDriverUnlock(driver); return ret; } @@ -1007,9 +956,7 @@ static char *lxcDomainGetXMLDesc(virDomainPtr dom, /* Flags checked by virDomainDefFormat */ - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); - lxcDriverUnlock(driver); if (!vm) { char uuidstr[VIR_UUID_STRING_BUFLEN]; @@ -1047,13 +994,10 @@ static int lxcDomainCreateWithFlags(virDomainPtr dom, unsigned int flags) virDomainObjPtr vm; virDomainEventPtr event = NULL; int ret = -1; - virLXCDriverConfigPtr cfg = NULL; + virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver); virCheckFlags(VIR_DOMAIN_START_AUTODESTROY, -1); - lxcDriverLock(driver); - cfg = virLXCDriverGetConfig(driver); - vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); if (!vm) { char uuidstr[VIR_UUID_STRING_BUFLEN]; @@ -1096,7 +1040,6 @@ cleanup: virObjectUnlock(vm); if (event) virDomainEventStateQueue(driver->domainEventState, event); - lxcDriverUnlock(driver); virObjectUnref(cfg); return ret; } @@ -1134,14 +1077,11 @@ lxcDomainCreateXML(virConnectPtr conn, virDomainDefPtr def = NULL; virDomainPtr dom = NULL; virDomainEventPtr event = NULL; - virLXCDriverConfigPtr cfg = NULL; + virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver); virCapsPtr caps = NULL; virCheckFlags(VIR_DOMAIN_START_AUTODESTROY, NULL); - lxcDriverLock(driver); - cfg = virLXCDriverGetConfig(driver); - if (!(caps = virLXCDriverGetCapabilities(driver, false))) goto cleanup; @@ -1195,7 +1135,6 @@ cleanup: if (event) virDomainEventStateQueue(driver->domainEventState, event); virObjectUnref(caps); - lxcDriverUnlock(driver); virObjectUnref(cfg); return dom; } @@ -1207,7 +1146,6 @@ static int lxcDomainGetSecurityLabel(virDomainPtr dom, virSecurityLabelPtr secla virDomainObjPtr vm; int ret = -1; - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); memset(seclabel, 0, sizeof(*seclabel)); @@ -1266,7 +1204,6 @@ static int lxcDomainGetSecurityLabel(virDomainPtr dom, virSecurityLabelPtr secla cleanup: if (vm) virObjectUnlock(vm); - lxcDriverUnlock(driver); return ret; } @@ -1277,7 +1214,6 @@ static int lxcNodeGetSecurityModel(virConnectPtr conn, virCapsPtr caps = NULL; int ret = 0; - lxcDriverLock(driver); memset(secmodel, 0, sizeof(*secmodel)); if (virNodeGetSecurityModelEnsureACL(conn) < 0) @@ -1311,7 +1247,6 @@ static int lxcNodeGetSecurityModel(virConnectPtr conn, cleanup: virObjectUnref(caps); - lxcDriverUnlock(driver); return ret; } @@ -1328,11 +1263,9 @@ lxcConnectDomainEventRegister(virConnectPtr conn, if (virConnectDomainEventRegisterEnsureACL(conn) < 0) return -1; - lxcDriverLock(driver); ret = virDomainEventStateRegister(conn, driver->domainEventState, callback, opaque, freecb); - lxcDriverUnlock(driver); return ret; } @@ -1348,11 +1281,9 @@ lxcConnectDomainEventDeregister(virConnectPtr conn, if (virConnectDomainEventDeregisterEnsureACL(conn) < 0) return -1; - lxcDriverLock(driver); ret = virDomainEventStateDeregister(conn, driver->domainEventState, callback); - lxcDriverUnlock(driver); return ret; } @@ -1372,13 +1303,11 @@ lxcConnectDomainEventRegisterAny(virConnectPtr conn, if (virConnectDomainEventRegisterAnyEnsureACL(conn) < 0) return -1; - lxcDriverLock(driver); if (virDomainEventStateRegisterID(conn, driver->domainEventState, dom, eventID, callback, opaque, freecb, &ret) < 0) ret = -1; - lxcDriverUnlock(driver); return ret; } @@ -1394,11 +1323,9 @@ lxcConnectDomainEventDeregisterAny(virConnectPtr conn, if (virConnectDomainEventDeregisterAnyEnsureACL(conn) < 0) return -1; - lxcDriverLock(driver); ret = virDomainEventStateDeregisterID(conn, driver->domainEventState, callbackID); - lxcDriverUnlock(driver); return ret; } @@ -1425,7 +1352,6 @@ lxcDomainDestroyFlags(virDomainPtr dom, virCheckFlags(0, -1); - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); if (!vm) { char uuidstr[VIR_UUID_STRING_BUFLEN]; @@ -1461,7 +1387,6 @@ cleanup: virObjectUnlock(vm); if (event) virDomainEventStateQueue(driver->domainEventState, event); - lxcDriverUnlock(driver); return ret; } @@ -1553,7 +1478,6 @@ static int lxcStateInitialize(bool privileged, VIR_FREE(lxc_driver); return -1; } - lxcDriverLock(lxc_driver); if (!(lxc_driver->domains = virDomainObjListNew())) goto cleanup; @@ -1614,8 +1538,6 @@ static int lxcStateInitialize(bool privileged, NULL, NULL) < 0) goto cleanup; - lxcDriverUnlock(lxc_driver); - virLXCProcessAutostartAll(lxc_driver); virNWFilterRegisterCallbackDriver(&lxcCallbackDriver); @@ -1623,7 +1545,6 @@ static int lxcStateInitialize(bool privileged, cleanup: virObjectUnref(caps); - lxcDriverUnlock(lxc_driver); lxcStateCleanup(); return -1; } @@ -1656,11 +1577,8 @@ lxcStateReload(void) { if (!lxc_driver) return 0; - lxcDriverLock(lxc_driver); - if (!(caps = virLXCDriverGetCapabilities(lxc_driver, false))) { - lxcDriverUnlock(lxc_driver); + if (!(caps = virLXCDriverGetCapabilities(lxc_driver, false))) return -1; - } cfg = virLXCDriverGetConfig(lxc_driver); @@ -1671,7 +1589,6 @@ lxcStateReload(void) { lxc_driver->xmlopt, 1 << VIR_DOMAIN_VIRT_LXC, lxcNotifyLoadDomain, lxc_driver); - lxcDriverUnlock(lxc_driver); virObjectUnref(caps); virObjectUnref(cfg); return 0; @@ -1682,7 +1599,6 @@ static int lxcStateCleanup(void) if (lxc_driver == NULL) return -1; - lxcDriverLock(lxc_driver); virNWFilterUnRegisterCallbackDriver(&lxcCallbackDriver); virObjectUnref(lxc_driver->domains); virDomainEventStateFree(lxc_driver->domainEventState); @@ -1696,7 +1612,6 @@ static int lxcStateCleanup(void) virObjectUnref(lxc_driver->securityManager); virObjectUnref(lxc_driver->xmlopt); virObjectUnref(lxc_driver->config); - lxcDriverUnlock(lxc_driver); virMutexDestroy(&lxc_driver->lock); VIR_FREE(lxc_driver); @@ -1774,7 +1689,6 @@ static char *lxcDomainGetSchedulerType(virDomainPtr dom, virDomainObjPtr vm; virLXCDomainObjPrivatePtr priv; - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); if (vm == NULL) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -1815,7 +1729,6 @@ static char *lxcDomainGetSchedulerType(virDomainPtr dom, cleanup: if (vm) virObjectUnlock(vm); - lxcDriverUnlock(driver); return ret; } @@ -1907,7 +1820,7 @@ lxcDomainSetSchedulerParametersFlags(virDomainPtr dom, int ret = -1; int rc; virLXCDomainObjPrivatePtr priv; - virLXCDriverConfigPtr cfg = NULL; + virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver); virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); @@ -1921,10 +1834,6 @@ lxcDomainSetSchedulerParametersFlags(virDomainPtr dom, NULL) < 0) return -1; - lxcDriverLock(driver); - - cfg = virLXCDriverGetConfig(driver); - vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); if (vm == NULL) { @@ -2026,7 +1935,6 @@ cleanup: if (vm) virObjectUnlock(vm); virObjectUnref(caps); - lxcDriverUnlock(driver); virObjectUnref(cfg); return ret; } @@ -2061,8 +1969,6 @@ lxcDomainGetSchedulerParametersFlags(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); - lxcDriverLock(driver); - vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); if (vm == NULL) { @@ -2149,7 +2055,6 @@ cleanup: if (vm) virObjectUnlock(vm); virObjectUnref(caps); - lxcDriverUnlock(driver); return ret; } @@ -2175,7 +2080,7 @@ lxcDomainSetBlkioParameters(virDomainPtr dom, virDomainDefPtr persistentDef = NULL; int ret = -1; virLXCDomainObjPrivatePtr priv; - virLXCDriverConfigPtr cfg = NULL; + virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver); virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); @@ -2185,10 +2090,6 @@ lxcDomainSetBlkioParameters(virDomainPtr dom, NULL) < 0) return -1; - lxcDriverLock(driver); - - cfg = virLXCDriverGetConfig(driver); - vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); if (vm == NULL) { @@ -2263,7 +2164,6 @@ cleanup: if (vm) virObjectUnlock(vm); virObjectUnref(caps); - lxcDriverUnlock(driver); virObjectUnref(cfg); return ret; } @@ -2288,7 +2188,6 @@ lxcDomainGetBlkioParameters(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); @@ -2374,7 +2273,6 @@ cleanup: if (vm) virObjectUnlock(vm); virObjectUnref(caps); - lxcDriverUnlock(driver); return ret; } @@ -2390,9 +2288,7 @@ lxcDomainInterfaceStats(virDomainPtr dom, size_t i; int ret = -1; - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); - lxcDriverUnlock(driver); if (!vm) { char uuidstr[VIR_UUID_STRING_BUFLEN]; @@ -2448,9 +2344,7 @@ static int lxcDomainGetAutostart(virDomainPtr dom, virDomainObjPtr vm; int ret = -1; - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); - lxcDriverUnlock(driver); if (!vm) { char uuidstr[VIR_UUID_STRING_BUFLEN]; @@ -2479,10 +2373,7 @@ static int lxcDomainSetAutostart(virDomainPtr dom, virDomainObjPtr vm; char *configFile = NULL, *autostartLink = NULL; int ret = -1; - virLXCDriverConfigPtr cfg = NULL; - - lxcDriverLock(driver); - cfg = virLXCDriverGetConfig(driver); + virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); @@ -2550,7 +2441,6 @@ cleanup: VIR_FREE(autostartLink); if (vm) virObjectUnlock(vm); - lxcDriverUnlock(driver); virObjectUnref(cfg); return ret; } @@ -2647,10 +2537,7 @@ static int lxcDomainSuspend(virDomainPtr dom) virDomainObjPtr vm; virDomainEventPtr event = NULL; int ret = -1; - virLXCDriverConfigPtr cfg = NULL; - - lxcDriverLock(driver); - cfg = virLXCDriverGetConfig(driver); + virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); @@ -2693,7 +2580,6 @@ cleanup: virDomainEventStateQueue(driver->domainEventState, event); if (vm) virObjectUnlock(vm); - lxcDriverUnlock(driver); virObjectUnref(cfg); return ret; } @@ -2705,10 +2591,7 @@ static int lxcDomainResume(virDomainPtr dom) virDomainEventPtr event = NULL; int ret = -1; virLXCDomainObjPrivatePtr priv; - virLXCDriverConfigPtr cfg = NULL; - - lxcDriverLock(driver); - cfg = virLXCDriverGetConfig(driver); + virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); @@ -2754,7 +2637,6 @@ cleanup: virDomainEventStateQueue(driver->domainEventState, event); if (vm) virObjectUnlock(vm); - lxcDriverUnlock(driver); virObjectUnref(cfg); return ret; } @@ -2774,7 +2656,6 @@ lxcDomainOpenConsole(virDomainPtr dom, virCheckFlags(0, -1); - lxcDriverLock(driver); virUUIDFormat(dom->uuid, uuidstr); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); if (!vm) { @@ -2828,7 +2709,6 @@ lxcDomainOpenConsole(virDomainPtr dom, cleanup: if (vm) virObjectUnlock(vm); - lxcDriverUnlock(driver); return ret; } @@ -2855,10 +2735,8 @@ lxcDomainSendProcessSignal(virDomainPtr dom, return -1; } - lxcDriverLock(driver); virUUIDFormat(dom->uuid, uuidstr); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); - lxcDriverUnlock(driver); if (!vm) { virReportError(VIR_ERR_NO_DOMAIN, _("no domain with matching uuid '%s'"), uuidstr); @@ -2927,11 +2805,8 @@ lxcConnectListAllDomains(virConnectPtr conn, if (virConnectListAllDomainsEnsureACL(conn) < 0) return -1; - lxcDriverLock(driver); ret = virDomainObjListExport(driver->domains, conn, domains, virConnectListAllDomainsCheckACL, flags); - lxcDriverUnlock(driver); - return ret; } @@ -2950,9 +2825,7 @@ lxcDomainShutdownFlags(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_SHUTDOWN_INITCTL | VIR_DOMAIN_SHUTDOWN_SIGNAL, -1); - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); - lxcDriverUnlock(driver); if (!vm) { char uuidstr[VIR_UUID_STRING_BUFLEN]; @@ -3040,9 +2913,7 @@ lxcDomainReboot(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_REBOOT_INITCTL | VIR_DOMAIN_REBOOT_SIGNAL, -1); - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); - lxcDriverUnlock(driver); if (!vm) { char uuidstr[VIR_UUID_STRING_BUFLEN]; @@ -4382,16 +4253,13 @@ static int lxcDomainAttachDeviceFlags(virDomainPtr dom, virDomainDeviceDefPtr dev = NULL, dev_copy = NULL; int ret = -1; unsigned int affect; - virLXCDriverConfigPtr cfg = NULL; + virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver); virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); affect = flags & (VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG); - lxcDriverLock(driver); - cfg = virLXCDriverGetConfig(driver); - vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); if (!vm) { @@ -4493,7 +4361,6 @@ cleanup: if (vm) virObjectUnlock(vm); virObjectUnref(caps); - lxcDriverUnlock(driver); virObjectUnref(cfg); return ret; } @@ -4518,7 +4385,7 @@ static int lxcDomainUpdateDeviceFlags(virDomainPtr dom, virDomainDeviceDefPtr dev = NULL, dev_copy = NULL; int ret = -1; unsigned int affect; - virLXCDriverConfigPtr cfg = NULL; + virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver); virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG | @@ -4526,9 +4393,6 @@ static int lxcDomainUpdateDeviceFlags(virDomainPtr dom, affect = flags & (VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG); - lxcDriverLock(driver); - cfg = virLXCDriverGetConfig(driver); - vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); if (!vm) { @@ -4623,7 +4487,6 @@ cleanup: if (vm) virObjectUnlock(vm); virObjectUnref(caps); - lxcDriverUnlock(driver); virObjectUnref(cfg); return ret; } @@ -4640,16 +4503,13 @@ static int lxcDomainDetachDeviceFlags(virDomainPtr dom, virDomainDeviceDefPtr dev = NULL, dev_copy = NULL; int ret = -1; unsigned int affect; - virLXCDriverConfigPtr cfg = NULL; + virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver); virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); affect = flags & (VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG); - lxcDriverLock(driver); - cfg = virLXCDriverGetConfig(driver); - vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); if (!vm) { @@ -4752,7 +4612,6 @@ cleanup: if (vm) virObjectUnlock(vm); virObjectUnref(caps); - lxcDriverUnlock(driver); virObjectUnref(cfg); return ret; } @@ -4779,9 +4638,7 @@ static int lxcDomainLxcOpenNamespace(virDomainPtr dom, *fdlist = NULL; virCheckFlags(0, -1); - lxcDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); - lxcDriverUnlock(driver); if (!vm) { char uuidstr[VIR_UUID_STRING_BUFLEN]; virUUIDFormat(dom->uuid, uuidstr); diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c index 3c4a71a..91f0683 100644 --- a/src/lxc/lxc_process.c +++ b/src/lxc/lxc_process.c @@ -486,9 +486,7 @@ static void virLXCProcessMonitorEOFNotify(virLXCMonitorPtr mon, VIR_DEBUG("mon=%p vm=%p", mon, vm); - lxcDriverLock(driver); virObjectLock(vm); - lxcDriverUnlock(driver); priv = vm->privateData; virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN); @@ -526,9 +524,7 @@ static void virLXCProcessMonitorEOFNotify(virLXCMonitorPtr mon, if (vm) virObjectUnlock(vm); if (event) { - lxcDriverLock(driver); virDomainEventStateQueue(driver->domainEventState, event); - lxcDriverUnlock(driver); } } @@ -536,12 +532,9 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED virLXCMonitorExitStatus status, virDomainObjPtr vm) { - virLXCDriverPtr driver = lxc_driver; virLXCDomainObjPrivatePtr priv = vm->privateData; - lxcDriverLock(driver); virObjectLock(vm); - lxcDriverUnlock(driver); switch (status) { case VIR_LXC_MONITOR_EXIT_STATUS_SHUTDOWN: @@ -600,13 +593,10 @@ static void virLXCProcessMonitorInitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED { virLXCDriverPtr driver = lxc_driver; virLXCDomainObjPrivatePtr priv; - virLXCDriverConfigPtr cfg; + virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver); ino_t inode; - lxcDriverLock(driver); virObjectLock(vm); - cfg = virLXCDriverGetConfig(driver); - lxcDriverUnlock(driver); priv = vm->privateData; priv->initpid = initpid; @@ -1359,11 +1349,9 @@ virLXCProcessAutostartAll(virLXCDriverPtr driver) struct virLXCProcessAutostartData data = { driver, conn }; - lxcDriverLock(driver); virDomainObjListForEach(driver->domains, virLXCProcessAutostartDomain, &data); - lxcDriverUnlock(driver); if (conn) virConnectClose(conn); -- 1.8.1.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list