From ccc806a049383e5611b3752e6f384cf03a208039 Mon Sep 17 00:00:00 2001 From: Eugene Grosbein Date: Sun, 2 Jul 2023 14:54:57 +0700 Subject: [PATCH] dumpdev: respect kenv for stable branches We have somewhat twisted logic to determine actions for dumpdev considering three sources of information: * kenv "dumpdev" tunnable supposed to point to specific device; * /etc/defaults/rc.conf "dumpdev" variable; * /etc/rc.conf that may be unset or set to "NO", "AUTO" or device name. For CURRENT without any setting in kenv or /etc/rc.conf the default is "AUTO". For STABLE branches the default is "NO". Current implementation breaks for STABLE branches if kenv points to specific device but /etc/rc.conf does not set "dumpdev" at all. Let us fix it commenting out "dumpdev" in /etc/defaults/rc.conf for STABLE branches and making the code to consult kenv if "dumpdev" is not set elsewhere. MFC-after: 1 month --- libexec/rc/rc.conf | 4 +++- libexec/rc/rc.d/dumpon | 9 ++++++--- libexec/rc/rc.d/savecore | 4 ++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/libexec/rc/rc.conf b/libexec/rc/rc.conf index 06fda945e86e..8884fab7e016 100644 --- a/libexec/rc/rc.conf +++ b/libexec/rc/rc.conf @@ -643,7 +643,9 @@ lpd_flags="" # Flags to lpd (if enabled). nscd_enable="NO" # Run the nsswitch caching daemon. chkprintcap_enable="NO" # Run chkprintcap(8) before running lpd. chkprintcap_flags="-d" # Create missing directories by default. -dumpdev="AUTO" # Device to crashdump to (device name, AUTO, or NO). +dumpdev="AUTO" # Device to crashdump to (device name, AUTO, or NO); + # this should be commented out here + # for stable branches to respect kenv. dumpon_flags="" # Options to pass to dumpon(8), followed by dumpdev. dumpdir="/var/crash" # Directory where crash dumps are to be stored savecore_enable="YES" # Extract core from dump devices if any diff --git a/libexec/rc/rc.d/dumpon b/libexec/rc/rc.d/dumpon index 6ca335b73842..ed43c4a24762 100755 --- a/libexec/rc/rc.d/dumpon +++ b/libexec/rc/rc.d/dumpon @@ -52,15 +52,18 @@ dumpon_start() # early so a crash early in the boot process can be caught. # case ${dumpdev} in - [Nn][Oo] | '') + [Nn][Oo]) ;; - [Aa][Uu][Tt][Oo]) + [Aa][Uu][Tt][Oo] | '') root_hold_wait dev=$(/bin/kenv -q dumpdev) if [ -n "${dev}" ] ; then dumpon_try "${dev}" return $? fi + if [ -z ${dumpdev} ] ; then + return + fi while read dev mp type more ; do [ "${type}" = "swap" ] || continue case ${dev} in @@ -85,7 +88,7 @@ dumpon_start() dumpon_stop() { case ${dumpdev} in - [Nn][Oo] | '') + [Nn][Oo]) ;; *) rm -f /dev/dumpdev diff --git a/libexec/rc/rc.d/savecore b/libexec/rc/rc.d/savecore index 5d8204a1e805..e7186699a176 100755 --- a/libexec/rc/rc.d/savecore +++ b/libexec/rc/rc.d/savecore @@ -20,11 +20,11 @@ savecore_prestart() { # Quit if we have no dump device case ${dumpdev} in - [Nn][Oo] | '') + [Nn][Oo]) debug 'No dump device. Quitting.' return 1 ;; - [Aa][Uu][Tt][Oo]) + [Aa][Uu][Tt][Oo] | '') if [ ! -L /dev/dumpdev ]; then return 1 fi