From: Vyacheslav Dubeyko <slava@xxxxxxxxxxx> Subject: [PATCH 16/24] nilfs2: introduce dump stack option This patch adds CONFIG_NILFS2_DEBUG_DUMP_STACK kernel configuration option. This option enables output of dump stack. Usually, every function in NILFS2 driver begins from debugging output of function name, file, line and input arguments' value. In the case of enabling this option debugging output will include dump stack too. Signed-off-by: Vyacheslav Dubeyko <slava@xxxxxxxxxxx> CC: Ryusuke Konishi <konishi.ryusuke@xxxxxxxxxxxxx> --- fs/nilfs2/Kconfig | 15 +++++++++++++++ fs/nilfs2/debug.h | 19 ++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/fs/nilfs2/Kconfig b/fs/nilfs2/Kconfig index d6299c6..c1ec3c9 100644 --- a/fs/nilfs2/Kconfig +++ b/fs/nilfs2/Kconfig @@ -36,6 +36,21 @@ config NILFS2_DEBUG if NILFS2_DEBUG +config NILFS2_DEBUG_DUMP_STACK + bool "Enable dump stack output" + default n + help + This option enables output of dump stack. Usually, every + function in NILFS2 driver begins from debugging output of + function name, file, line and input arguments' value. + In the case of enabling this option debugging output + will include dump stack too. + + Usually, dump stacks are printed out for called functions from + files that are requested by flags. But dump stacks are + printed out for all called functions in the case of dynamic + debug (CONFIG_NILFS2_USE_PR_DEBUG). + config NILFS2_DEBUG_SUBSYSTEMS bool "Enable output from subsystems" depends on NILFS2_DEBUG diff --git a/fs/nilfs2/debug.h b/fs/nilfs2/debug.h index 517c5e8..a85454c 100644 --- a/fs/nilfs2/debug.h +++ b/fs/nilfs2/debug.h @@ -89,6 +89,15 @@ */ #define DBG_PAGE 0x00400000 +/* + * This flag enables output of dump stack. Usually, every + * function in NILFS2 driver begins from debugging output of + * function name, file, line and input arguments' value. + * In the case of enabling this option debugging output + * will include dump stack too. + */ +#define DBG_DUMP_STACK 0x20000000 + #ifdef CONFIG_NILFS2_DEBUG /* Definition of flags' set for debugging */ @@ -117,6 +126,9 @@ static u32 DBG_MASK = ( #ifdef CONFIG_NILFS2_DEBUG_BUFFER_MANAGEMENT DBG_PAGE | #endif /* CONFIG_NILFS2_DEBUG_BUFFER_MANAGEMENT */ +#ifdef CONFIG_NILFS2_DEBUG_DUMP_STACK + DBG_DUMP_STACK | +#endif /* CONFIG_NILFS2_DEBUG_DUMP_STACK */ 0); #define NILFS2_SUBSYS_MASK 0x0FFFFFFF @@ -131,8 +143,13 @@ static u32 DBG_MASK = ( #define nilfs2_debug(flg, f, a...) \ do { \ - if ((flg & NILFS2_SUBSYS_MASK) & DBG_MASK) \ + bool can_dump_stack = DBG_MASK & DBG_DUMP_STACK; \ + bool should_dump_stack = flg & DBG_DUMP_STACK; \ + if ((flg & NILFS2_SUBSYS_MASK) & DBG_MASK) { \ nilfs2_printk(f, ## a); \ + if (can_dump_stack && should_dump_stack) \ + dump_stack(); \ + } \ } while (0) #else /* CONFIG_NILFS2_DEBUG */ -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html