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