mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-23 21:15:20 +00:00
Fix hang in qemudDomainCoreDump.
Currently if you dump the core of a qemu guest with qemudDomainCoreDump, subsequent commands will hang up libvirtd. This is because qemudDomainCoreDump uses qemuDomainWaitForMigrationComplete, which expects the qemuDriverLock to be held when it's called. This patch does the simple thing and moves the qemuDriveUnlock to the end of the qemudDomainCoreDump so that the driver lock is held for the entirety of the call (as it is done in qemudDomainSave). We will probably want to make the lock more fine-grained than that in the future, but we can fix both qemudDomainCoreDump and qemudDomainSave at the same time. Signed-off-by: Chris Lalancette <clalance@redhat.com>
This commit is contained in:
parent
2c555d87b0
commit
d376b7d63e
@ -4389,7 +4389,6 @@ static int qemudDomainCoreDump(virDomainPtr dom,
|
||||
|
||||
qemuDriverLock(driver);
|
||||
vm = virDomainFindByUUID(&driver->domains, dom->uuid);
|
||||
qemuDriverUnlock(driver);
|
||||
|
||||
if (!vm) {
|
||||
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
||||
@ -4400,7 +4399,7 @@ static int qemudDomainCoreDump(virDomainPtr dom,
|
||||
}
|
||||
priv = vm->privateData;
|
||||
|
||||
if (qemuDomainObjBeginJob(vm) < 0)
|
||||
if (qemuDomainObjBeginJobWithDriver(driver, vm) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (!virDomainObjIsActive(vm)) {
|
||||
@ -4498,6 +4497,7 @@ cleanup:
|
||||
virDomainObjUnlock(vm);
|
||||
if (event)
|
||||
qemuDomainEventQueue(driver, event);
|
||||
qemuDriverUnlock(driver);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user