mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
bridge_driver: Drop networkDriverLock() from almost everywhere
Now that we have fine grained locks, there's no need to lock the whole driver. We can rely on self-locking APIs. Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
376b97799e
commit
af338d5f51
@ -110,7 +110,9 @@ static dnsmasqCapsPtr
|
|||||||
networkGetDnsmasqCaps(virNetworkDriverStatePtr driver)
|
networkGetDnsmasqCaps(virNetworkDriverStatePtr driver)
|
||||||
{
|
{
|
||||||
dnsmasqCapsPtr ret;
|
dnsmasqCapsPtr ret;
|
||||||
|
networkDriverLock(driver);
|
||||||
ret = virObjectRef(driver->dnsmasqCaps);
|
ret = virObjectRef(driver->dnsmasqCaps);
|
||||||
|
networkDriverUnlock(driver);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,8 +124,10 @@ networkDnsmasqCapsRefresh(virNetworkDriverStatePtr driver)
|
|||||||
if (!(caps = dnsmasqCapsNewFromBinary(DNSMASQ)))
|
if (!(caps = dnsmasqCapsNewFromBinary(DNSMASQ)))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
networkDriverLock(driver);
|
||||||
virObjectUnref(driver->dnsmasqCaps);
|
virObjectUnref(driver->dnsmasqCaps);
|
||||||
driver->dnsmasqCaps = caps;
|
driver->dnsmasqCaps = caps;
|
||||||
|
networkDriverUnlock(driver);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -163,9 +167,7 @@ networkObjFromNetwork(virNetworkPtr net)
|
|||||||
virNetworkObjPtr network;
|
virNetworkObjPtr network;
|
||||||
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
network = virNetworkObjFindByUUID(driver->networks, net->uuid);
|
network = virNetworkObjFindByUUID(driver->networks, net->uuid);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
|
|
||||||
if (!network) {
|
if (!network) {
|
||||||
virUUIDFormat(net->uuid, uuidstr);
|
virUUIDFormat(net->uuid, uuidstr);
|
||||||
@ -676,6 +678,7 @@ networkStateInitialize(bool privileged,
|
|||||||
network_driver->networkAutostartDir) < 0)
|
network_driver->networkAutostartDir) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
networkDriverUnlock(network_driver);
|
||||||
|
|
||||||
/* Update the internal status of all allegedly active
|
/* Update the internal status of all allegedly active
|
||||||
* networks according to external conditions on the host
|
* networks according to external conditions on the host
|
||||||
@ -692,8 +695,6 @@ networkStateInitialize(bool privileged,
|
|||||||
|
|
||||||
network_driver->networkEventState = virObjectEventStateNew();
|
network_driver->networkEventState = virObjectEventStateNew();
|
||||||
|
|
||||||
networkDriverUnlock(network_driver);
|
|
||||||
|
|
||||||
#ifdef HAVE_FIREWALLD
|
#ifdef HAVE_FIREWALLD
|
||||||
if (!(sysbus = virDBusGetSystemBus())) {
|
if (!(sysbus = virDBusGetSystemBus())) {
|
||||||
virErrorPtr err = virGetLastError();
|
virErrorPtr err = virGetLastError();
|
||||||
@ -744,11 +745,9 @@ networkStateAutoStart(void)
|
|||||||
if (!network_driver)
|
if (!network_driver)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
networkDriverLock(network_driver);
|
|
||||||
virNetworkObjListForEach(network_driver->networks,
|
virNetworkObjListForEach(network_driver->networks,
|
||||||
networkAutostartConfig,
|
networkAutostartConfig,
|
||||||
network_driver);
|
network_driver);
|
||||||
networkDriverUnlock(network_driver);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -763,7 +762,6 @@ networkStateReload(void)
|
|||||||
if (!network_driver)
|
if (!network_driver)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
networkDriverLock(network_driver);
|
|
||||||
virNetworkLoadAllState(network_driver->networks,
|
virNetworkLoadAllState(network_driver->networks,
|
||||||
network_driver->stateDir);
|
network_driver->stateDir);
|
||||||
virNetworkLoadAllConfigs(network_driver->networks,
|
virNetworkLoadAllConfigs(network_driver->networks,
|
||||||
@ -774,7 +772,6 @@ networkStateReload(void)
|
|||||||
virNetworkObjListForEach(network_driver->networks,
|
virNetworkObjListForEach(network_driver->networks,
|
||||||
networkAutostartConfig,
|
networkAutostartConfig,
|
||||||
NULL);
|
NULL);
|
||||||
networkDriverUnlock(network_driver);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -790,8 +787,6 @@ networkStateCleanup(void)
|
|||||||
if (!network_driver)
|
if (!network_driver)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
networkDriverLock(network_driver);
|
|
||||||
|
|
||||||
virObjectEventStateFree(network_driver->networkEventState);
|
virObjectEventStateFree(network_driver->networkEventState);
|
||||||
|
|
||||||
/* free inactive networks */
|
/* free inactive networks */
|
||||||
@ -806,7 +801,6 @@ networkStateCleanup(void)
|
|||||||
|
|
||||||
virObjectUnref(network_driver->dnsmasqCaps);
|
virObjectUnref(network_driver->dnsmasqCaps);
|
||||||
|
|
||||||
networkDriverUnlock(network_driver);
|
|
||||||
virMutexDestroy(&network_driver->lock);
|
virMutexDestroy(&network_driver->lock);
|
||||||
|
|
||||||
VIR_FREE(network_driver);
|
VIR_FREE(network_driver);
|
||||||
@ -2545,9 +2539,7 @@ static virNetworkPtr networkLookupByUUID(virConnectPtr conn,
|
|||||||
virNetworkObjPtr network;
|
virNetworkObjPtr network;
|
||||||
virNetworkPtr ret = NULL;
|
virNetworkPtr ret = NULL;
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
network = virNetworkObjFindByUUID(driver->networks, uuid);
|
network = virNetworkObjFindByUUID(driver->networks, uuid);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
if (!network) {
|
if (!network) {
|
||||||
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
||||||
virUUIDFormat(uuid, uuidstr);
|
virUUIDFormat(uuid, uuidstr);
|
||||||
@ -2574,9 +2566,7 @@ static virNetworkPtr networkLookupByName(virConnectPtr conn,
|
|||||||
virNetworkObjPtr network;
|
virNetworkObjPtr network;
|
||||||
virNetworkPtr ret = NULL;
|
virNetworkPtr ret = NULL;
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
network = virNetworkObjFindByName(driver->networks, name);
|
network = virNetworkObjFindByName(driver->networks, name);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
if (!network) {
|
if (!network) {
|
||||||
virReportError(VIR_ERR_NO_NETWORK,
|
virReportError(VIR_ERR_NO_NETWORK,
|
||||||
_("no network with matching name '%s'"), name);
|
_("no network with matching name '%s'"), name);
|
||||||
@ -2601,12 +2591,10 @@ static int networkConnectNumOfNetworks(virConnectPtr conn)
|
|||||||
if (virConnectNumOfNetworksEnsureACL(conn) < 0)
|
if (virConnectNumOfNetworksEnsureACL(conn) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
nactive = virNetworkObjListNumOfNetworks(driver->networks,
|
nactive = virNetworkObjListNumOfNetworks(driver->networks,
|
||||||
true,
|
true,
|
||||||
virConnectNumOfNetworksCheckACL,
|
virConnectNumOfNetworksCheckACL,
|
||||||
conn);
|
conn);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
|
|
||||||
return nactive;
|
return nactive;
|
||||||
}
|
}
|
||||||
@ -2621,12 +2609,10 @@ static int networkConnectListNetworks(virConnectPtr conn,
|
|||||||
if (virConnectListNetworksEnsureACL(conn) < 0)
|
if (virConnectListNetworksEnsureACL(conn) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
got = virNetworkObjListGetNames(driver->networks,
|
got = virNetworkObjListGetNames(driver->networks,
|
||||||
true, names, nnames,
|
true, names, nnames,
|
||||||
virConnectListNetworksCheckACL,
|
virConnectListNetworksCheckACL,
|
||||||
conn);
|
conn);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
|
|
||||||
return got;
|
return got;
|
||||||
}
|
}
|
||||||
@ -2639,12 +2625,10 @@ static int networkConnectNumOfDefinedNetworks(virConnectPtr conn)
|
|||||||
if (virConnectNumOfDefinedNetworksEnsureACL(conn) < 0)
|
if (virConnectNumOfDefinedNetworksEnsureACL(conn) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
ninactive = virNetworkObjListNumOfNetworks(driver->networks,
|
ninactive = virNetworkObjListNumOfNetworks(driver->networks,
|
||||||
false,
|
false,
|
||||||
virConnectNumOfDefinedNetworksCheckACL,
|
virConnectNumOfDefinedNetworksCheckACL,
|
||||||
conn);
|
conn);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
|
|
||||||
return ninactive;
|
return ninactive;
|
||||||
}
|
}
|
||||||
@ -2657,12 +2641,10 @@ static int networkConnectListDefinedNetworks(virConnectPtr conn, char **const na
|
|||||||
if (virConnectListDefinedNetworksEnsureACL(conn) < 0)
|
if (virConnectListDefinedNetworksEnsureACL(conn) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
got = virNetworkObjListGetNames(driver->networks,
|
got = virNetworkObjListGetNames(driver->networks,
|
||||||
false, names, nnames,
|
false, names, nnames,
|
||||||
virConnectListDefinedNetworksCheckACL,
|
virConnectListDefinedNetworksCheckACL,
|
||||||
conn);
|
conn);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
return got;
|
return got;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2679,11 +2661,9 @@ networkConnectListAllNetworks(virConnectPtr conn,
|
|||||||
if (virConnectListAllNetworksEnsureACL(conn) < 0)
|
if (virConnectListAllNetworksEnsureACL(conn) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
ret = virNetworkObjListExport(conn, driver->networks, nets,
|
ret = virNetworkObjListExport(conn, driver->networks, nets,
|
||||||
virConnectListAllNetworksCheckACL,
|
virConnectListAllNetworksCheckACL,
|
||||||
flags);
|
flags);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
return ret;
|
return ret;
|
||||||
@ -2998,8 +2978,6 @@ static virNetworkPtr networkCreateXML(virConnectPtr conn, const char *xml)
|
|||||||
virNetworkPtr ret = NULL;
|
virNetworkPtr ret = NULL;
|
||||||
virObjectEventPtr event = NULL;
|
virObjectEventPtr event = NULL;
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
|
|
||||||
if (!(def = virNetworkDefParseString(xml)))
|
if (!(def = virNetworkDefParseString(xml)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@ -3036,7 +3014,6 @@ static virNetworkPtr networkCreateXML(virConnectPtr conn, const char *xml)
|
|||||||
if (event)
|
if (event)
|
||||||
virObjectEventStateQueue(driver->networkEventState, event);
|
virObjectEventStateQueue(driver->networkEventState, event);
|
||||||
virNetworkObjEndAPI(&network);
|
virNetworkObjEndAPI(&network);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3049,8 +3026,6 @@ static virNetworkPtr networkDefineXML(virConnectPtr conn, const char *xml)
|
|||||||
virNetworkPtr ret = NULL;
|
virNetworkPtr ret = NULL;
|
||||||
virObjectEventPtr event = NULL;
|
virObjectEventPtr event = NULL;
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
|
|
||||||
if (!(def = virNetworkDefParseString(xml)))
|
if (!(def = virNetworkDefParseString(xml)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@ -3092,7 +3067,6 @@ static virNetworkPtr networkDefineXML(virConnectPtr conn, const char *xml)
|
|||||||
if (freeDef)
|
if (freeDef)
|
||||||
virNetworkDefFree(def);
|
virNetworkDefFree(def);
|
||||||
virNetworkObjEndAPI(&network);
|
virNetworkObjEndAPI(&network);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3105,8 +3079,6 @@ networkUndefine(virNetworkPtr net)
|
|||||||
bool active = false;
|
bool active = false;
|
||||||
virObjectEventPtr event = NULL;
|
virObjectEventPtr event = NULL;
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
|
|
||||||
network = virNetworkObjFindByUUID(driver->networks, net->uuid);
|
network = virNetworkObjFindByUUID(driver->networks, net->uuid);
|
||||||
if (!network) {
|
if (!network) {
|
||||||
virReportError(VIR_ERR_NO_NETWORK,
|
virReportError(VIR_ERR_NO_NETWORK,
|
||||||
@ -3149,7 +3121,6 @@ networkUndefine(virNetworkPtr net)
|
|||||||
if (event)
|
if (event)
|
||||||
virObjectEventStateQueue(driver->networkEventState, event);
|
virObjectEventStateQueue(driver->networkEventState, event);
|
||||||
virNetworkObjEndAPI(&network);
|
virNetworkObjEndAPI(&network);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3174,8 +3145,6 @@ networkUpdate(virNetworkPtr net,
|
|||||||
VIR_NETWORK_UPDATE_AFFECT_CONFIG,
|
VIR_NETWORK_UPDATE_AFFECT_CONFIG,
|
||||||
-1);
|
-1);
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
|
|
||||||
network = virNetworkObjFindByUUID(driver->networks, net->uuid);
|
network = virNetworkObjFindByUUID(driver->networks, net->uuid);
|
||||||
if (!network) {
|
if (!network) {
|
||||||
virReportError(VIR_ERR_NO_NETWORK,
|
virReportError(VIR_ERR_NO_NETWORK,
|
||||||
@ -3321,7 +3290,6 @@ networkUpdate(virNetworkPtr net,
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
virNetworkObjEndAPI(&network);
|
virNetworkObjEndAPI(&network);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3332,7 +3300,6 @@ static int networkCreate(virNetworkPtr net)
|
|||||||
int ret = -1;
|
int ret = -1;
|
||||||
virObjectEventPtr event = NULL;
|
virObjectEventPtr event = NULL;
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
network = virNetworkObjFindByUUID(driver->networks, net->uuid);
|
network = virNetworkObjFindByUUID(driver->networks, net->uuid);
|
||||||
|
|
||||||
if (!network) {
|
if (!network) {
|
||||||
@ -3356,7 +3323,6 @@ static int networkCreate(virNetworkPtr net)
|
|||||||
if (event)
|
if (event)
|
||||||
virObjectEventStateQueue(driver->networkEventState, event);
|
virObjectEventStateQueue(driver->networkEventState, event);
|
||||||
virNetworkObjEndAPI(&network);
|
virNetworkObjEndAPI(&network);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3367,7 +3333,6 @@ static int networkDestroy(virNetworkPtr net)
|
|||||||
int ret = -1;
|
int ret = -1;
|
||||||
virObjectEventPtr event = NULL;
|
virObjectEventPtr event = NULL;
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
network = virNetworkObjFindByUUID(driver->networks, net->uuid);
|
network = virNetworkObjFindByUUID(driver->networks, net->uuid);
|
||||||
|
|
||||||
if (!network) {
|
if (!network) {
|
||||||
@ -3404,7 +3369,6 @@ static int networkDestroy(virNetworkPtr net)
|
|||||||
if (event)
|
if (event)
|
||||||
virObjectEventStateQueue(driver->networkEventState, event);
|
virObjectEventStateQueue(driver->networkEventState, event);
|
||||||
virNetworkObjEndAPI(&network);
|
virNetworkObjEndAPI(&network);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3487,7 +3451,6 @@ static int networkSetAutostart(virNetworkPtr net,
|
|||||||
char *configFile = NULL, *autostartLink = NULL;
|
char *configFile = NULL, *autostartLink = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
network = virNetworkObjFindByUUID(driver->networks, net->uuid);
|
network = virNetworkObjFindByUUID(driver->networks, net->uuid);
|
||||||
|
|
||||||
if (!network) {
|
if (!network) {
|
||||||
@ -3544,7 +3507,6 @@ static int networkSetAutostart(virNetworkPtr net,
|
|||||||
VIR_FREE(configFile);
|
VIR_FREE(configFile);
|
||||||
VIR_FREE(autostartLink);
|
VIR_FREE(autostartLink);
|
||||||
virNetworkObjEndAPI(&network);
|
virNetworkObjEndAPI(&network);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3817,9 +3779,7 @@ networkAllocateActualDevice(virDomainDefPtr dom,
|
|||||||
virDomainActualNetDefFree(iface->data.network.actual);
|
virDomainActualNetDefFree(iface->data.network.actual);
|
||||||
iface->data.network.actual = NULL;
|
iface->data.network.actual = NULL;
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
network = virNetworkObjFindByName(driver->networks, iface->data.network.name);
|
network = virNetworkObjFindByName(driver->networks, iface->data.network.name);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
if (!network) {
|
if (!network) {
|
||||||
virReportError(VIR_ERR_NO_NETWORK,
|
virReportError(VIR_ERR_NO_NETWORK,
|
||||||
_("no network with matching name '%s'"),
|
_("no network with matching name '%s'"),
|
||||||
@ -4226,9 +4186,7 @@ networkNotifyActualDevice(virDomainDefPtr dom,
|
|||||||
if (iface->type != VIR_DOMAIN_NET_TYPE_NETWORK)
|
if (iface->type != VIR_DOMAIN_NET_TYPE_NETWORK)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
network = virNetworkObjFindByName(driver->networks, iface->data.network.name);
|
network = virNetworkObjFindByName(driver->networks, iface->data.network.name);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
if (!network) {
|
if (!network) {
|
||||||
virReportError(VIR_ERR_NO_NETWORK,
|
virReportError(VIR_ERR_NO_NETWORK,
|
||||||
_("no network with matching name '%s'"),
|
_("no network with matching name '%s'"),
|
||||||
@ -4426,9 +4384,7 @@ networkReleaseActualDevice(virDomainDefPtr dom,
|
|||||||
if (iface->type != VIR_DOMAIN_NET_TYPE_NETWORK)
|
if (iface->type != VIR_DOMAIN_NET_TYPE_NETWORK)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
networkDriverLock(driver);
|
|
||||||
network = virNetworkObjFindByName(driver->networks, iface->data.network.name);
|
network = virNetworkObjFindByName(driver->networks, iface->data.network.name);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
if (!network) {
|
if (!network) {
|
||||||
virReportError(VIR_ERR_NO_NETWORK,
|
virReportError(VIR_ERR_NO_NETWORK,
|
||||||
_("no network with matching name '%s'"),
|
_("no network with matching name '%s'"),
|
||||||
@ -4585,9 +4541,7 @@ networkGetNetworkAddress(const char *netname, char **netaddr)
|
|||||||
char *dev_name = NULL;
|
char *dev_name = NULL;
|
||||||
|
|
||||||
*netaddr = NULL;
|
*netaddr = NULL;
|
||||||
networkDriverLock(driver);
|
|
||||||
network = virNetworkObjFindByName(driver->networks, netname);
|
network = virNetworkObjFindByName(driver->networks, netname);
|
||||||
networkDriverUnlock(driver);
|
|
||||||
if (!network) {
|
if (!network) {
|
||||||
virReportError(VIR_ERR_NO_NETWORK,
|
virReportError(VIR_ERR_NO_NETWORK,
|
||||||
_("no network with matching name '%s'"),
|
_("no network with matching name '%s'"),
|
||||||
|
Loading…
Reference in New Issue
Block a user