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

Andrea Bolognani abologna at redhat.com
Tue Feb 19 16:52:31 UTC 2019

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.


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);
     wfd->closed = true;

More information about the libvir-list mailing list