Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15:Update
libvirt.16766
60b4fd90-libxl-rm-vm-finish-phase.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 60b4fd90-libxl-rm-vm-finish-phase.patch of Package libvirt.16766
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.0.0/src/libxl/libxl_migration.c =================================================================== --- libvirt-4.0.0.orig/src/libxl/libxl_migration.c +++ libvirt-4.0.0/src/libxl/libxl_migration.c @@ -265,8 +265,6 @@ libxlDoMigrateReceive(void *opaque) libxlDriverPrivatePtr driver = args->conn->privateData; int recvfd = args->recvfd; size_t i; - int ret; - bool remove_dom = 0; virObjectRef(vm); virObjectLock(vm); @@ -276,12 +274,10 @@ libxlDoMigrateReceive(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) - remove_dom = true; + libxlDomainStartRestore(driver, vm, true, recvfd, + args->migcookie->xenMigStreamVer); /* Remove all listen socks from event handler, and close them. */ for (i = 0; i < nsocks; i++) { @@ -297,10 +293,6 @@ libxlDoMigrateReceive(void *opaque) libxlDomainObjEndJob(driver, vm); cleanup: - if (remove_dom) { - virDomainObjListRemove(driver->domains, vm); - virObjectLock(vm); - } virDomainObjEndAPI(&vm); }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor