Message ID | 1305662020.1722.42.camel@Joe-Laptop |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
On Tue, 2011-05-17 at 13:33 -0700, Ben Greear wrote: > On 05/17/2011 12:53 PM, Joe Perches wrote: > > Another option is to add a WARN_RATELIMIT > > (there is already a WARN_ON_RATELIMIT) to avoid > > missing other messages. > > Something like: > > include/asm-generic/bug.h | 16 ++++++++++++++++ > > net/core/filter.c | 4 +++- > > 2 files changed, 19 insertions(+), 1 deletions(-) > > diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h > > index e5a3f58..12b250c 100644 > > --- a/include/asm-generic/bug.h > > +++ b/include/asm-generic/bug.h > > @@ -165,6 +165,22 @@ extern void warn_slowpath_null(const char *file, const int line); > > #define WARN_ON_RATELIMIT(condition, state) \ > > WARN_ON((condition)&& __ratelimit(state)) > > > > +#define __WARN_RATELIMIT(condition, state, format...) \ > > +({ \ > > + int rtn = 0; \ > > + if (unlikely(__ratelimit(state))) \ > > + rtn = WARN(condition, format); \ > > + rtn; \ > > +}) > > + > > +#define WARN_RATELIMIT(condition, format...) \ > > +({ \ > > + static DEFINE_RATELIMIT_STATE(_rs, \ > > + DEFAULT_RATELIMIT_INTERVAL, \ > > + DEFAULT_RATELIMIT_BURST); \ > > + __WARN_RATELIMIT(condition,&_rs, format); \ > > +}) > > + > > /* > > * WARN_ON_SMP() is for cases that the warning is either > > * meaningless for !SMP or may even cause failures. > > diff --git a/net/core/filter.c b/net/core/filter.c > > index 0eb8c44..0e3622f 100644 > > --- a/net/core/filter.c > > +++ b/net/core/filter.c > > @@ -350,7 +350,9 @@ load_b: > > continue; > > } > > default: > > - WARN_ON(1); > > + WARN_RATELIMIT(1, "Unknown code:%u jt:%u tf:%u k:%u\n", > > + fentry->code, fentry->jt, > > + fentry->jf, fentry->k); > > return 0; > > } > > } > > > Sounds fine to me. You want to just send an official > patch with all this? I added a some cc's for wider exposure. original post: http://www.spinics.net/lists/netdev/msg164521.html Let's wait to see if David has anything to say. The biggest negative I see is adding RATELIMIT_STATE to asm-generic/bug.h, though it already has a use of __ratelimit in WARN_ON_RATELIMIT there. WARN_ON_RATELIMIT is unused today. The only user seems to have been RCU_PREEMPT which was deleted in: commit 6b3ef48adf847f7adf11c870e3ffacac150f1564 Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Date: Sat Aug 22 13:56:53 2009 -0700 rcu: Remove CONFIG_PREEMPT_RCU Maybe the old definition should be removed instead. If there are no comments after a day or two, I'll sign and send this as 2 patches with the filter one marked as: Original-patch-by: Ben Greear <greearb@candelatech.com> cheers, Joe -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Generic mechanism to ratelimit WARN uses. Joe Perches (2): bug.h: Add WARN_RATELIMIT net: filter: Use WARN_RATELIMIT include/asm-generic/bug.h | 16 ++++++++++++++++ net/core/filter.c | 4 +++- 2 files changed, 19 insertions(+), 1 deletions(-)
From: Joe Perches <joe@perches.com> Date: Sat, 21 May 2011 10:48:38 -0700 > Generic mechanism to ratelimit WARN uses. > > Joe Perches (2): > bug.h: Add WARN_RATELIMIT > net: filter: Use WARN_RATELIMIT > > include/asm-generic/bug.h | 16 ++++++++++++++++ > net/core/filter.c | 4 +++- > 2 files changed, 19 insertions(+), 1 deletions(-) This looks fine to me, and no objections have been voiced otherwise, so applied to net-2.6, thanks! -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h index e5a3f58..12b250c 100644 --- a/include/asm-generic/bug.h +++ b/include/asm-generic/bug.h @@ -165,6 +165,22 @@ extern void warn_slowpath_null(const char *file, const int line); #define WARN_ON_RATELIMIT(condition, state) \ WARN_ON((condition) && __ratelimit(state)) +#define __WARN_RATELIMIT(condition, state, format...) \ +({ \ + int rtn = 0; \ + if (unlikely(__ratelimit(state))) \ + rtn = WARN(condition, format); \ + rtn; \ +}) + +#define WARN_RATELIMIT(condition, format...) \ +({ \ + static DEFINE_RATELIMIT_STATE(_rs, \ + DEFAULT_RATELIMIT_INTERVAL, \ + DEFAULT_RATELIMIT_BURST); \ + __WARN_RATELIMIT(condition, &_rs, format); \ +}) + /* * WARN_ON_SMP() is for cases that the warning is either * meaningless for !SMP or may even cause failures. diff --git a/net/core/filter.c b/net/core/filter.c index 0eb8c44..0e3622f 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -350,7 +350,9 @@ load_b: continue; } default: - WARN_ON(1); + WARN_RATELIMIT(1, "Unknown code:%u jt:%u tf:%u k:%u\n", + fentry->code, fentry->jt, + fentry->jf, fentry->k); return 0; } }