qemu: turn qemuDomainObjExitMonitor into void

This reverts my
    commit dc2fd51fd7
    Check for domain liveness in qemuDomainObjExitMonitor
which fixed the symptoms of the bug later fixed by
    commit 81f50cb92d
    qemu: Avoid calling qemuProcessStop without a job

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Ján Tomko 2021-11-24 13:41:09 +01:00
parent c3e79a9008
commit f1ea5bd506
3 changed files with 4 additions and 22 deletions

View File

@ -170,11 +170,6 @@ To acquire the QEMU monitor lock
- Acquires the virDomainObj *lock
These functions must not be used by an asynchronous job.
Note that the virDomainObj is unlocked during the time in
monitor and it can be changed, e.g. if QEMU dies, qemuProcessStop
may free the live domain definition and put the persistent
definition back in vm->def. The callers should check the return
value of ExitMonitor to see if the domain is still alive.
To acquire the QEMU monitor lock as part of an asynchronous job

View File

@ -5893,24 +5893,11 @@ void qemuDomainObjEnterMonitor(virQEMUDriver *driver,
/* obj must NOT be locked before calling
*
* Should be paired with an earlier qemuDomainObjEnterMonitor() call
*
* Returns -1 if the domain is no longer alive after exiting the monitor.
* In that case, the caller should be careful when using obj's data,
* e.g. the live definition in vm->def has been freed by qemuProcessStop
* and replaced by the persistent definition, so pointers stolen
* from the live definition could no longer be valid.
*/
int qemuDomainObjExitMonitor(virQEMUDriver *driver,
virDomainObj *obj)
void qemuDomainObjExitMonitor(virQEMUDriver *driver,
virDomainObj *obj)
{
qemuDomainObjExitMonitorInternal(driver, obj);
if (!virDomainObjIsActive(obj)) {
if (virGetLastErrorCode() == VIR_ERR_OK)
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
_("domain is no longer running"));
return -1;
}
return 0;
}
/*

View File

@ -487,8 +487,8 @@ qemuMonitor *qemuDomainGetMonitor(virDomainObj *vm)
void qemuDomainObjEnterMonitor(virQEMUDriver *driver,
virDomainObj *obj)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
int qemuDomainObjExitMonitor(virQEMUDriver *driver,
virDomainObj *obj)
void qemuDomainObjExitMonitor(virQEMUDriver *driver,
virDomainObj *obj)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
int qemuDomainObjEnterMonitorAsync(virQEMUDriver *driver,
virDomainObj *obj,