aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMaxim Sobolev <sobomax@FreeBSD.org>2002-01-21 01:16:11 +0000
committerMaxim Sobolev <sobomax@FreeBSD.org>2002-01-21 01:16:11 +0000
commitdcd7d9b7b7beabe040a398c9b459b1cae9361a47 (patch)
tree797223f639fe4f7e38b0645d11503b107b19512e /sys
parent01b8b9e983fa7b096cf1f9e2c48739619f7b91a1 (diff)
downloadsrc-dcd7d9b7b7beabe040a398c9b459b1cae9361a47.tar.gz
src-dcd7d9b7b7beabe040a398c9b459b1cae9361a47.zip
Allow dump device be configured as early as possible using loader(8) tunable.
This allows obtaining crash dumps from the panics occured during late stages of kernel initialisation before system enters into single-user mode. MFC after: 2 weeks
Notes
Notes: svn path=/head/; revision=89601
Diffstat (limited to 'sys')
-rw-r--r--sys/boot/common/loader.86
-rw-r--r--sys/boot/forth/loader.conf1
-rw-r--r--sys/kern/kern_shutdown.c11
3 files changed, 18 insertions, 0 deletions
diff --git a/sys/boot/common/loader.8 b/sys/boot/common/loader.8
index 185f3914517d..d7466d5e2f92 100644
--- a/sys/boot/common/loader.8
+++ b/sys/boot/common/loader.8
@@ -392,6 +392,12 @@ when the kernel is booted.
This can be overridden by setting
.Va rootdev
explicitly.
+.It Va dumpdev
+A name of device where the kernel can save a crash dump in the case
+of a panic. This automatically sets
+.Va kern.dumpdev
+.Xr sysctl 3
+MIB variable.
.El
.Pp
Other variables are used to override kernel tunable parameters.
diff --git a/sys/boot/forth/loader.conf b/sys/boot/forth/loader.conf
index 7256ea637483..e04aa4a1c7c6 100644
--- a/sys/boot/forth/loader.conf
+++ b/sys/boot/forth/loader.conf
@@ -64,6 +64,7 @@ module_path="/boot/kernel;/boot/modules;/modules" # Set the module search path
#boot_verbose="NO" # Causes extra debugging information to be printed
#init_path="/sbin/init:/sbin/oinit:/sbin/init.bak:/stand/sysinstall"
# Sets the list of init candidates
+#dumpdev="ad0s1b" # Set device for crash dumps
##############################################################
diff --git a/sys/kern/kern_shutdown.c b/sys/kern/kern_shutdown.c
index 9263af987c56..d0cfe6e759a3 100644
--- a/sys/kern/kern_shutdown.c
+++ b/sys/kern/kern_shutdown.c
@@ -54,6 +54,7 @@
#include <sys/eventhandler.h>
#include <sys/kernel.h>
#include <sys/kthread.h>
+#include <sys/malloc.h>
#include <sys/mount.h>
#include <sys/proc.h>
#include <sys/reboot.h>
@@ -457,6 +458,16 @@ setdumpdev(dev_t dev)
static void
dump_conf(void *dummy)
{
+ char *path;
+ dev_t dev;
+
+ path = malloc(MNAMELEN, M_TEMP, M_WAITOK);
+ if (TUNABLE_STR_FETCH("dumpdev", path, MNAMELEN) != 0) {
+ dev = getdiskbyname(path);
+ if (dev != NODEV)
+ dumpdev = dev;
+ }
+ free(path, M_TEMP);
if (setdumpdev(dumpdev) != 0)
dumpdev = NODEV;
}