Whamcloud - gitweb
LU-12323 libcfs: check if save_stack_trace_tsk is exported 37/34937/9
authorChris Horn <hornc@cray.com>
Wed, 22 May 2019 16:21:14 +0000 (11:21 -0500)
committerOleg Drokin <green@whamcloud.com>
Sat, 1 Jun 2019 03:58:41 +0000 (03:58 +0000)
Lustre 2.12 commit afedf9343686504c89f2e28cf6133540166f2347 introduced
the use of save_stack_trace_tsk, but this symbol is not exported for
all architectures. When it's possible we can use save_stack_trace
instead. Otherwise skip printing stack trace.

Cray-bug-id: LUS-7352
Test-Parameters: clientarch=aarch64
Signed-off-by: Chris Horn <hornc@cray.com>
Change-Id: I142b542f5c5672abbad461a621aedd1e49db1bdd
Reviewed-on: https://review.whamcloud.com/34937
Tested-by: Jenkins
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Yang Sheng <ys@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Shaun Tancheff <stancheff@cray.com>
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
libcfs/autoconf/lustre-libcfs.m4
libcfs/libcfs/linux/linux-debug.c

index 3f87822..543b989 100644 (file)
@@ -1023,6 +1023,24 @@ define_timer, [
 ]) # LIBCFS_DEFINE_TIMER
 
 #
 ]) # LIBCFS_DEFINE_TIMER
 
 #
+# LIBCFS_EXPORT_SAVE_STACK_TRACE_TSK
+#
+# Kernel 2.6.27 commit 8594698ebddeef5443b7da8258ae33b3eaca61d5
+# exported save_stack_trace_tsk for x86.
+# Kernel 2.6.27 commit 01f4b8b8b8db09b88be7df7e51192e4e678b69d3
+# exported save_stack_trace_tsk for powerpc
+# Kernel 4.13 commit e27c7fa015d61c8be6a2c32b2144aad2ae6ec975
+# exported save_stack_trace_tsk for arm64
+# Kernel 4.14 commit 9a3dc3186fc3795e076a4122da9e0258651a9631
+# exported save_stack_trace_tsk for arm
+#
+AC_DEFUN([LIBCFS_EXPORT_SAVE_STACK_TRACE_TSK], [
+LB_CHECK_EXPORT([save_stack_trace_tsk], [arch/$SUBARCH/kernel/stacktrace.c],
+       [AC_DEFINE(HAVE_SAVE_STACK_TRACE_TSK, 1,
+               [save_stack_trace_tsk is exported])])
+]) # LIBCFS_EXPORT_SAVE_STACK_TRACE_TSK
+
+#
 # LIBCFS_TIMER_SETUP
 #
 # Kernel version 4.15 commit e99e88a9d2b067465adaa9c111ada99a041bef9a
 # LIBCFS_TIMER_SETUP
 #
 # Kernel version 4.15 commit e99e88a9d2b067465adaa9c111ada99a041bef9a
@@ -1178,6 +1196,7 @@ LIBCFS_WAIT_QUEUE_ENTRY
 # 4.14
 LIBCFS_DEFINE_TIMER
 LIBCFS_NEW_KERNEL_WRITE
 # 4.14
 LIBCFS_DEFINE_TIMER
 LIBCFS_NEW_KERNEL_WRITE
+LIBCFS_EXPORT_SAVE_STACK_TRACE_TSK
 # 4.15
 LIBCFS_TIMER_SETUP
 # 4.16
 # 4.15
 LIBCFS_TIMER_SETUP
 # 4.16
index 46fbc29..aa01487 100644 (file)
@@ -115,6 +115,16 @@ EXPORT_SYMBOL(lbug_with_loc);
 
 #ifdef CONFIG_STACKTRACE
 
 
 #ifdef CONFIG_STACKTRACE
 
+#ifndef HAVE_SAVE_STACK_TRACE_TSK
+#define save_stack_trace_tsk(tsk, trace)                                      \
+do {                                                                          \
+       if (tsk == current)                                                    \
+               save_stack_trace(trace);                                       \
+       else                                                                   \
+               pr_info("No stack, save_stack_trace_tsk() not exported\n");    \
+} while (0)
+#endif
+
 #define MAX_ST_ENTRIES 100
 static DEFINE_SPINLOCK(st_lock);
 
 #define MAX_ST_ENTRIES 100
 static DEFINE_SPINLOCK(st_lock);