1*7c478bd9Sstevel@tonic-gate#!/sbin/sh 2*7c478bd9Sstevel@tonic-gate# 3*7c478bd9Sstevel@tonic-gate# CDDL HEADER START 4*7c478bd9Sstevel@tonic-gate# 5*7c478bd9Sstevel@tonic-gate# The contents of this file are subject to the terms of the 6*7c478bd9Sstevel@tonic-gate# Common Development and Distribution License, Version 1.0 only 7*7c478bd9Sstevel@tonic-gate# (the "License"). You may not use this file except in compliance 8*7c478bd9Sstevel@tonic-gate# with the License. 9*7c478bd9Sstevel@tonic-gate# 10*7c478bd9Sstevel@tonic-gate# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 11*7c478bd9Sstevel@tonic-gate# or http://www.opensolaris.org/os/licensing. 12*7c478bd9Sstevel@tonic-gate# See the License for the specific language governing permissions 13*7c478bd9Sstevel@tonic-gate# and limitations under the License. 14*7c478bd9Sstevel@tonic-gate# 15*7c478bd9Sstevel@tonic-gate# When distributing Covered Code, include this CDDL HEADER in each 16*7c478bd9Sstevel@tonic-gate# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 17*7c478bd9Sstevel@tonic-gate# If applicable, add the following below this CDDL HEADER, with the 18*7c478bd9Sstevel@tonic-gate# fields enclosed by brackets "[]" replaced with your own identifying 19*7c478bd9Sstevel@tonic-gate# information: Portions Copyright [yyyy] [name of copyright owner] 20*7c478bd9Sstevel@tonic-gate# 21*7c478bd9Sstevel@tonic-gate# CDDL HEADER END 22*7c478bd9Sstevel@tonic-gate# 23*7c478bd9Sstevel@tonic-gate# 24*7c478bd9Sstevel@tonic-gate# Copyright 2004 Sun Microsystems, Inc. All rights reserved. 25*7c478bd9Sstevel@tonic-gate# Use is subject to license terms. 26*7c478bd9Sstevel@tonic-gate# 27*7c478bd9Sstevel@tonic-gate#ident "%Z%%M% %I% %E% SMI" 28*7c478bd9Sstevel@tonic-gate 29*7c478bd9Sstevel@tonic-gate. /lib/svc/share/smf_include.sh 30*7c478bd9Sstevel@tonic-gate 31*7c478bd9Sstevel@tonic-gate# 32*7c478bd9Sstevel@tonic-gate# mksavedir 33*7c478bd9Sstevel@tonic-gate# Make sure that $DUMPADM_SAVDIR is set and exists. 34*7c478bd9Sstevel@tonic-gate# 35*7c478bd9Sstevel@tonic-gatemksavedir () 36*7c478bd9Sstevel@tonic-gate{ 37*7c478bd9Sstevel@tonic-gate [ -z "$DUMPADM_SAVDIR" ] && DUMPADM_SAVDIR=/var/crash/`uname -n` 38*7c478bd9Sstevel@tonic-gate [ -d "$DUMPADM_SAVDIR" ] || /usr/bin/mkdir -m 0700 -p $DUMPADM_SAVDIR 39*7c478bd9Sstevel@tonic-gate} 40*7c478bd9Sstevel@tonic-gate 41*7c478bd9Sstevel@tonic-gate# 42*7c478bd9Sstevel@tonic-gate# We haven't run savecore on a dump device yet 43*7c478bd9Sstevel@tonic-gate# 44*7c478bd9Sstevel@tonic-gatesavedev=none 45*7c478bd9Sstevel@tonic-gate 46*7c478bd9Sstevel@tonic-gate# 47*7c478bd9Sstevel@tonic-gate# If we previously crashed early in boot before dumpadm was used to configure 48*7c478bd9Sstevel@tonic-gate# an alternate dump device, then the dump is in the primary swap partition, 49*7c478bd9Sstevel@tonic-gate# which was configured as the dump device by the first swapadd early in boot. 50*7c478bd9Sstevel@tonic-gate# Thus before we run dumpadm to configure the dump device, we first run 51*7c478bd9Sstevel@tonic-gate# savecore to check the swap partition for a dump. 52*7c478bd9Sstevel@tonic-gate# 53*7c478bd9Sstevel@tonic-gateif [ -x /usr/bin/savecore ]; then 54*7c478bd9Sstevel@tonic-gate [ -r /etc/dumpadm.conf ] && . /etc/dumpadm.conf 55*7c478bd9Sstevel@tonic-gate 56*7c478bd9Sstevel@tonic-gate if [ "x$DUMPADM_ENABLE" != xno ] && mksavedir; then 57*7c478bd9Sstevel@tonic-gate /usr/bin/savecore $DUMPADM_SAVDIR 58*7c478bd9Sstevel@tonic-gate shift $# 59*7c478bd9Sstevel@tonic-gate set -- `/usr/sbin/dumpadm 2>/dev/null | /usr/bin/grep 'device:'` 60*7c478bd9Sstevel@tonic-gate savedev=${3:-none} 61*7c478bd9Sstevel@tonic-gate fi 62*7c478bd9Sstevel@tonic-gateelse 63*7c478bd9Sstevel@tonic-gate echo "WARNING: /usr/bin/savecore is missing or not executable" >& 2 64*7c478bd9Sstevel@tonic-gatefi 65*7c478bd9Sstevel@tonic-gate 66*7c478bd9Sstevel@tonic-gate# 67*7c478bd9Sstevel@tonic-gate# Now run dumpadm to configure the dump device based on the settings 68*7c478bd9Sstevel@tonic-gate# previously saved by dumpadm. See dumpadm(1m) for instructions on 69*7c478bd9Sstevel@tonic-gate# how to modify the dump settings. 70*7c478bd9Sstevel@tonic-gate# 71*7c478bd9Sstevel@tonic-gateif [ -x /usr/sbin/dumpadm ]; then 72*7c478bd9Sstevel@tonic-gate /usr/sbin/dumpadm -u || $SMF_EXIT_ERR_CONFIG 73*7c478bd9Sstevel@tonic-gateelse 74*7c478bd9Sstevel@tonic-gate echo "WARNING: /usr/sbin/dumpadm is missing or not executable" >& 2 75*7c478bd9Sstevel@tonic-gate exit $SMF_EXIT_ERR_CONFIG 76*7c478bd9Sstevel@tonic-gatefi 77*7c478bd9Sstevel@tonic-gate 78*7c478bd9Sstevel@tonic-gateif [ -r /etc/dumpadm.conf ]; then 79*7c478bd9Sstevel@tonic-gate . /etc/dumpadm.conf 80*7c478bd9Sstevel@tonic-gateelse 81*7c478bd9Sstevel@tonic-gate echo "WARNING: /etc/dumpadm.conf is missing or unreadable" >& 2 82*7c478bd9Sstevel@tonic-gate exit $SMF_EXIT_ERR_CONFIG 83*7c478bd9Sstevel@tonic-gatefi 84*7c478bd9Sstevel@tonic-gate 85*7c478bd9Sstevel@tonic-gate# 86*7c478bd9Sstevel@tonic-gate# Now that dumpadm has reconfigured /dev/dump, we need to run savecore again 87*7c478bd9Sstevel@tonic-gate# because the dump device may have changed. If the earlier savecore had 88*7c478bd9Sstevel@tonic-gate# saved the dump, savecore will just exit immediately. 89*7c478bd9Sstevel@tonic-gate# 90*7c478bd9Sstevel@tonic-gateif [ "x$DUMPADM_ENABLE" != xno ]; then 91*7c478bd9Sstevel@tonic-gate if /usr/sbin/swap -l | grep "^${DUMPADM_DEVICE} " >/dev/null 2>&1; then 92*7c478bd9Sstevel@tonic-gate # 93*7c478bd9Sstevel@tonic-gate # If the dump device is part of swap, we only need to run 94*7c478bd9Sstevel@tonic-gate # savecore a second time if the device is different from the 95*7c478bd9Sstevel@tonic-gate # swap device on which we initially ran savecore. 96*7c478bd9Sstevel@tonic-gate # 97*7c478bd9Sstevel@tonic-gate [ "x$savedev" != "x$DUMPADM_DEVICE" ] && \ 98*7c478bd9Sstevel@tonic-gate mksavedir && /usr/bin/savecore $DUMPADM_SAVDIR & 99*7c478bd9Sstevel@tonic-gate else 100*7c478bd9Sstevel@tonic-gate # 101*7c478bd9Sstevel@tonic-gate # The dump device couldn't have been dedicated before we 102*7c478bd9Sstevel@tonic-gate # ran dumpadm, so we must execute savecore again. 103*7c478bd9Sstevel@tonic-gate # 104*7c478bd9Sstevel@tonic-gate mksavedir && /usr/bin/savecore $DUMPADM_SAVDIR & 105*7c478bd9Sstevel@tonic-gate fi 106*7c478bd9Sstevel@tonic-gatefi 107*7c478bd9Sstevel@tonic-gate 108*7c478bd9Sstevel@tonic-gateexit $SMF_EXIT_OK 109