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 8097ab4f0c
commit 5843c5ebb4

View file

@ -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;
}