From: Ján Tomko Date: Wed, 24 Nov 2021 12:41:09 +0000 (+0100) Subject: qemu: turn qemuDomainObjExitMonitor into void X-Git-Tag: v8.0.0-rc1~467 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f1ea5bd506b6e00aa8bf55940b147d3c0fe7f124;p=thirdparty%2Flibvirt.git qemu: turn qemuDomainObjExitMonitor into void This reverts my commit dc2fd51fd727bbb6de172e0ca4b7dd307bb99180 Check for domain liveness in qemuDomainObjExitMonitor which fixed the symptoms of the bug later fixed by commit 81f50cb92d16643bcd749e3ab5b404b8b7cec643 qemu: Avoid calling qemuProcessStop without a job Signed-off-by: Ján Tomko Reviewed-by: Michal Privoznik --- diff --git a/src/qemu/THREADS.txt b/src/qemu/THREADS.txt index ff10bef9a0..98aa3165e3 100644 --- a/src/qemu/THREADS.txt +++ b/src/qemu/THREADS.txt @@ -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 diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 94b4081da6..741123fe53 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -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; } /* diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 596add616d..8173c39cdb 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -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,