On (20/02/14 10:41), Sergey Senozhatsky wrote: > On (20/02/13 23:36), John Ogness wrote: [..] > > We could implement it such that devkmsg_read() will skip over data-less > > records instead of issuing an EPIPE. (That is what dmesg does.) But then > > do we need EPIPE at all? The reader can see that is has missed records > > by tracking the sequence number, so could we just get rid of EPIPE? Then > > cat(1) would be a great tool to view the raw ringbuffer. Please share > > your thoughts on this. > > Looking at systemd/src/journal/journald-kmsg.c : server_read_dev_kmsg() > -EPIPE is just one of the erronos they handle, nothing special. Could it > be the case that some other loggers would have special handling for EPIPE? > I'm not sure, let's look around. rsyslog static void readkmsg(void) { int i; uchar pRcv[8192+1]; char errmsg[2048]; for (;;) { dbgprintf("imkmsg waiting for kernel log line\n"); /* every read() from the opened device node receives one record of the printk buffer */ i = read(fklog, pRcv, 8192); if (i > 0) { /* successful read of message of nonzero length */ pRcv[i] = '\0'; } else if (i == -EPIPE) { imkmsgLogIntMsg(LOG_WARNING, "imkmsg: some messages in circular buffer got overwritten"); continue; } else { /* something went wrong - error or zero length message */ if (i < 0 && errno != EINTR && errno != EAGAIN) { /* error occured */ imkmsgLogIntMsg(LOG_ERR, "imkmsg: error reading kernel log - shutting down: %s", rs_strerror_r(errno, errmsg, sizeof(errmsg))); fklog = -1; } break; } submitSyslog(pRcv); } } So EPIPE errno better stay around. -ss _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec