summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
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 185f391..d7466d5 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 7256ea6..e04aa4a 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 9263af9..d0cfe6e 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;
}
OpenPOWER on IntegriCloud