mirror of https://gitee.com/openkylin/libvirt.git
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>
This commit is contained in:
parent
e447775273
commit
60b4fd9021
|
@ -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++) {
|
||||
|
|
Loading…
Reference in New Issue