[libvirt] [PATCH] qemu: Prohibit migration of guests with host devices

Jiri Denemark jdenemar at redhat.com
Thu Oct 14 07:38:27 UTC 2010


Explicitly raising a nice error in the case user tries to migrate a
guest with assigned host devices is much better than waiting for a
mysterious error with no clue for the reason.
---
 src/qemu/qemu_driver.c |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index f68995f..16f34f7 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -10380,6 +10380,19 @@ static void qemuDomainEventQueue(struct qemud_driver *driver,
 
 /* Migration support. */
 
+static bool ATTRIBUTE_NONNULL(1)
+qemuDomainIsMigratable(virDomainDefPtr def)
+{
+    if (def->nhostdevs > 0) {
+        qemuReportError(VIR_ERR_OPERATION_INVALID,
+                _("Domain with assigned host devices cannot be migrated"));
+        return false;
+    }
+
+    return true;
+}
+
+
 /* Tunnelled migration stream support */
 struct qemuStreamMigFile {
     int fd;
@@ -10709,6 +10722,9 @@ qemudDomainMigratePrepareTunnel(virConnectPtr dconn,
         goto cleanup;
     }
 
+    if (!qemuDomainIsMigratable(def))
+        goto cleanup;
+
     /* Target domain name, maybe renamed. */
     if (dname) {
         VIR_FREE(def->name);
@@ -10976,6 +10992,9 @@ qemudDomainMigratePrepare2 (virConnectPtr dconn,
         goto cleanup;
     }
 
+    if (!qemuDomainIsMigratable(def))
+        goto cleanup;
+
     /* Target domain name, maybe renamed. */
     if (dname) {
         VIR_FREE(def->name);
-- 
1.7.3.1




More information about the libvir-list mailing list