mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-11 23:37:42 +00:00
libxl: acquire a job when receiving a migrating domain
Commit f86ae403 moved acquiring a job from libxlDomainStart() to its callers. One spot missed was in libxlDoMigrateReceive(). Acquire a job in libxlDoMigrateReceive() before calling libxlDomainStart(). Signed-off-by: Jim Fehlig <jfehlig@suse.com> (cherry picked from commit e80b84a74324cd535ec7232c4e1653805af2103a)
This commit is contained in:
parent
b4fefefc1b
commit
14aa9d65c1
@ -95,17 +95,20 @@ libxlDoMigrateReceive(void *opaque)
|
||||
int recvfd = args->recvfd;
|
||||
size_t i;
|
||||
int ret;
|
||||
bool remove_dom = 0;
|
||||
|
||||
virObjectLock(vm);
|
||||
if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0)
|
||||
goto cleanup;
|
||||
|
||||
/*
|
||||
* 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, true, recvfd);
|
||||
virObjectUnlock(vm);
|
||||
|
||||
if (ret < 0 && !vm->persistent)
|
||||
virDomainObjListRemove(driver->domains, vm);
|
||||
remove_dom = true;
|
||||
|
||||
/* Remove all listen socks from event handler, and close them. */
|
||||
for (i = 0; i < nsocks; i++) {
|
||||
@ -117,6 +120,17 @@ libxlDoMigrateReceive(void *opaque)
|
||||
args->nsocks = 0;
|
||||
VIR_FORCE_CLOSE(recvfd);
|
||||
virObjectUnref(args);
|
||||
|
||||
if (!libxlDomainObjEndJob(driver, vm))
|
||||
vm = NULL;
|
||||
|
||||
cleanup:
|
||||
if (remove_dom && vm) {
|
||||
virDomainObjListRemove(driver->domains, vm);
|
||||
vm = NULL;
|
||||
}
|
||||
if (vm)
|
||||
virObjectUnlock(vm);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user