journald: accept EPOLLERR from /dev/kmsg

Also print out unexpected epoll events explictly.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2013-09-19 16:57:57 -05:00
parent b775ab3342
commit f494120944
+15 -5
View File
@@ -1027,7 +1027,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;
}
@@ -1076,8 +1077,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;
}
@@ -1091,7 +1096,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;
}
@@ -1219,7 +1226,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;
}
@@ -1230,6 +1238,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;
}