mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-04 21:47:16 +03:00
Fix locking in qemudDomainCoreDump
The hang fix in d376b7d63ec1ef24ba4c812d58b9a414ddb561f8 was incomplete since it left quite a few {Enter,Exit}Monitor calls which require driver to be unlocked. Since the driver is locked throughout the whole function, {Enter,Exit}MonitorWithDriver need to be used instead to ensure driver is not locked when issuing monitor commands.
This commit is contained in:
parent
e2c059485c
commit
96ac18591a
@ -5165,18 +5165,18 @@ static int qemudDomainCoreDump(virDomainPtr dom,
|
||||
|
||||
/* Pause domain for non-live dump */
|
||||
if (!(flags & VIR_DUMP_LIVE) && vm->state == VIR_DOMAIN_RUNNING) {
|
||||
qemuDomainObjEnterMonitor(vm);
|
||||
qemuDomainObjEnterMonitorWithDriver(driver, vm);
|
||||
if (qemuMonitorStopCPUs(priv->mon) < 0) {
|
||||
qemuDomainObjExitMonitor(vm);
|
||||
qemuDomainObjExitMonitorWithDriver(driver, vm);
|
||||
goto endjob;
|
||||
}
|
||||
qemuDomainObjExitMonitor(vm);
|
||||
qemuDomainObjExitMonitorWithDriver(driver, vm);
|
||||
paused = 1;
|
||||
}
|
||||
|
||||
qemuDomainObjEnterMonitor(vm);
|
||||
qemuDomainObjEnterMonitorWithDriver(driver, vm);
|
||||
ret = qemuMonitorMigrateToCommand(priv->mon, 1, args, path);
|
||||
qemuDomainObjExitMonitor(vm);
|
||||
qemuDomainObjExitMonitorWithDriver(driver, vm);
|
||||
|
||||
if (ret < 0)
|
||||
goto endjob;
|
||||
@ -5205,13 +5205,13 @@ endjob:
|
||||
will support synchronous operations so we always get here after
|
||||
the migration is complete. */
|
||||
else if (resume && paused) {
|
||||
qemuDomainObjEnterMonitor(vm);
|
||||
qemuDomainObjEnterMonitorWithDriver(driver, vm);
|
||||
if (qemuMonitorStartCPUs(priv->mon, dom->conn) < 0) {
|
||||
if (virGetLastError() == NULL)
|
||||
qemuReportError(VIR_ERR_OPERATION_FAILED,
|
||||
"%s", _("resuming after dump failed"));
|
||||
}
|
||||
qemuDomainObjExitMonitor(vm);
|
||||
qemuDomainObjExitMonitorWithDriver(driver, vm);
|
||||
}
|
||||
|
||||
if (qemuDomainObjEndJob(vm) == 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user