From 8302b8b1662163ecb0335ec821427b070567a31b Mon Sep 17 00:00:00 2001 From: Tom Zanussi Date: Tue, 20 Dec 2005 13:10:22 -0600 Subject: [PATCH] --- yaml --- r: 15271 b: refs/heads/master c: fd30fc3256824f03c2ff9317269d66f72f7042ca h: refs/heads/master i: 15269: 96ea305247b4f11bc3d5d0da3307def94f08ee9d 15267: d4f31224238be46b50a8b0bf64f6ca1c466bd588 15263: a36770f00d94f22dd53ffccfe06b3f1bcc2b6e72 v: v3 --- [refs] | 2 +- trunk/fs/relayfs/relay.c | 8 ++++++-- trunk/include/linux/relayfs_fs.h | 5 +++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index af02d4e50c22..6903d0dff065 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bb44f116a14c4c932f15c79acfafd46bcb43ca9a +refs/heads/master: fd30fc3256824f03c2ff9317269d66f72f7042ca diff --git a/trunk/fs/relayfs/relay.c b/trunk/fs/relayfs/relay.c index 16446a15c96d..2a6f7f12b7f9 100644 --- a/trunk/fs/relayfs/relay.c +++ b/trunk/fs/relayfs/relay.c @@ -333,8 +333,7 @@ size_t relay_switch_subbuf(struct rchan_buf *buf, size_t length) return length; toobig: - printk(KERN_WARNING "relayfs: event too large (%Zd)\n", length); - WARN_ON(1); + buf->chan->last_toobig = length; return 0; } @@ -399,6 +398,11 @@ void relay_close(struct rchan *chan) relay_close_buf(chan->buf[i]); } + if (chan->last_toobig) + printk(KERN_WARNING "relayfs: one or more items not logged " + "[item size (%Zd) > sub-buffer size (%Zd)]\n", + chan->last_toobig, chan->subbuf_size); + kref_put(&chan->kref, relay_destroy_channel); } diff --git a/trunk/include/linux/relayfs_fs.h b/trunk/include/linux/relayfs_fs.h index cfafc3e76bc2..fb7e80737325 100644 --- a/trunk/include/linux/relayfs_fs.h +++ b/trunk/include/linux/relayfs_fs.h @@ -20,9 +20,9 @@ #include /* - * Tracks changes to rchan_buf struct + * Tracks changes to rchan/rchan_buf structs */ -#define RELAYFS_CHANNEL_VERSION 5 +#define RELAYFS_CHANNEL_VERSION 6 /* * Per-cpu relay channel buffer @@ -60,6 +60,7 @@ struct rchan struct rchan_callbacks *cb; /* client callbacks */ struct kref kref; /* channel refcount */ void *private_data; /* for user-defined data */ + size_t last_toobig; /* tried to log event > subbuf size */ struct rchan_buf *buf[NR_CPUS]; /* per-cpu channel buffers */ };