]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Don't try to start NBD server twice
authorMichal Privoznik <mprivozn@redhat.com>
Mon, 26 Oct 2020 08:49:35 +0000 (09:49 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 26 Oct 2020 12:08:47 +0000 (13:08 +0100)
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@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
src/qemu/qemu_migration.c

index 2f5d61f8e7ce1f9b25e7740d7273f180c5ec0d84..6f764b0c73336d78d9eae9c28c10474180e05368 100644 (file)
@@ -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;