[libvirt] [PATCH v3 15/28] locking: Introduce virLockManagerClearResources

John Ferlan jferlan at redhat.com
Thu Aug 30 22:08:53 UTC 2018



On 08/27/2018 04:08 AM, Michal Privoznik wrote:
> This is a counterpart to virLockManagerAddResource. It is going
> to be handy when using one lock manager to lock multiple files
> step by step.

OK, sure, but knowing what the purpose is now would perhaps be more a
more useful commit message.

> 
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
>  src/libvirt_private.syms        |  1 +
>  src/locking/lock_driver.h       |  5 +++++
>  src/locking/lock_driver_lockd.c | 27 ++++++++++++++++++++++++++-
>  src/locking/lock_driver_nop.c   |  6 ++++++
>  src/locking/lock_manager.c      | 12 ++++++++++++
>  src/locking/lock_manager.h      |  3 +++
>  6 files changed, 53 insertions(+), 1 deletion(-)
> 

Not supported for lock_driver_sanlock.c... It doesn't seem it would be
difficult to handle, but yeah, that's not our problem and if we're
calling it old technology, then I'm fine with not changing.

> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 47ea35f864..42f15f117e 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -1293,6 +1293,7 @@ virDomainLockProcessStart;
>  # locking/lock_manager.h
>  virLockManagerAcquire;
>  virLockManagerAddResource;
> +virLockManagerClearResources;
>  virLockManagerFree;
>  virLockManagerInquire;
>  virLockManagerNew;
> diff --git a/src/locking/lock_driver.h b/src/locking/lock_driver.h
> index 9be0abcfba..59c4c3aac7 100644
> --- a/src/locking/lock_driver.h
> +++ b/src/locking/lock_driver.h
> @@ -228,6 +228,10 @@ typedef int (*virLockDriverAddResource)(virLockManagerPtr man,
>                                          virLockManagerParamPtr params,
>                                          unsigned int flags);
>  
> +

No verbose documentation on this?  The others have it and this needs it.

> +typedef int (*virLockDriverClearResource)(virLockManagerPtr mgr,
> +                                          unsigned int flags);
> +
>  /**
>   * virLockDriverAcquire:
>   * @manager: the lock manager context
> @@ -313,6 +317,7 @@ struct _virLockDriver {
>      virLockDriverFree drvFree;
>  
>      virLockDriverAddResource drvAddResource;
> +    virLockDriverClearResource drvClearResources;
>  
>      virLockDriverAcquire drvAcquire;
>      virLockDriverRelease drvRelease;
> diff --git a/src/locking/lock_driver_lockd.c b/src/locking/lock_driver_lockd.c
> index d7cb183d7a..4883e89ac6 100644
> --- a/src/locking/lock_driver_lockd.c
> +++ b/src/locking/lock_driver_lockd.c
> @@ -402,8 +402,9 @@ static int virLockManagerLockDaemonDeinit(void)
>      return 0;
>  }
>  
> +
>  static void
> -virLockManagerLockDaemonPrivateFree(virLockManagerLockDaemonPrivatePtr priv)
> +virLockManagerLockDaemonFreeResources(virLockManagerLockDaemonPrivatePtr priv)
>  {
>      size_t i;
>  
> @@ -415,6 +416,17 @@ virLockManagerLockDaemonPrivateFree(virLockManagerLockDaemonPrivatePtr priv)
>          VIR_FREE(priv->resources[i].name);
>      }
>      VIR_FREE(priv->resources);
> +    priv->nresources = 0;
> +}
> +
> +
> +static void
> +virLockManagerLockDaemonPrivateFree(virLockManagerLockDaemonPrivatePtr priv)
> +{
> +    if (!priv)
> +        return;
> +
> +    virLockManagerLockDaemonFreeResources(priv);


Theoretically could have been done in a separate patch, but then there's
this thing about overkill...;-)

>  
>      switch (priv->type) {
>      case VIR_LOCK_MANAGER_OBJECT_TYPE_DOMAIN:
> @@ -733,6 +745,18 @@ static int virLockManagerLockDaemonAddResource(virLockManagerPtr lock,
>  }
>  
>  
> +static int virLockManagerLockDaemonClearResources(virLockManagerPtr lock,
> +                                                  unsigned int flags)

static int
virLock...

Consistency with new API's vs. consistency with existing API's... Tough
one not to say something about.

With suggested amendments,

Reviewed-by: John Ferlan <jferlan at redhat.com>

John

[...]




More information about the libvir-list mailing list