CIFS: add ONCE flag for cifs_dbg type
authorAurelien Aptel <aaptel@suse.com>
Tue, 10 Apr 2018 15:01:13 +0000 (17:01 +0200)
committerSteve French <stfrench@microsoft.com>
Wed, 11 Apr 2018 21:44:58 +0000 (16:44 -0500)
* Since cifs_vfs_error was just using pr_debug_ratelimited like the rest
  of cifs_dbg, move it there too
* Add a ONCE type flag to call the pr_xxx_once() debug function instead
  of the ratelimited ones.

To convert existing printk_once() calls to this we can run:

    perl -i -pE \
      's/printk_once\s*\(([^" \n]+)(.*)/cifs_dbg(VFS|ONCE,$2/g' \
      fs/cifs/*.c

Signed-off-by: Aurelien Aptel <aaptel@suse.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/cifs_debug.c
fs/cifs/cifs_debug.h

index e35e711db68ecaad868efc4bf0815c139fa99129..9d69ea433330ae8d1395a9ebfefd6db300874271 100644 (file)
@@ -42,23 +42,6 @@ cifs_dump_mem(char *label, void *data, int length)
                       data, length, true);
 }
 
-#ifdef CONFIG_CIFS_DEBUG
-void cifs_vfs_err(const char *fmt, ...)
-{
-       struct va_format vaf;
-       va_list args;
-
-       va_start(args, fmt);
-
-       vaf.fmt = fmt;
-       vaf.va = &args;
-
-       pr_err_ratelimited("CIFS VFS: %pV", &vaf);
-
-       va_end(args);
-}
-#endif
-
 void cifs_dump_detail(void *buf)
 {
 #ifdef CONFIG_CIFS_DEBUG2
index c611ca2339d71e982da848bf1a5c1432d691e53c..fe5567655662cefc4edb7b52d071012e3b355f02 100644 (file)
@@ -39,6 +39,7 @@ extern int cifsFYI;
 #else
 #define NOISY 0
 #endif
+#define ONCE 8
 
 /*
  *     debug ON
@@ -46,19 +47,28 @@ extern int cifsFYI;
  */
 #ifdef CONFIG_CIFS_DEBUG
 
-__printf(1, 2) void cifs_vfs_err(const char *fmt, ...);
-
 /* information message: e.g., configuration, major event */
-#define cifs_dbg(type, fmt, ...)                                       \
-do {                                                                   \
-       if (type == FYI && cifsFYI & CIFS_INFO) {                       \
-               pr_debug_ratelimited("%s: "                             \
-                           fmt, __FILE__, ##__VA_ARGS__);              \
-       } else if (type == VFS) {                                       \
-               cifs_vfs_err(fmt, ##__VA_ARGS__);                       \
-       } else if (type == NOISY && type != 0) {                        \
-               pr_debug_ratelimited(fmt, ##__VA_ARGS__);               \
-       }                                                               \
+#define cifs_dbg_func(ratefunc, type, fmt, ...)                        \
+do {                                                           \
+       if ((type) & FYI && cifsFYI & CIFS_INFO) {              \
+               pr_debug_ ## ratefunc("%s: "                    \
+                               fmt, __FILE__, ##__VA_ARGS__);  \
+       } else if ((type) & VFS) {                              \
+               pr_err_ ## ratefunc("CuIFS VFS: "               \
+                                fmt, ##__VA_ARGS__);           \
+       } else if ((type) & NOISY && (NOISY != 0)) {            \
+               pr_debug_ ## ratefunc(fmt, ##__VA_ARGS__);      \
+       }                                                       \
+} while (0)
+
+#define cifs_dbg(type, fmt, ...) \
+do {                                                   \
+       if ((type) & ONCE)                              \
+               cifs_dbg_func(once,                     \
+                        type, fmt, ##__VA_ARGS__);     \
+       else                                            \
+               cifs_dbg_func(ratelimited,              \
+                       type, fmt, ##__VA_ARGS__);      \
 } while (0)
 
 /*