Hi Kay, On Thu, May 3, 2012 at 2:29 AM, Kay Sievers <[email protected]> wrote: > From: Kay Sievers <[email protected]> [...] > case SYSLOG_ACTION_SIZE_UNREAD: > - error = log_end - log_start; > + raw_spin_lock_irq(&logbuf_lock); > + if (syslog_seq < log_first_seq) { > + /* messages are gone, move to first one */ > + syslog_seq = log_first_seq; > + syslog_idx = log_first_idx; > + } > + if (from_file) { > + /* > + * Short-cut for poll(/"proc/kmsg") which simply > checks > + * for pending data, not the size; return the count of > + * records, not the length. > + */ > + error = log_next_idx - syslog_idx; > + } else { > + u64 seq; > + u32 idx; > + > + error = 0; > + seq = syslog_seq; > + idx = syslog_idx; > + while (seq < log_next_seq) { > + error += syslog_print_line(idx, NULL, 0); > + idx = log_next(idx); > + seq++; > + } > + } > + raw_spin_unlock_irq(&logbuf_lock); > break; [...]
It looks as though the changes here have broken SYSLOG_ACTION_SIZE_UNREAD. On a 2.6.31 system, immediately after SYSLOG_ACTION_READ_CLEAR, a SYSLOG_ACTION_SIZE_UNREAD returns 0. On 3.5, immediately after SYSLOG_ACTION_READ_CLEAR, the value returned by SYSLOG_ACTION_SIZE_UNREAD is unchanged (i.e., assuming that the value returned was non-zero before SYSLOG_ACTION_SIZE_UNREAD, it is still nonzero afterward), even though a subsequent SYSLOG_ACTION_READ_CLEAR indicates that there are zero bytes to read. (All tests conducted with (r)syslogd stopped.) Cheers, Michael -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

