diff options
author | Maxim Sobolev <sobomax@FreeBSD.org> | 2002-01-21 01:16:11 +0000 |
---|---|---|
committer | Maxim Sobolev <sobomax@FreeBSD.org> | 2002-01-21 01:16:11 +0000 |
commit | dcd7d9b7b7beabe040a398c9b459b1cae9361a47 (patch) | |
tree | 797223f639fe4f7e38b0645d11503b107b19512e /sys | |
parent | 01b8b9e983fa7b096cf1f9e2c48739619f7b91a1 (diff) | |
download | src-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.8 | 6 | ||||
-rw-r--r-- | sys/boot/forth/loader.conf | 1 | ||||
-rw-r--r-- | sys/kern/kern_shutdown.c | 11 |
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; } |