ratelimit: Use per ratelimit context locking
authorIngo Molnar <mingo@elte.hu>
Tue, 22 Sep 2009 12:44:11 +0000 (14:44 +0200)
committerIngo Molnar <mingo@elte.hu>
Tue, 22 Sep 2009 13:31:34 +0000 (15:31 +0200)
commit979f693def9084a452846365dfde5dcb28366333
tree4e01718c89c770c82cb3075958a7c0d33631ccf2
parentb8c7f1dc5ca4e0d10709182233cdab932cef593d
ratelimit: Use per ratelimit context locking

I'd like to use printk_ratelimit() in atomic context, but that's
not possible right now due to the spinlock usage this commit
introduced more than a year ago:

  717115e: printk ratelimiting rewrite

As a first step push the lock into the ratelimit state structure.
This allows us to deal with locking failures to be considered as an
event related to that state being too busy.

Also clean up the code a bit (without changing functionality):

 - tidy up the definitions

 - clean up the code flow

This also shrinks the code a tiny bit:

   text    data     bss     dec     hex filename
    264       0       4     268     10c ratelimit.o.before
    255       0       0     255      ff ratelimit.o.after

( Whole-kernel data size got a bit larger, because we have
  two ratelimit-state data structures right now. )

Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: David S. Miller <davem@davemloft.net>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/linux/ratelimit.h
lib/ratelimit.c