[PATCH] virtlockd: Don't report error if lockspace exists

Daniel Henrique Barboza danielhb413 at gmail.com
Wed Jul 7 13:16:43 UTC 2021



On 6/30/21 8:17 PM, Jim Fehlig wrote:
> When the qemu or libxl driver is configured to use lockd and
> file_lockspace_dir is set, virtlockd emits an error when libvirtd
> is retarted
> 
> May 25 15:44:31 virt81 virtlockd[7723]: Requested operation is not
> valid: Lockspace for path /data/libvirtd/lockspace already exists
> 
> There is really no need to fail when the lockspace already exists,
> paricularly since the user is expected to create the lockspace
> specified in file_lockspace_dir. Failure to do so will prevent
> starting any domains
> 
> virsh start test
> error: Failed to start domain 'test'
> error: Unable to open/create resource /data/libvirtd/lockspace/de22c4bf931e7c48b49e8ca64b477d44e78a51543e534df488b05ccd08ec5caa: No such file or directory
> 
> Also, virLockManagerLockDaemonSetupLockspace already has logic to ignore
> the error. Since callers are not interested in the error, change
> virtlockd to not report or return an error when the specified lockspace
> already exists.
> 
> Signed-off-by: Jim Fehlig <jfehlig at suse.com>
> ---

Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>

> 
> In response to my earlier query about this problem
> 
> https://listman.redhat.com/archives/libvir-list/2021-May/msg00872.html
> 
>   src/locking/lock_daemon_dispatch.c |  5 ++---
>   src/locking/lock_driver_lockd.c    | 11 ++---------
>   2 files changed, 4 insertions(+), 12 deletions(-)
> 
> diff --git a/src/locking/lock_daemon_dispatch.c b/src/locking/lock_daemon_dispatch.c
> index e8b9832453..13e688f2e2 100644
> --- a/src/locking/lock_daemon_dispatch.c
> +++ b/src/locking/lock_daemon_dispatch.c
> @@ -405,9 +405,8 @@ virLockSpaceProtocolDispatchCreateLockSpace(virNetServer *server G_GNUC_UNUSED,
>       }
>   
>       if (virLockDaemonFindLockSpace(lockDaemon, args->path) != NULL) {
> -        virReportError(VIR_ERR_OPERATION_INVALID,
> -                       _("Lockspace for path %s already exists"),
> -                       args->path);
> +        VIR_DEBUG("Lockspace for path %s already exists", args->path);
> +        rv = 0;
>           goto cleanup;
>       }
>   
> diff --git a/src/locking/lock_driver_lockd.c b/src/locking/lock_driver_lockd.c
> index 3a7386af30..87afdbfb78 100644
> --- a/src/locking/lock_driver_lockd.c
> +++ b/src/locking/lock_driver_lockd.c
> @@ -281,15 +281,8 @@ static int virLockManagerLockDaemonSetupLockspace(const char *path)
>                                   VIR_LOCK_SPACE_PROTOCOL_PROC_CREATE_LOCKSPACE,
>                                   0, NULL, NULL, NULL,
>                                   (xdrproc_t)xdr_virLockSpaceProtocolCreateLockSpaceArgs, (char*)&args,
> -                                (xdrproc_t)xdr_void, NULL) < 0) {
> -        if (virGetLastErrorCode() == VIR_ERR_OPERATION_INVALID) {
> -            /* The lockspace already exists */
> -            virResetLastError();
> -            rv = 0;
> -        } else {
> -            goto cleanup;
> -        }
> -    }
> +                                (xdrproc_t)xdr_void, NULL) < 0)
> +        goto cleanup;
>   
>       rv = 0;
>   
> 




More information about the libvir-list mailing list