From bab44aa96301410543ee49c4e0cbce886f4102da Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Tue, 20 Jul 2021 17:21:34 +0200 Subject: [PATCH] qemu_migration: Unregister close callback only if connection still exists 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 Reviewed-by: Jiri Denemark --- 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; }