mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +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>
This commit is contained in:
parent
15120b8c61
commit
e80b84a743
@ -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…
Reference in New Issue
Block a user