[lustre-devel] [PATCH 22/49] lnet: libcfs: restore LNET_DUMP_ON_PANIC functionality.

James Simmons jsimmons at infradead.org
Wed Apr 14 21:02:14 PDT 2021


From: Mr NeilBrown <neilb at suse.de>

The functionality enabled by CONFIG_LNET_DUMP_ON_PANIC was never
implemented for the Linux client.

Restore this functionality.

While we are there, add conditional-compliation for other code that is
only needed when this is enabled.

WC-bug-id: https://jira.whamcloud.com/browse/LU-14427
Lustre-commit: f9b75c5fb4d4e397 ("LU-14427 libcfs: restore LNET_DUMP_ON_PANIC functionality.")
Signed-off-by: Mr NeilBrown <neilb at suse.de>
Reviewed-on: https://review.whamcloud.com/41488
Reviewed-by: Serguei Smirnov <ssmirnov at whamcloud.com>
Reviewed-by: James Simmons <jsimmons at infradead.org>
Reviewed-by: Oleg Drokin <green at whamcloud.com>
Signed-off-by: James Simmons <jsimmons at infradead.org>
---
 net/lnet/Kconfig            | 9 +++++++++
 net/lnet/libcfs/debug.c     | 9 +++++++++
 net/lnet/libcfs/tracefile.c | 2 ++
 3 files changed, 20 insertions(+)

diff --git a/net/lnet/Kconfig b/net/lnet/Kconfig
index 6062a82..b5ee5fa 100644
--- a/net/lnet/Kconfig
+++ b/net/lnet/Kconfig
@@ -8,6 +8,15 @@ config LNET
 	  case of Lustre routers only the LNet layer is required. Lately other
 	  projects are also looking into using LNet as their networking API as well.
 
+config LNET_DUMP_ON_PANIC
+	bool "LNet dump logs on panic"
+	depends on LNET
+	help
+	  Special funcitonality to enable collecting extra logs when LNet panics.
+	  Normally only used by developers for debugging purposes.
+
+	  If unsure, say N.
+
 config LNET_SELFTEST
 	tristate "Lustre networking self testing"
 	depends on LNET
diff --git a/net/lnet/libcfs/debug.c b/net/lnet/libcfs/debug.c
index e68dd91..e519fdb 100644
--- a/net/lnet/libcfs/debug.c
+++ b/net/lnet/libcfs/debug.c
@@ -503,6 +503,15 @@ static int panic_notifier(struct notifier_block *self, unsigned long unused1,
 	libcfs_panic_in_progress = 1;
 	mb();
 
+#ifdef CONFIG_LNET_DUMP_ON_PANIC
+	/* This is currently disabled because it spews far too much to the
+	 * console on the rare cases it is ever triggered.
+	 */
+	if (in_interrupt())
+		cfs_trace_debug_print();
+	else
+		libcfs_debug_dumplog_internal((void *)(long)current->pid);
+#endif
 	return 0;
 }
 
diff --git a/net/lnet/libcfs/tracefile.c b/net/lnet/libcfs/tracefile.c
index 4e1900d..32bab98 100644
--- a/net/lnet/libcfs/tracefile.c
+++ b/net/lnet/libcfs/tracefile.c
@@ -764,6 +764,7 @@ static void put_pages_on_daemon_list(struct page_collection *pc)
 	}
 }
 
+#ifdef CONFIG_LNET_DUMP_ON_PANIC
 void cfs_trace_debug_print(void)
 {
 	struct page_collection pc;
@@ -801,6 +802,7 @@ void cfs_trace_debug_print(void)
 		cfs_tage_free(tage);
 	}
 }
+#endif /* CONFIG_LNET_DUMP_ON_PANIC */
 
 int cfs_tracefile_dump_all_pages(char *filename)
 {
-- 
1.8.3.1



More information about the lustre-devel mailing list