[PATCH] qemu_migration: Unregister close callback only if connection still exists

Jiri Denemark jdenemar at redhat.com
Wed Jul 21 06:40:38 UTC 2021


On Tue, Jul 20, 2021 at 18:19:54 +0200, Michal Privoznik wrote:
> When doing a peer-to-peer migration it may happen that the
> connection to the destination disappears. If that happens,
> there's no point in trying to unregister the close callback
> because the connection is closed already. It results only in
> polluting logs with this message:
> 
>   error : virNetSocketReadWire:1814 : End of file while reading data: : Input/output error
> 
> and the reason for that is unregistering a connection callback
> results in RPC (among other things).
> 
> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1918211
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
>  src/qemu/qemu_migration.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> index a4f44b465d..4d651aeb1a 100644
> --- a/src/qemu/qemu_migration.c
> +++ b/src/qemu/qemu_migration.c
> @@ -5214,9 +5214,11 @@ qemuMigrationSrcPerformPeer2Peer(virQEMUDriver *driver,
>  
>   cleanup:
>      virErrorPreserveLast(&orig_err);
> -    qemuDomainObjEnterRemote(vm);
> -    virConnectUnregisterCloseCallback(dconn, qemuMigrationSrcConnectionClosed);
> -    ignore_value(qemuDomainObjExitRemote(vm, false));
> +    if (dconn && virConnectIsAlive(dconn) == 1) {
> +        qemuDomainObjEnterRemote(vm);
> +        virConnectUnregisterCloseCallback(dconn, qemuMigrationSrcConnectionClosed);
> +        ignore_value(qemuDomainObjExitRemote(vm, false));
> +    }
>      virErrorRestore(&orig_err);
>      return ret;
>  }

Reviewed-by: Jiri Denemark <jdenemar at redhat.com>




More information about the libvir-list mailing list