In one of recent patches the way that we start NBD server for incoming migration was reworked (v6.8.0-rc1~298). A new boolean was introduced that tracks whether the NBD server was started so that we don't start it twice nor record in the port in the port allocator twice. Well, this idea is good, but in the implementation the boolean is never set, so we are reserving the port twice and would be starting the NBD server twice too if it wasn't for port reservation fail. Fixes: e74d627bb3bc2684cbe3edc1e2f7cc745b4e1ff3 Reported-by: Vjaceslavs Klimovs <vklimovs@xxxxxxxxx> Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- 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 2f5d61f8e7..6f764b0c73 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -479,9 +479,11 @@ qemuMigrationDstStartNBDServer(virQEMUDriverPtr driver, QEMU_ASYNC_JOB_MIGRATION_IN) < 0) goto cleanup; - if (!server_started && - qemuMonitorNBDServerStart(priv->mon, &server, tls_alias) < 0) - goto exit_monitor; + if (!server_started) { + if (qemuMonitorNBDServerStart(priv->mon, &server, tls_alias) < 0) + goto exit_monitor; + server_started = true; + } if (qemuBlockExportAddNBD(vm, diskAlias, disk->src, diskAlias, true, NULL) < 0) goto exit_monitor; -- 2.26.2