[libvirt] [PATCH] qemu: Return meaningful error when qemu dies early

Michal Privoznik mprivozn at redhat.com
Thu Mar 20 14:51:44 UTC 2014


On 17.03.2014 13:21, Jiri Denemark wrote:
> https://bugzilla.redhat.com/show_bug.cgi?id=844378
>
> When qemu dies early after connecting to its monitor but before we
> actually try to read something from the monitor, we would just fail
> domain start with useless message:
>
>      "An error occurred, but the cause is unknown"
>
> This is because the real error gets reported in a monitor EOF handler
> executing within libvirt's event loop.
>
> The fix is to take any error set in qemuMonitor structure and propagate
> it into the thread-local error when qemuMonitorClose is called and no
> thread-local error is set.
>
> Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> ---
>   src/qemu/qemu_monitor.c | 6 ++++++
>   1 file changed, 6 insertions(+)
>
> diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
> index b2af0ae..bca2612 100644
> --- a/src/qemu/qemu_monitor.c
> +++ b/src/qemu/qemu_monitor.c
> @@ -924,6 +924,12 @@ void qemuMonitorClose(qemuMonitorPtr mon)
>           virCondSignal(&mon->notify);
>       }
>
> +    /* Propagate existing monitor error in case the current thread has no
> +     * error set.
> +     */
> +    if (mon->lastError.code != VIR_ERR_OK && !virGetLastError())
> +        virSetError(&mon->lastError);
> +
>       virObjectUnlock(mon);
>       virObjectUnref(mon);
>   }
>

ACK

Michal




More information about the libvir-list mailing list