mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-12 07:42:56 +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;
|
int recvfd = args->recvfd;
|
||||||
size_t i;
|
size_t i;
|
||||||
int ret;
|
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
|
* Always start the domain paused. If needed, unpause in the
|
||||||
* finish phase, after transfer of the domain is complete.
|
* finish phase, after transfer of the domain is complete.
|
||||||
*/
|
*/
|
||||||
virObjectLock(vm);
|
|
||||||
ret = libxlDomainStart(driver, vm, true, recvfd);
|
ret = libxlDomainStart(driver, vm, true, recvfd);
|
||||||
virObjectUnlock(vm);
|
|
||||||
|
|
||||||
if (ret < 0 && !vm->persistent)
|
if (ret < 0 && !vm->persistent)
|
||||||
virDomainObjListRemove(driver->domains, vm);
|
remove_dom = true;
|
||||||
|
|
||||||
/* Remove all listen socks from event handler, and close them. */
|
/* Remove all listen socks from event handler, and close them. */
|
||||||
for (i = 0; i < nsocks; i++) {
|
for (i = 0; i < nsocks; i++) {
|
||||||
@ -117,6 +120,17 @@ libxlDoMigrateReceive(void *opaque)
|
|||||||
args->nsocks = 0;
|
args->nsocks = 0;
|
||||||
VIR_FORCE_CLOSE(recvfd);
|
VIR_FORCE_CLOSE(recvfd);
|
||||||
virObjectUnref(args);
|
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