Whamcloud - gitweb
LU-1408 debug: initialize debug_msg_data if needed
authorHongchao Zhang <hongchao.zhang@whamcloud.com>
Thu, 5 Apr 2012 20:22:31 +0000 (04:22 +0800)
committerOleg Drokin <green@whamcloud.com>
Tue, 5 Jun 2012 13:50:25 +0000 (09:50 -0400)
initialize the libcfs_debug_msg_data only if needed

Change-Id: Id80ea290b982153c86dae2f71c3d42753fa8848f
Signed-off-by: Hongchao Zhang <hongchao.zhang@whamcloud.com>
Reviewed-on: http://review.whamcloud.com/2889
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Tested-by: Hudson
Reviewed-by: James Simmons <uja.ornl@gmail.com>
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Shuichi Ihara <sihara@ddn.com>
libcfs/include/libcfs/libcfs_debug.h
libcfs/include/libcfs/linux/libcfs.h

index 687755e..87c03d5 100644 (file)
@@ -180,6 +180,16 @@ struct libcfs_debug_msg_data {
         cfs_debug_limit_state_t  *msg_cdls;
 };
 
+#define LIBCFS_DEBUG_MSG_DATA_INIT(data, mask, cdls)        \
+do {                                                        \
+        (data)->msg_subsys = DEBUG_SUBSYSTEM;               \
+        (data)->msg_file   = __FILE__;                      \
+        (data)->msg_fn     = __FUNCTION__;                  \
+        (data)->msg_line   = __LINE__;                      \
+        (data)->msg_cdls   = (cdls);                        \
+        (data)->msg_mask   = (mask);                        \
+} while (0)
+
 #define LIBCFS_DEBUG_MSG_DATA_DECL(dataname, mask, cdls)    \
         static struct libcfs_debug_msg_data dataname = {    \
                .msg_subsys = DEBUG_SUBSYSTEM,               \
@@ -204,12 +214,14 @@ static inline int cfs_cdebug_show(unsigned int mask, unsigned int subsystem)
 
 #define __CDEBUG(cdls, mask, format, ...)                               \
 do {                                                                    \
-        LIBCFS_DEBUG_MSG_DATA_DECL(msgdata, mask, cdls);                \
+        static struct libcfs_debug_msg_data msgdata;                    \
                                                                         \
         CFS_CHECK_STACK(&msgdata, mask, cdls);                          \
                                                                         \
-        if (cfs_cdebug_show(mask, DEBUG_SUBSYSTEM))                     \
+        if (cfs_cdebug_show(mask, DEBUG_SUBSYSTEM)) {                   \
+                LIBCFS_DEBUG_MSG_DATA_INIT(&msgdata, mask, cdls);       \
                 libcfs_debug_msg(&msgdata, format, ## __VA_ARGS__);     \
+        }                                                               \
 } while (0)
 
 #define CDEBUG(mask, format, ...) __CDEBUG(NULL, mask, format, ## __VA_ARGS__)
index ce07e80..a6c8edd 100644 (file)
@@ -80,9 +80,8 @@
 #define __CHECK_STACK(msgdata, mask, cdls)                              \
 do {                                                                    \
         if (unlikely(CDEBUG_STACK() > libcfs_stack)) {                  \
+                LIBCFS_DEBUG_MSG_DATA_INIT(msgdata, D_WARNING, NULL);   \
                 libcfs_stack = CDEBUG_STACK();                          \
-                (msgdata)->msg_mask = D_WARNING;                        \
-                (msgdata)->msg_cdls = NULL;                             \
                 libcfs_debug_msg(msgdata,                               \
                                  "maximum lustre stack %lu\n",          \
                                  CDEBUG_STACK());                       \