forked from pool/libvirt
827fa7dc68
- libxl: fix VM migration on busy hosts 60b4fd90-libxl-rm-vm-finish-phase.patch, e39c66d3-libxl-fix-p2p-migration.patch, 47da84e0-libxl-fix-job-handling-migsrc.patch, 0149464a-libxl-fix-job-handling-migdst.patch, 5ea2abb3-libxl-join-mig-rcv-thread.patch bsc#1108086 - Update to libvirt 4.7.0 - Many incremental improvements and bug fixes, see http://libvirt.org/news.html - Dropped patches: 9ed59012--revert-jansson1.patch, 54f2b5e3-revert-jansson2.patch, b56950fd-revert-jansson3.patch, 6c3d66ac-revert-jansson4.patch, 8e373e6d-revert-jansson5.patch, 6f99de31-revert-jansson6.patch, f204cf51-revert-jansson7.patch, 5a58b5ed-revert-jansson8.patch, 63f6e0e9-revert-jansson9.patch, 8687eba-revert-jansson10.patch, e96e71d8-revert-jansson11.patch, d99a8959-revert-jansson12.patch, 074a7e14-revert-jansson13.patch OBS-URL: https://build.opensuse.org/request/show/636920 OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=704
45 lines
1.8 KiB
Diff
45 lines
1.8 KiB
Diff
commit 60b4fd90213135be0e471756d3d95c68eb3e8f59
|
|
Author: Jim Fehlig <jfehlig@suse.com>
|
|
Date: Fri Aug 24 14:55:03 2018 -0600
|
|
|
|
libxl: migration: defer removing VM until finish phase
|
|
|
|
If for any reason the restore of a VM fails on the destination host
|
|
in a migration operation, the VM is removed (if not persistent) from
|
|
the virDomainObjList, meaning it is no longer available for additional
|
|
cleanup or processing in the finish phase. Defer removing the VM from
|
|
the virDomainObjList until the finish phase, which already contains
|
|
logic to remove the VM.
|
|
|
|
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
|
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
|
|
Index: libvirt-4.7.0/src/libxl/libxl_migration.c
|
|
===================================================================
|
|
--- libvirt-4.7.0.orig/src/libxl/libxl_migration.c
|
|
+++ libvirt-4.7.0/src/libxl/libxl_migration.c
|
|
@@ -264,7 +264,6 @@ libxlDoMigrateDstReceive(void *opaque)
|
|
libxlDriverPrivatePtr driver = args->conn->privateData;
|
|
int recvfd = args->recvfd;
|
|
size_t i;
|
|
- int ret;
|
|
|
|
virObjectRef(vm);
|
|
virObjectLock(vm);
|
|
@@ -274,12 +273,10 @@ libxlDoMigrateDstReceive(void *opaque)
|
|
/*
|
|
* Always start the domain paused. If needed, unpause in the
|
|
* finish phase, after transfer of the domain is complete.
|
|
+ * Errors and cleanup are also handled in the finish phase.
|
|
*/
|
|
- ret = libxlDomainStartRestore(driver, vm, true, recvfd,
|
|
- args->migcookie->xenMigStreamVer);
|
|
-
|
|
- if (ret < 0 && !vm->persistent)
|
|
- virDomainObjListRemove(driver->domains, vm);
|
|
+ libxlDomainStartRestore(driver, vm, true, recvfd,
|
|
+ args->migcookie->xenMigStreamVer);
|
|
|
|
/* Remove all listen socks from event handler, and close them. */
|
|
for (i = 0; i < nsocks; i++) {
|