[PATCH 1/4] qemu: fix wrong errno report in qemuMonitorOpenUnix

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In qemuMonitorOpenUnix, after connect(), virProcessKill will be
invoked when cpid is not empty. But if the qemu-kvm process exited
early, virProcessKill will flush errno as ESRCH, so the wrong
message will be recorded in log as:
error: qemuMonitorOpenUnix:309 : failed to connect to monitor socket: No such process

After patched:
error : qemuMonitorOpenUnix:312 : failed to connect to monitor socket: Connection refused

Signed-off-by: Jincheng Miao <jmiao@xxxxxxxxxx>
---
 src/qemu/qemu_monitor.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
index db3dd73..c8284fe 100644
--- a/src/qemu/qemu_monitor.c
+++ b/src/qemu/qemu_monitor.c
@@ -293,19 +293,22 @@ qemuMonitorOpenUnix(const char *monitor, pid_t cpid)
     }
 
     do {
+        int orig_errno;
         ret = connect(monfd, (struct sockaddr *) &addr, sizeof(addr));
 
         if (ret == 0)
             break;
 
-        if ((errno == ENOENT || errno == ECONNREFUSED) &&
+        orig_errno = errno;
+
+        if ((orig_errno == ENOENT || orig_errno == ECONNREFUSED) &&
             (!cpid || virProcessKill(cpid, 0) == 0)) {
             /* ENOENT       : Socket may not have shown up yet
              * ECONNREFUSED : Leftover socket hasn't been removed yet */
             continue;
         }
 
-        virReportSystemError(errno, "%s",
+        virReportSystemError(orig_errno, "%s",
                              _("failed to connect to monitor socket"));
         goto error;
 
-- 
1.8.3.1

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]