From 54d3582b1f8385d2afaa5b6e9a4bb6b3db8cf154 Mon Sep 17 00:00:00 2001 From: Hongchao Zhang Date: Fri, 6 Apr 2012 04:22:31 +0800 Subject: [PATCH] LU-1408 debug: initialize debug_msg_data if needed initialize the libcfs_debug_msg_data only if needed Change-Id: Id80ea290b982153c86dae2f71c3d42753fa8848f Signed-off-by: Hongchao Zhang Reviewed-on: http://review.whamcloud.com/2889 Reviewed-by: Oleg Drokin Tested-by: Hudson Reviewed-by: James Simmons Tested-by: Maloo Reviewed-by: Shuichi Ihara --- libcfs/include/libcfs/libcfs_debug.h | 16 ++++++++++++++-- libcfs/include/libcfs/linux/libcfs.h | 3 +-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/libcfs/include/libcfs/libcfs_debug.h b/libcfs/include/libcfs/libcfs_debug.h index 687755e..87c03d5 100644 --- a/libcfs/include/libcfs/libcfs_debug.h +++ b/libcfs/include/libcfs/libcfs_debug.h @@ -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__) diff --git a/libcfs/include/libcfs/linux/libcfs.h b/libcfs/include/libcfs/linux/libcfs.h index ce07e80..a6c8edd 100644 --- a/libcfs/include/libcfs/linux/libcfs.h +++ b/libcfs/include/libcfs/linux/libcfs.h @@ -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()); \ -- 1.8.3.1