]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
libxl: support VIR_MIGRATE_PERSIST_DEST migration flag
authorJim Fehlig <jfehlig@suse.com>
Mon, 19 Sep 2016 17:34:34 +0000 (11:34 -0600)
committerJim Fehlig <jfehlig@suse.com>
Wed, 21 Sep 2016 21:42:41 +0000 (15:42 -0600)
By default, virt-manager (and likely other libvirt-based apps) sets
the VIR_MIGRATE_PERSIST_DEST flag when invoking the migrate API, which
fails in a Xen setup since the libxl driver does not support the flag.

Persisting a domain is a trivial task in the grand scheme of migration,
so be nice to libvirt apps and add support for VIR_MIGRATE_PERSIST_DEST
in the libxl driver.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
src/libxl/libxl_migration.c
src/libxl/libxl_migration.h

index f1da251c919ce2fe8ff4300768b4d1fdffc630cd..3b0dc74a52be0d04e11d77f246a4a209df4428e5 100644 (file)
@@ -1021,6 +1021,29 @@ libxlDomainMigrationFinish(virConnectPtr dconn,
         event = NULL;
     }
 
+    if (flags & VIR_MIGRATE_PERSIST_DEST) {
+        unsigned int oldPersist = vm->persistent;
+        virDomainDefPtr vmdef;
+
+        vm->persistent = 1;
+        if (!(vmdef = virDomainObjGetPersistentDef(cfg->caps,
+                                                   driver->xmlopt, vm)))
+            goto cleanup;
+
+        if (virDomainSaveConfig(cfg->configDir, cfg->caps, vmdef) < 0)
+            goto cleanup;
+
+        event = virDomainEventLifecycleNewFromObj(vm,
+                                         VIR_DOMAIN_EVENT_DEFINED,
+                                         oldPersist ?
+                                         VIR_DOMAIN_EVENT_DEFINED_UPDATED :
+                                         VIR_DOMAIN_EVENT_DEFINED_ADDED);
+        if (event) {
+            libxlDomainEventQueue(driver, event);
+            event = NULL;
+        }
+    }
+
     if (virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm, cfg->caps) < 0)
         goto cleanup;
 
index c02026dbf9bacf70644bb566a4c685bd361fb13d..8a074a02a3d40ebd595060a323e3be97184ac7b3 100644 (file)
@@ -29,6 +29,7 @@
 # define LIBXL_MIGRATION_FLAGS                  \
     (VIR_MIGRATE_LIVE |                         \
      VIR_MIGRATE_PEER2PEER |                    \
+     VIR_MIGRATE_PERSIST_DEST |                 \
      VIR_MIGRATE_UNDEFINE_SOURCE |              \
      VIR_MIGRATE_PAUSED)