mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-10 23:07:44 +00:00
libxl: start domain paused on migration dst
During the perform phase of migration, the domain is started on the dst host in a running state if VIR_MIGRATE_PAUSED flag is not specified. In the finish phase, the domain is also unpaused if VIR_MIGRATE_PAUSED flag is unset. I've noticed this second unpause fails if the domain was already unpaused following the perform phase. This patch changes the perform phase to always start the domain paused, and defers unpausing, if requested, to the finish phase. Unpausing should occur in the finish phase anyhow, where the domain can be properly destroyed if the perform phase fails and migration is cancelled. Signed-off-by: Jim Fehlig <jfehlig@suse.com>
This commit is contained in:
parent
a1f389515c
commit
6038682564
@ -90,14 +90,17 @@ libxlDoMigrateReceive(void *opaque)
|
||||
virDomainObjPtr vm = args->vm;
|
||||
virNetSocketPtr *socks = args->socks;
|
||||
size_t nsocks = args->nsocks;
|
||||
bool paused = args->flags & VIR_MIGRATE_PAUSED;
|
||||
libxlDriverPrivatePtr driver = args->conn->privateData;
|
||||
int recvfd = args->recvfd;
|
||||
size_t i;
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* Always start the domain paused. If needed, unpause in the
|
||||
* finish phase, after transfer of the domain is complete.
|
||||
*/
|
||||
virObjectLock(vm);
|
||||
ret = libxlDomainStart(driver, vm, paused, recvfd);
|
||||
ret = libxlDomainStart(driver, vm, true, recvfd);
|
||||
virObjectUnlock(vm);
|
||||
|
||||
if (ret < 0 && !vm->persistent)
|
||||
|
Loading…
Reference in New Issue
Block a user