[PATCH] conf: remove misleading comments about access being 'lockless'

Daniel P. Berrangé posted 1 patch 2 years, 1 month ago
Test syntax-check failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20220309113911.939371-1-berrange@redhat.com
src/conf/virdomainobjlist.c          |  4 ++--
src/conf/virinterfaceobj.c           |  2 +-
src/conf/virnodedeviceobj.c          |  2 +-
src/conf/virnwfilterbindingobjlist.c |  2 +-
src/conf/virsecretobj.c              |  2 +-
src/conf/virstorageobj.c             | 10 +++++-----
6 files changed, 11 insertions(+), 11 deletions(-)
[PATCH] conf: remove misleading comments about access being 'lockless'
Posted by Daniel P. Berrangé 2 years, 1 month ago
For the various structs storing lists of objects, the access
to the hash tables is not lockless. The mutex on the object
owning the hash table must be held.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 src/conf/virdomainobjlist.c          |  4 ++--
 src/conf/virinterfaceobj.c           |  2 +-
 src/conf/virnodedeviceobj.c          |  2 +-
 src/conf/virnwfilterbindingobjlist.c |  2 +-
 src/conf/virsecretobj.c              |  2 +-
 src/conf/virstorageobj.c             | 10 +++++-----
 6 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/conf/virdomainobjlist.c b/src/conf/virdomainobjlist.c
index 70b73e87ec..66bd4bcba7 100644
--- a/src/conf/virdomainobjlist.c
+++ b/src/conf/virdomainobjlist.c
@@ -46,11 +46,11 @@ struct _virDomainObjList {
     virObjectRWLockable parent;
 
     /* uuid string -> virDomainObj  mapping
-     * for O(1), lockless lookup-by-uuid */
+     * for O(1), lookup-by-uuid */
     GHashTable *objs;
 
     /* name -> virDomainObj mapping for O(1),
-     * lockless lookup-by-name */
+     * lookup-by-name */
     GHashTable *objsName;
 };
 
diff --git a/src/conf/virinterfaceobj.c b/src/conf/virinterfaceobj.c
index 62b21b5e5f..95279d5b1c 100644
--- a/src/conf/virinterfaceobj.c
+++ b/src/conf/virinterfaceobj.c
@@ -44,7 +44,7 @@ struct _virInterfaceObjList {
     virObjectRWLockable parent;
 
     /* name string -> virInterfaceObj  mapping
-     * for O(1), lockless lookup-by-name */
+     * for O(1), lookup-by-name */
     GHashTable *objsName;
 };
 
diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c
index ba84dce82b..fd23ea5fc7 100644
--- a/src/conf/virnodedeviceobj.c
+++ b/src/conf/virnodedeviceobj.c
@@ -48,7 +48,7 @@ struct _virNodeDeviceObjList {
     virObjectRWLockable parent;
 
     /* name string -> virNodeDeviceObj mapping
-     * for O(1), lockless lookup-by-name */
+     * for O(1), lookup-by-name */
     GHashTable *objs;
 
 };
diff --git a/src/conf/virnwfilterbindingobjlist.c b/src/conf/virnwfilterbindingobjlist.c
index 03441c9c1b..53713d815a 100644
--- a/src/conf/virnwfilterbindingobjlist.c
+++ b/src/conf/virnwfilterbindingobjlist.c
@@ -39,7 +39,7 @@ struct _virNWFilterBindingObjList {
     virObjectRWLockable parent;
 
     /* port dev name -> virNWFilterBindingObj  mapping
-     * for O(1), lockless lookup-by-port dev */
+     * for O(1), lookup-by-port dev */
     GHashTable *objs;
 };
 
diff --git a/src/conf/virsecretobj.c b/src/conf/virsecretobj.c
index ed62856d61..92985c4b63 100644
--- a/src/conf/virsecretobj.c
+++ b/src/conf/virsecretobj.c
@@ -54,7 +54,7 @@ struct _virSecretObjList {
     virObjectRWLockable parent;
 
     /* uuid string -> virSecretObj  mapping
-     * for O(1), lockless lookup-by-uuid */
+     * for O(1), lookup-by-uuid */
     GHashTable *objs;
 };
 
diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c
index d527132184..b57c1cb8b2 100644
--- a/src/conf/virstorageobj.c
+++ b/src/conf/virstorageobj.c
@@ -66,15 +66,15 @@ struct _virStorageVolObjList {
     virObjectRWLockable parent;
 
     /* key string -> virStorageVolObj mapping
-     * for (1), lockless lookup-by-key */
+     * for (1), lookup-by-key */
     GHashTable *objsKey;
 
     /* name string -> virStorageVolObj mapping
-     * for (1), lockless lookup-by-name */
+     * for (1), lookup-by-name */
     GHashTable *objsName;
 
     /* path string -> virStorageVolObj mapping
-     * for (1), lockless lookup-by-path */
+     * for (1), lookup-by-path */
     GHashTable *objsPath;
 };
 
@@ -98,11 +98,11 @@ struct _virStoragePoolObjList {
     virObjectRWLockable parent;
 
     /* uuid string -> virStoragePoolObj mapping
-     * for (1), lockless lookup-by-uuid */
+     * for (1), lookup-by-uuid */
     GHashTable *objs;
 
     /* name string -> virStoragePoolObj mapping
-     * for (1), lockless lookup-by-name */
+     * for (1), lookup-by-name */
     GHashTable *objsName;
 };
 
-- 
2.35.1

Re: [PATCH] conf: remove misleading comments about access being 'lockless'
Posted by Ján Tomko 2 years, 1 month ago
On a Wednesday in 2022, Daniel P. Berrangé wrote:
>For the various structs storing lists of objects, the access
>to the hash tables is not lockless. The mutex on the object
>owning the hash table must be held.
>
>Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
>---
> src/conf/virdomainobjlist.c          |  4 ++--
> src/conf/virinterfaceobj.c           |  2 +-
> src/conf/virnodedeviceobj.c          |  2 +-
> src/conf/virnwfilterbindingobjlist.c |  2 +-
> src/conf/virsecretobj.c              |  2 +-
> src/conf/virstorageobj.c             | 10 +++++-----
> 6 files changed, 11 insertions(+), 11 deletions(-)
>

The confusing terminology seems to originate in
commit a3adcce79568873bbaac76c4a5098b6721702b21

     Convert virDomainObjListPtr to use a hash of domain objects

which removed the need to lock every object when searching,
but the hash table was still protected by the driver lock at the time.

Reviewed-by: Ján Tomko <jtomko@redhat.com>

Jano