From bca20ddd06723e1a15ac9546d7cf61a39b43bf8e Mon Sep 17 00:00:00 2001 From: bobijam Date: Thu, 14 Jun 2007 09:16:49 +0000 Subject: [PATCH] Branch HEAD b=11680 i=wangdi i=shadow Description: make panic on lbug configurable --- lnet/ChangeLog | 4 ++++ lnet/include/libcfs/libcfs.h | 1 + lnet/libcfs/debug.c | 3 +++ lnet/libcfs/linux/linux-debug.c | 2 ++ lnet/libcfs/linux/linux-proc.c | 9 +++++++++ 5 files changed, 19 insertions(+) diff --git a/lnet/ChangeLog b/lnet/ChangeLog index 15e76fb..c388239 100644 --- a/lnet/ChangeLog +++ b/lnet/ChangeLog @@ -13,6 +13,10 @@ ptllnd - Portals 3.3 / UNICOS/lc 1.5.x, 2.0.x * bug fixes +Severity : normal +Bugzilla : 11680 +Description: make panic on lbug configurable + ------------------------------------------------------------------------------ 2007-04-01 Cluster File Systems, Inc. diff --git a/lnet/include/libcfs/libcfs.h b/lnet/include/libcfs/libcfs.h index b57f2ab..188924e 100644 --- a/lnet/include/libcfs/libcfs.h +++ b/lnet/include/libcfs/libcfs.h @@ -76,6 +76,7 @@ int libcfs_debug_str2mask(int *mask, const char *str, int is_subsys); /* Has there been an LBUG? */ extern unsigned int libcfs_catastrophe; +extern unsigned int libcfs_panic_on_lbug; /* * struct ptldebug_header is defined in libcfs//libcfs.h diff --git a/lnet/libcfs/debug.c b/lnet/libcfs/debug.c index 5de53f4..f5aff7f 100644 --- a/lnet/libcfs/debug.c +++ b/lnet/libcfs/debug.c @@ -59,6 +59,9 @@ EXPORT_SYMBOL(portal_enter_debugger); unsigned int libcfs_catastrophe; EXPORT_SYMBOL(libcfs_catastrophe); +unsigned int libcfs_panic_on_lbug = 0; +EXPORT_SYMBOL(libcfs_panic_on_lbug); + atomic_t libcfs_kmemory = ATOMIC_INIT(0); EXPORT_SYMBOL(libcfs_kmemory); diff --git a/lnet/libcfs/linux/linux-debug.c b/lnet/libcfs/linux/linux-debug.c index 4a48ae6..93cddd8 100644 --- a/lnet/libcfs/linux/linux-debug.c +++ b/lnet/libcfs/linux/linux-debug.c @@ -142,6 +142,8 @@ void lbug_with_loc(char *file, const char *func, const int line) libcfs_debug_dumpstack(NULL); libcfs_debug_dumplog(); libcfs_run_lbug_upcall(file, func, line); + if (libcfs_panic_on_lbug) + panic("LBUG"); set_task_state(current, TASK_UNINTERRUPTIBLE); while (1) schedule(); diff --git a/lnet/libcfs/linux/linux-proc.c b/lnet/libcfs/linux/linux-proc.c index b090d1d..c0bd793 100644 --- a/lnet/libcfs/linux/linux-proc.c +++ b/lnet/libcfs/linux/linux-proc.c @@ -73,6 +73,7 @@ enum { PSDEV_LNET_UPCALL, /* User mode upcall script */ PSDEV_LNET_MEMUSED, /* bytes currently PORTAL_ALLOCated */ PSDEV_LNET_CATASTROPHE, /* if we have LBUGged or panic'd */ + PSDEV_LNET_PANIC_ON_LBUG, /* flag to panic on LBUG */ }; int LL_PROC_PROTO(proc_dobitmasks); @@ -146,6 +147,14 @@ static struct ctl_table lnet_table[] = { .mode = 0444, .proc_handler = &proc_dointvec }, + { + .ctl_name = PSDEV_LNET_PANIC_ON_LBUG, + .procname = "panic_on_lbug", + .data = &libcfs_panic_on_lbug, + .maxlen = sizeof(int), + .mode = 0444, + .proc_handler = &proc_dointvec + }, {0} }; -- 1.8.3.1