Kirill, please review the patch.

Dima, please send an additional patch to actually use this new functions in 
nla_parse()
which was the initial reason of https://jira.sw.ru/browse/PSBM-42313

--
Best regards,

Konstantin Khorenko,
Virtuozzo Linux Kernel Team

On 12/11/2015 07:02 PM, Dmitry Safonov wrote:
Simple ratelimit for ve_printk & level.

https://jira.sw.ru/browse/PSBM-42313

Signed-off-by: Dmitry Safonov <dsafo...@odin.com>
---
  include/linux/printk.h | 26 ++++++++++++++++++++++++++
  1 file changed, 26 insertions(+)

diff --git a/include/linux/printk.h b/include/linux/printk.h
index 87bc842..13784a2 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -345,9 +345,21 @@ extern void dump_stack(void) __cold;
        if (__ratelimit(&_rs))                                              \
                printk(fmt, ##__VA_ARGS__);                             \
  })
+
+#define ve_printk_ratelimited(dst, fmt, ...)                                   
\
+({                                                                     \
+       static DEFINE_RATELIMIT_STATE(_rs,                              \
+                                     DEFAULT_RATELIMIT_INTERVAL,       \
+                                     DEFAULT_RATELIMIT_BURST);         \
+                                                                       \
+       if (__ratelimit(&_rs))                                              \
+               ve_printk(dst, fmt, ##__VA_ARGS__);                             
\
+})
  #else
  #define printk_ratelimited(fmt, ...)                                  \
        no_printk(fmt, ##__VA_ARGS__)
+#define ve_printk_ratelimited(dst, fmt, ...)                                   
\
+       no_printk(fmt, ##__VA_ARGS__)
  #endif

  #define pr_emerg_ratelimited(fmt, ...)                                        
\
@@ -365,6 +377,20 @@ extern void dump_stack(void) __cold;
  #define pr_info_ratelimited(fmt, ...)                                 \
        printk_ratelimited(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
  /* no pr_cont_ratelimited, don't do that... */
+#define ve_pr_emerg_ratelimited(dst, fmt, ...)                                 
\
+       ve_printk_ratelimited(dst, KERN_EMERG pr_fmt(fmt), ##__VA_ARGS__)
+#define ve_pr_alert_ratelimited(dst, fmt, ...)                                 
\
+       ve_printk_ratelimited(dst, KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__)
+#define ve_pr_crit_ratelimited(dst, fmt, ...)                                  
\
+       ve_printk_ratelimited(dst, KERN_CRIT pr_fmt(fmt), ##__VA_ARGS__)
+#define ve_pr_err_ratelimited(dst, fmt, ...)                                   
\
+       ve_printk_ratelimited(dst, KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
+#define ve_pr_warn_ratelimited(dst, fmt, ...)                                  
\
+       ve_printk_ratelimited(dst, KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
+#define ve_pr_notice_ratelimited(dst, fmt, ...)                                
        \
+       ve_printk_ratelimited(dst, KERN_NOTICE pr_fmt(fmt), ##__VA_ARGS__)
+#define ve_pr_info_ratelimited(dst, fmt, ...)                                  
\
+       ve_printk_ratelimited(dst, KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)

  #if defined(DEBUG)
  #define pr_devel_ratelimited(fmt, ...)                                        
\

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to