[PATCH 13/43] conf: nwfilter_conf: convert virRWLock to GRWLock

Rafael Fonseca r4f4rfs at gmail.com
Fri Apr 10 13:54:40 UTC 2020


Signed-off-by: Rafael Fonseca <r4f4rfs at gmail.com>
---
 src/conf/nwfilter_conf.c               | 21 +++++++++++----------
 src/conf/nwfilter_conf.h               |  5 ++++-
 src/libvirt_private.syms               |  3 ++-
 src/lxc/lxc_driver.c                   |  4 ++--
 src/nwfilter/nwfilter_driver.c         |  6 +++---
 src/nwfilter/nwfilter_gentech_driver.c |  2 +-
 src/qemu/qemu_driver.c                 | 12 ++++++------
 src/qemu/qemu_migration.c              |  2 +-
 src/qemu/qemu_process.c                |  4 ++--
 9 files changed, 32 insertions(+), 27 deletions(-)

diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c
index 680f4184c3..405cedd002 100644
--- a/src/conf/nwfilter_conf.c
+++ b/src/conf/nwfilter_conf.c
@@ -154,27 +154,33 @@ static const struct int_map chain_priorities[] = {
 /*
  * only one filter update allowed
  */
-static virRWLock updateLock;
+static GRWLock updateLock;
 static bool initialized;
 
 void
 virNWFilterReadLockFilterUpdates(void)
 {
-    virRWLockRead(&updateLock);
+    g_rw_lock_reader_lock(&updateLock);
 }
 
 
 void
 virNWFilterWriteLockFilterUpdates(void)
 {
-    virRWLockWrite(&updateLock);
+    g_rw_lock_writer_lock(&updateLock);
 }
 
 
 void
-virNWFilterUnlockFilterUpdates(void)
+virNWFilterReadUnlockFilterUpdates(void)
 {
-    virRWLockUnlock(&updateLock);
+    g_rw_lock_reader_unlock(&updateLock);
+}
+
+void
+virNWFilterWriteUnlockFilterUpdates(void)
+{
+    g_rw_lock_writer_unlock(&updateLock);
 }
 
 
@@ -3090,9 +3096,6 @@ virNWFilterConfLayerInit(virNWFilterTriggerRebuildCallback cb,
 
     initialized = true;
 
-    if (virRWLockInit(&updateLock) < 0)
-        return -1;
-
     return 0;
 }
 
@@ -3103,8 +3106,6 @@ virNWFilterConfLayerShutdown(void)
     if (!initialized)
         return;
 
-    virRWLockDestroy(&updateLock);
-
     initialized = false;
     rebuildCallback = NULL;
     rebuildOpaque = NULL;
diff --git a/src/conf/nwfilter_conf.h b/src/conf/nwfilter_conf.h
index 13db58e380..875c3a1e0d 100644
--- a/src/conf/nwfilter_conf.h
+++ b/src/conf/nwfilter_conf.h
@@ -582,7 +582,10 @@ void
 virNWFilterReadLockFilterUpdates(void);
 
 void
-virNWFilterUnlockFilterUpdates(void);
+virNWFilterWriteUnlockFilterUpdates(void);
+
+void
+virNWFilterReadUnlockFilterUpdates(void);
 
 typedef int (*virNWFilterTriggerRebuildCallback)(void *opaque);
 
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index ec367653d5..c95c1a078c 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -874,6 +874,7 @@ virNWFilterJumpTargetTypeToString;
 virNWFilterPrintStateMatchFlags;
 virNWFilterPrintTCPFlags;
 virNWFilterReadLockFilterUpdates;
+virNWFilterReadUnlockFilterUpdates;
 virNWFilterRuleActionTypeToString;
 virNWFilterRuleDirectionTypeToString;
 virNWFilterRuleIsProtocolEthernet;
@@ -882,8 +883,8 @@ virNWFilterRuleIsProtocolIPv6;
 virNWFilterRuleProtocolTypeToString;
 virNWFilterSaveConfig;
 virNWFilterTriggerRebuild;
-virNWFilterUnlockFilterUpdates;
 virNWFilterWriteLockFilterUpdates;
+virNWFilterWriteUnlockFilterUpdates;
 
 
 # conf/nwfilter_ipaddrmap.h
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index 851894c459..7b232b4bac 100644
--- a/src/lxc/lxc_driver.c
+++ b/src/lxc/lxc_driver.c
@@ -1030,7 +1030,7 @@ static int lxcDomainCreateWithFiles(virDomainPtr dom,
     virDomainObjEndAPI(&vm);
     virObjectEventStateQueue(driver->domainEventState, event);
     virObjectUnref(cfg);
-    virNWFilterUnlockFilterUpdates();
+    virNWFilterReadUnlockFilterUpdates();
     return ret;
 }
 
@@ -1158,7 +1158,7 @@ lxcDomainCreateXMLWithFiles(virConnectPtr conn,
     virObjectEventStateQueue(driver->domainEventState, event);
     virObjectUnref(caps);
     virObjectUnref(cfg);
-    virNWFilterUnlockFilterUpdates();
+    virNWFilterReadUnlockFilterUpdates();
     return dom;
 }
 
diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c
index 1c407727db..650ef19746 100644
--- a/src/nwfilter/nwfilter_driver.c
+++ b/src/nwfilter/nwfilter_driver.c
@@ -333,7 +333,7 @@ nwfilterStateReload(void)
 
     virNWFilterObjListLoadAllConfigs(driver->nwfilters, driver->configDir);
 
-    virNWFilterUnlockFilterUpdates();
+    virNWFilterWriteUnlockFilterUpdates();
 
     virNWFilterBuildAll(driver, false);
 
@@ -602,7 +602,7 @@ nwfilterDefineXML(virConnectPtr conn,
     if (obj)
         virNWFilterObjUnlock(obj);
 
-    virNWFilterUnlockFilterUpdates();
+    virNWFilterWriteUnlockFilterUpdates();
     nwfilterDriverUnlock();
     return nwfilter;
 }
@@ -643,7 +643,7 @@ nwfilterUndefine(virNWFilterPtr nwfilter)
     if (obj)
         virNWFilterObjUnlock(obj);
 
-    virNWFilterUnlockFilterUpdates();
+    virNWFilterWriteUnlockFilterUpdates();
     nwfilterDriverUnlock();
     return ret;
 }
diff --git a/src/nwfilter/nwfilter_gentech_driver.c b/src/nwfilter/nwfilter_gentech_driver.c
index 6789a4a3fa..4b369e5b1a 100644
--- a/src/nwfilter/nwfilter_gentech_driver.c
+++ b/src/nwfilter/nwfilter_gentech_driver.c
@@ -807,7 +807,7 @@ virNWFilterInstantiateFilterLate(virNWFilterDriverStatePtr driver,
         }
     }
 
-    virNWFilterUnlockFilterUpdates();
+    virNWFilterReadUnlockFilterUpdates();
     virMutexUnlock(&updateMutex);
 
     return rc;
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 31f199fdef..d6ed6d3b3f 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -1796,7 +1796,7 @@ static virDomainPtr qemuDomainCreateXML(virConnectPtr conn,
     virDomainObjEndAPI(&vm);
     virObjectEventStateQueue(driver->domainEventState, event);
     virObjectEventStateQueue(driver->domainEventState, event2);
-    virNWFilterUnlockFilterUpdates();
+    virNWFilterReadUnlockFilterUpdates();
     return dom;
 }
 
@@ -7053,7 +7053,7 @@ qemuDomainRestoreFlags(virConnectPtr conn,
     if (vm && ret < 0)
         qemuDomainRemoveInactiveJob(driver, vm);
     virDomainObjEndAPI(&vm);
-    virNWFilterUnlockFilterUpdates();
+    virNWFilterReadUnlockFilterUpdates();
     return ret;
 }
 
@@ -7590,7 +7590,7 @@ qemuDomainCreateWithFlags(virDomainPtr dom, unsigned int flags)
 
  cleanup:
     virDomainObjEndAPI(&vm);
-    virNWFilterUnlockFilterUpdates();
+    virNWFilterReadUnlockFilterUpdates();
     return ret;
 }
 
@@ -8802,7 +8802,7 @@ qemuDomainAttachDeviceFlags(virDomainPtr dom,
 
  cleanup:
     virDomainObjEndAPI(&vm);
-    virNWFilterUnlockFilterUpdates();
+    virNWFilterReadUnlockFilterUpdates();
     return ret;
 }
 
@@ -8920,7 +8920,7 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr dom,
         virDomainDeviceDefFree(dev_copy);
     virDomainDeviceDefFree(dev);
     virDomainObjEndAPI(&vm);
-    virNWFilterUnlockFilterUpdates();
+    virNWFilterReadUnlockFilterUpdates();
     return ret;
 }
 
@@ -16695,7 +16695,7 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
     virObjectEventStateQueue(driver->domainEventState, event);
     virObjectEventStateQueue(driver->domainEventState, event2);
     virDomainObjEndAPI(&vm);
-    virNWFilterUnlockFilterUpdates();
+    virNWFilterReadUnlockFilterUpdates();
     virCPUDefFree(origCPU);
     virDomainDefFree(config);
     virDomainDefFree(inactiveConfig);
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index bc280e856a..5057aa2528 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -2716,7 +2716,7 @@ qemuMigrationDstPrepareAny(virQEMUDriverPtr driver,
     virDomainObjEndAPI(&vm);
     virObjectEventStateQueue(driver->domainEventState, event);
     qemuMigrationCookieFree(mig);
-    virNWFilterUnlockFilterUpdates();
+    virNWFilterReadUnlockFilterUpdates();
     virErrorRestore(&origErr);
     return ret;
 
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 8ea470f75f..803994afe8 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -8196,7 +8196,7 @@ qemuProcessReconnect(void *opaque)
             qemuDomainRemoveInactiveJob(driver, obj);
     }
     virDomainObjEndAPI(&obj);
-    virNWFilterUnlockFilterUpdates();
+    virNWFilterReadUnlockFilterUpdates();
     virIdentitySetCurrent(NULL);
     return;
 
@@ -8272,7 +8272,7 @@ qemuProcessReconnectHelper(virDomainObjPtr obj,
         qemuDomainRemoveInactiveJobLocked(src->driver, obj);
 
         virDomainObjEndAPI(&obj);
-        virNWFilterUnlockFilterUpdates();
+        virNWFilterReadUnlockFilterUpdates();
         g_clear_object(&data->identity);
         VIR_FREE(data);
         return -1;
-- 
2.25.2





More information about the libvir-list mailing list