Re: [systemd-devel] [PATCH] Accept EPOLLERR from /dev/kmsg

2013-09-26 Thread Zbigniew Jędrzejewski-Szmek
On Thu, Sep 19, 2013 at 05:03:33PM -0500, Zbigniew Jędrzejewski-Szmek wrote:
> Also print out unexpected epoll events explictly.
> ---
> Hi,
> could you try with the following patch?
Seeing no objections, I pushed the patch :).

Zbyszek
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel


[systemd-devel] [PATCH] Accept EPOLLERR from /dev/kmsg

2013-09-19 Thread Zbigniew Jędrzejewski-Szmek
Also print out unexpected epoll events explictly.
---
Hi,
could you try with the following patch?

Zbyszek

 src/journal/journald-server.c | 20 +++-
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
index cc8ce0d..e888480 100644
--- a/src/journal/journald-server.c
+++ b/src/journal/journald-server.c
@@ -1060,7 +1060,8 @@ int process_event(Server *s, struct epoll_event *ev) {
 ssize_t n;
 
 if (ev->events != EPOLLIN) {
-log_error("Got invalid event from epoll.");
+log_error("Got invalid event from epoll for %s: 
%"PRIx32,
+  "signal fd", ev->events);
 return -EIO;
 }
 
@@ -1113,8 +1114,12 @@ int process_event(Server *s, struct epoll_event *ev) {
 } else if (ev->data.fd == s->dev_kmsg_fd) {
 int r;
 
-if (ev->events != EPOLLIN) {
-log_error("Got invalid event from epoll.");
+if (ev->events & EPOLLERR)
+log_warning("/dev/kmsg buffer overrun, some messages 
lost.");
+
+if (!(ev->events & EPOLLIN)) {
+log_error("Got invalid event from epoll for %s: 
%"PRIx32,
+  "/dev/kmsg", ev->events);
 return -EIO;
 }
 
@@ -1128,7 +1133,9 @@ int process_event(Server *s, struct epoll_event *ev) {
ev->data.fd == s->syslog_fd) {
 
 if (ev->events != EPOLLIN) {
-log_error("Got invalid event from epoll.");
+log_error("Got invalid event from epoll for %s: 
%"PRIx32,
+  ev->data.fd == s->native_fd ? "native fd" : 
"syslog fd",
+  ev->events);
 return -EIO;
 }
 
@@ -1249,7 +1256,8 @@ int process_event(Server *s, struct epoll_event *ev) {
 } else if (ev->data.fd == s->stdout_fd) {
 
 if (ev->events != EPOLLIN) {
-log_error("Got invalid event from epoll.");
+log_error("Got invalid event from epoll for %s: 
%"PRIx32,
+  "stdout fd", ev->events);
 return -EIO;
 }
 
@@ -1260,6 +1268,8 @@ int process_event(Server *s, struct epoll_event *ev) {
 StdoutStream *stream;
 
 if ((ev->events|EPOLLIN|EPOLLHUP) != (EPOLLIN|EPOLLHUP)) {
+log_error("Got invalid event from epoll for %s: 
%"PRIx32,
+  "stdout stream", ev->events);
 log_error("Got invalid event from epoll.");
 return -EIO;
 }
-- 
1.8.3.1

___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel