[libvirt] [PATCH v3 4/4] util: Report error in virFileWrapperFdClose()

Daniel P. Berrangé berrange at redhat.com
Tue Feb 19 16:58:08 UTC 2019


On Tue, Feb 19, 2019 at 05:52:31PM +0100, Andrea Bolognani wrote:
> libvirt_iohelper is used internally by the virFileWrapperFd APIs;
> more specifically, in the QEMU driver we have the doCoreDump() and
> qemuDomainSaveMemory() helper functions as users, and those in turn
> end up being called by the implementation of several driver APIs.
> 
> By calling virReportError() if libvirt_iohelper has failed, we
> overwrite whatever generic error message QEMU might have raised
> with the more useful one generated by the helper program.
> 
> After this commit, the user will be able to see the error directly
> instead of having to dig in the journal or libvirtd log.
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=1578741
> 
> Signed-off-by: Andrea Bolognani <abologna at redhat.com>
> ---
>  src/util/virfile.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/src/util/virfile.c b/src/util/virfile.c
> index 8e045279f0..1b61cbd127 100644
> --- a/src/util/virfile.c
> +++ b/src/util/virfile.c
> @@ -337,8 +337,12 @@ virFileWrapperFdClose(virFileWrapperFdPtr wfd)
>  
>      ret = virCommandWait(wfd->cmd, NULL);
>  
> +    /* If the command used to process IO has produced errors, it's fair
> +     * to assume those will be more relevant to the user than whatever
> +     * eg. QEMU can figure out on its own, so it's okay if we end up
> +     * discarding an existing error */
>      if (wfd->err_msg && *wfd->err_msg)
> -        VIR_WARN("iohelper reports: %s", wfd->err_msg);
> +        virReportError(VIR_ERR_OPERATION_FAILED, "%s", wfd->err_msg);

ret needs to be set to -1 in this case

>  
>      wfd->closed = true;

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list