]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Extra check for NBD URI being specified
authorMartin Kletzander <mkletzan@redhat.com>
Wed, 16 Dec 2020 10:34:50 +0000 (11:34 +0100)
committerMartin Kletzander <mkletzan@redhat.com>
Wed, 16 Dec 2020 11:19:05 +0000 (12:19 +0100)
It must be used when migration URI uses `unix:` transport because otherwise we
cannot just guess where to connect for disk migration.

https://bugzilla.redhat.com/show_bug.cgi?id=1638889

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
src/qemu/qemu_driver.c

index 5f0fb0a55fee21ec71fdb0f41446fc47ca0e1746..9caaa07237200b22a1ecda63f8651ef79a9974d8 100644 (file)
@@ -11503,6 +11503,16 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn,
                                                    QEMU_MIGRATION_DESTINATION)))
         return -1;
 
+    if (flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_INC) ||
+        nmigrate_disks > 0) {
+        if (uri_in && STRPREFIX(uri_in, "unix:") && !nbdURI) {
+            virReportError(VIR_ERR_INVALID_ARG, "%s",
+                           _("NBD URI must be supplied when "
+                             "migration URI uses UNIX transport method"));
+            return -1;
+        }
+    }
+
     if (nbdURI && nbdPort) {
         virReportError(VIR_ERR_INVALID_ARG, "%s",
                        _("Both port and URI requested for disk migration "
@@ -11743,6 +11753,7 @@ qemuDomainMigratePerform3Params(virDomainPtr dom,
                                 &persist_xml) < 0)
         goto cleanup;
 
+
     if (nbdURI && nbdPort) {
         virReportError(VIR_ERR_INVALID_ARG, "%s",
                        _("Both port and URI requested for disk migration "
@@ -11766,6 +11777,16 @@ qemuDomainMigratePerform3Params(virDomainPtr dom,
     if (nmigrate_disks < 0)
         goto cleanup;
 
+    if (flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_INC) ||
+        nmigrate_disks > 0) {
+        if (uri && STRPREFIX(uri, "unix:") && !nbdURI) {
+            virReportError(VIR_ERR_INVALID_ARG, "%s",
+                           _("NBD URI must be supplied when "
+                             "migration URI uses UNIX transport method"));
+            return -1;
+        }
+    }
+
     if (!(migParams = qemuMigrationParamsFromFlags(params, nparams, flags,
                                                    QEMU_MIGRATION_SOURCE)))
         goto cleanup;