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# If the /etc/power.conf file does not have a "statefile" entry 30*7c478bd9Sstevel@tonic-gate# to specify the pathname of the cpr statefile, build one and 31*7c478bd9Sstevel@tonic-gate# add the line. We choose the largest of the standard Sun partitions. 32*7c478bd9Sstevel@tonic-gate 33*7c478bd9Sstevel@tonic-gateinit_statefile_entry() { 34*7c478bd9Sstevel@tonic-gate [ ! -f /etc/power.conf -o ! -w /etc/power.conf ] && return 35*7c478bd9Sstevel@tonic-gate 36*7c478bd9Sstevel@tonic-gate # Whitespace regular expression below is [<TAB><SPACE>] 37*7c478bd9Sstevel@tonic-gate 38*7c478bd9Sstevel@tonic-gate pattern="^[ ]*statefile[ ][ ]*/" 39*7c478bd9Sstevel@tonic-gate [ `/usr/bin/grep -c "$pattern" /etc/power.conf` -ge 1 ] && return 40*7c478bd9Sstevel@tonic-gate 41*7c478bd9Sstevel@tonic-gate avail=0 # Free blocks in current filesystem 42*7c478bd9Sstevel@tonic-gate max_avail=0 # Most available free blocks encountered so far 43*7c478bd9Sstevel@tonic-gate statefile=.CPR # Default cpr statefile name 44*7c478bd9Sstevel@tonic-gate 45*7c478bd9Sstevel@tonic-gate # Remove old statefile (if any) from root 46*7c478bd9Sstevel@tonic-gate [ -f /$statefile ] && /usr/bin/rm -f /$statefile 47*7c478bd9Sstevel@tonic-gate 48*7c478bd9Sstevel@tonic-gate /usr/bin/df -k -F ufs | 49*7c478bd9Sstevel@tonic-gate ( 50*7c478bd9Sstevel@tonic-gate read line # Skip past the header line of the df output 51*7c478bd9Sstevel@tonic-gate 52*7c478bd9Sstevel@tonic-gate while read device kbytes used avail capacity filesys; do 53*7c478bd9Sstevel@tonic-gate case $filesys in 54*7c478bd9Sstevel@tonic-gate /|/usr|/var|/export/home) 55*7c478bd9Sstevel@tonic-gate if [ $avail -gt $max_avail ]; then 56*7c478bd9Sstevel@tonic-gate max_avail=$avail 57*7c478bd9Sstevel@tonic-gate winner=$filesys 58*7c478bd9Sstevel@tonic-gate fi 59*7c478bd9Sstevel@tonic-gate ;; 60*7c478bd9Sstevel@tonic-gate esac 61*7c478bd9Sstevel@tonic-gate done 62*7c478bd9Sstevel@tonic-gate 63*7c478bd9Sstevel@tonic-gate if [ $max_avail -gt 0 ]; then 64*7c478bd9Sstevel@tonic-gate echo "statefile ${winner}/${statefile}" \ 65*7c478bd9Sstevel@tonic-gate >>/etc/power.conf 66*7c478bd9Sstevel@tonic-gate fi 67*7c478bd9Sstevel@tonic-gate 68*7c478bd9Sstevel@tonic-gate return 69*7c478bd9Sstevel@tonic-gate ) 70*7c478bd9Sstevel@tonic-gate} 71*7c478bd9Sstevel@tonic-gate 72*7c478bd9Sstevel@tonic-gatecase "$1" in 73*7c478bd9Sstevel@tonic-gate'start') 74*7c478bd9Sstevel@tonic-gate [ -z "$_INIT_UTS_ISA" ] && _INIT_UTS_ISA=`/usr/bin/uname -p` 75*7c478bd9Sstevel@tonic-gate 76*7c478bd9Sstevel@tonic-gate if [ $_INIT_UTS_ISA = sparc ]; then 77*7c478bd9Sstevel@tonic-gate init_statefile_entry 78*7c478bd9Sstevel@tonic-gate fi 79*7c478bd9Sstevel@tonic-gate 80*7c478bd9Sstevel@tonic-gate if [ -x /usr/sbin/pmconfig -a -r /etc/power.conf ]; then 81*7c478bd9Sstevel@tonic-gate /usr/sbin/pmconfig >/dev/console 2>&1 82*7c478bd9Sstevel@tonic-gate fi 83*7c478bd9Sstevel@tonic-gate ;; 84*7c478bd9Sstevel@tonic-gate 85*7c478bd9Sstevel@tonic-gate'stop') 86*7c478bd9Sstevel@tonic-gate if [ -x /usr/sbin/pmconfig ]; then 87*7c478bd9Sstevel@tonic-gate /usr/sbin/pmconfig -r >/dev/null 2>/dev/null 88*7c478bd9Sstevel@tonic-gate fi 89*7c478bd9Sstevel@tonic-gate ;; 90*7c478bd9Sstevel@tonic-gate 91*7c478bd9Sstevel@tonic-gate*) 92*7c478bd9Sstevel@tonic-gate echo "Usage: $0 { start | stop }" 93*7c478bd9Sstevel@tonic-gate exit 1 94*7c478bd9Sstevel@tonic-gate ;; 95*7c478bd9Sstevel@tonic-gateesac 96*7c478bd9Sstevel@tonic-gateexit 0 97