
On Thu, 2022-02-17 at 13:15 +0000, Daniel P. Berrangé wrote:
On Thu, Feb 17, 2022 at 02:01:01PM +0100, Tim Wiederhake wrote:
Really should be giving an explanation of why this change is required.
Added locally to commit message: Making the mutex static and independent of the lifetime of the driver object allows for simplification of mutex handling during the object's initialization and cleanup using VIR_LOCK_GUARD's unlock-on-scope-exit behavior. Regards, Tim
Signed-off-by: Tim Wiederhake <twiederh@redhat.com> --- src/conf/virstorageobj.h | 2 -- src/storage/storage_driver.c | 11 ++++------- 2 files changed, 4 insertions(+), 9 deletions(-)
diff --git a/src/conf/virstorageobj.h b/src/conf/virstorageobj.h index 523bdec244..ad6005f153 100644 --- a/src/conf/virstorageobj.h +++ b/src/conf/virstorageobj.h @@ -31,8 +31,6 @@ typedef struct _virStoragePoolObjList virStoragePoolObjList; typedef struct _virStorageDriverState virStorageDriverState; struct _virStorageDriverState { - virMutex lock; - /* pid file FD, ensures two copies of the driver can't use the same root */ int lockFD; diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 97e0d9b3a0..05675a5539 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -57,6 +57,8 @@ VIR_LOG_INIT("storage.storage_driver"); static virStorageDriverState *driver; +static virMutex mutex = VIR_MUTEX_INITIALIZER; + static int storageStateCleanup(void); typedef struct _virStorageVolStreamInfo virStorageVolStreamInfo; @@ -67,11 +69,11 @@ struct _virStorageVolStreamInfo { static void storageDriverLock(void) { - virMutexLock(&driver->lock); + virMutexLock(&mutex); } static void storageDriverUnlock(void) { - virMutexUnlock(&driver->lock); + virMutexUnlock(&mutex); } @@ -270,10 +272,6 @@ storageStateInitialize(bool privileged, driver = g_new0(virStorageDriverState, 1); driver->lockFD = -1; - if (virMutexInit(&driver->lock) < 0) { - VIR_FREE(driver); - return VIR_DRV_STATE_INIT_ERROR; - } storageDriverLock(); if (!(driver->pools = virStoragePoolObjListNew())) @@ -392,7 +390,6 @@ storageStateCleanup(void) VIR_FREE(driver->autostartDir); VIR_FREE(driver->stateDir); storageDriverUnlock(); - virMutexDestroy(&driver->lock); VIR_FREE(driver); return 0; -- 2.31.1
Regards, Daniel