verify: convert verify buf too small warning to fio_did_warn()
[fio.git] / debug.h
diff --git a/debug.h b/debug.h
index 891c254ebcf35e596904577e62f5965b231916f4..d10d43e91dbf011a9439ee19b585817bcf51294c 100644 (file)
--- a/debug.h
+++ b/debug.h
@@ -2,6 +2,7 @@
 #define FIO_DEBUG_H
 
 #include <assert.h>
+#include "lib/types.h"
 #include "log.h"
 
 enum {
@@ -17,14 +18,36 @@ enum {
        FD_JOB,
        FD_MUTEX,
        FD_PROFILE,
+       FD_TIME,
+       FD_NET,
+       FD_RATE,
+       FD_COMPRESS,
+       FD_STEADYSTATE,
+       FD_HELPERTHREAD,
        FD_DEBUG_MAX,
 };
 
-extern unsigned int fio_debug_jobno, *fio_debug_jobp;
+extern unsigned int fio_debug_jobno, *fio_debug_jobp, *fio_warned;
+
+static inline bool fio_did_warn(unsigned int mask)
+{
+       if (!(*fio_warned & mask)) {
+               *fio_warned |= mask;
+               return true;
+       }
+
+       return false;
+}
+
+enum {
+       FIO_WARN_ROOT_FLUSH     = 1,
+       FIO_WARN_VERIFY_BUF     = 2,
+};
 
 #ifdef FIO_INC_DEBUG
 struct debug_level {
        const char *name;
+       const char *help;
        unsigned long shift;
        unsigned int jobno;
 };
@@ -32,24 +55,20 @@ extern struct debug_level debug_levels[];
 
 extern unsigned long fio_debug;
 
-#define dprint(type, str, args...)                             \
-       do {                                                    \
-               pid_t __pid;                                    \
-               assert(type < FD_DEBUG_MAX);                    \
-               if ((((1 << type)) & fio_debug) == 0)           \
-                       break;                                  \
-               __pid = getpid();                               \
-               if (fio_debug_jobp && *fio_debug_jobp != -1U    \
-                   && __pid != *fio_debug_jobp)                \
-                       break;                                  \
-               log_info("%-8s ", debug_levels[(type)].name);   \
-               log_info("%-5u ", (int) __pid);                 \
-               log_info(str, ##args);                          \
-       } while (0)
+void __dprint(int type, const char *str, ...) __attribute__((format (printf, 2, 3)));
+
+#define dprint(type, str, args...)                     \
+       do {                                            \
+               if ((((1 << type)) & fio_debug) == 0)   \
+                       break;                          \
+               __dprint((type), (str), ##args);        \
+       } while (0)                                     \
 
 #else
 
-#define dprint(type, str, args...)
+static inline void dprint(int type, const char *str, ...)
+{
+}
 #endif
 
 #endif