[PATCH 16/24] nilfs2: introduce dump stack option

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Filesystem Development]     [Linux BTRFS]     [Linux CIFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux