]> xenbits.xensource.com Git - libvirt.git/commitdiff
util: vireventglibwatch: watch for G_IO_HUP and G_IO_ERR
authorJán Tomko <jtomko@redhat.com>
Wed, 19 Feb 2020 00:00:49 +0000 (01:00 +0100)
committerJán Tomko <jtomko@redhat.com>
Mon, 24 Feb 2020 02:19:25 +0000 (03:19 +0100)
To more closely match the previous usage in virEventPollDispatchHandles,
where called the handle callback for any revents returned by poll.

This should fix the virtlogd error on subsequent domain startup:
  error: can't connect to virtlogd: Cannot open log file:
  '/var/log/libvirt/qemu/f28live.log': Device or resource busy
as well as virtlogd spinning caused by virLogHandlerDomainLogFileEvent
never being called on hangup.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Fixes: f8ab47cb4491dd72d866c1a96a9d94b8c3341de9
Fixes: 946a25274c46ffff46323c62f567ae7e753aa921
Tested-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/util/vireventglibwatch.c

index 7694e74f238a3427757a51c7880062b185946e63..178707f6b704914cf154291cf03714294a1e8ebf 100644 (file)
@@ -89,11 +89,11 @@ GSource *virEventGLibCreateSocketWatch(int fd,
                           sizeof(virEventGLibFDSource));
     ssource = (virEventGLibFDSource *)source;
 
-    ssource->condition = condition;
+    ssource->condition = condition | G_IO_HUP | G_IO_ERR;
     ssource->fd = fd;
 
     ssource->pollfd.fd = fd;
-    ssource->pollfd.events = condition;
+    ssource->pollfd.events = condition | G_IO_HUP | G_IO_ERR;
 
     g_source_add_poll(source, &ssource->pollfd);