#!/bin/sh

# $Id: samfs_postbackout,v 1.5.12.1 2004/11/18 18:25:49 jp148923 Exp $

#	SAM-QFS_notice_begin
#
#	Solaris 2.x Sun Storage & Archiving Management File System
#
#	Copyright (c) 2004 Sun Microsystems, Inc.
#	All Rights Reserved.
#
#	Government Rights Notice
#	Use, duplication, or disclosure by the U.S. Government is
#	subject to restrictions set forth in the Sun Microsystems,
#	Inc. license agreements and as provided in DFARS 227.7202-1(a)
#	and 227.7202-3(a) (1995), DRAS 252.227-7013(c)(ii) (OCT 1988),
#	FAR 12.212(a)(1995), FAR 52.227-19, or FAR 52.227-14 (ALT III),
#	as applicable.  Sun Microsystems, Inc.
#
#	SAM-QFS_notice_end

INSLOG=/tmp/SAM_patch.log
ETCDIR=/etc/opt/SUNWsamfs
VARDIR=/var/opt/SUNWsamfs
EXEDIR=/opt/SUNWsamfs/sbin
SCRIPTS=/etc/opt/SUNWsamfs/scripts
EXAMPLE=/opt/SUNWsamfs/examples
KERNDRV=/kernel/drv

/bin/rm -f $INSLOG

echo ""
echo ""

if [ ! -f ${KERNDRV}/samst.conf ]; then
	/bin/cp ${EXAMPLE}/samst.conf ${KERNDRV}/samst.conf
else
	/bin/grep -v 'Id:' ${KERNDRV}/samst.conf > /tmp/$$.in1
	/bin/grep -v 'Id:' ${EXAMPLE}/samst.conf > /tmp/$$.in2
	/bin/diff /tmp/$$.in1 /tmp/$$.in2 > /dev/null
	if [ $? -ne 0 ]; then
		echo "samst.conf has been updated for this release."
		echo "${EXAMPLE}/samst.conf is the latest version."
		echo "Please add your changes and copy this file to"
		echo "${KERNDRV}/samst.conf ."
		echo "When you have done this you may need to run"
		echo "\"/usr/sbin/devfsadm -i samst\" if any devices were added."
		echo " "
	fi
	/bin/rm /tmp/$$.in1 /tmp/$$.in2
fi

if [ ! -f ${ETCDIR}/inquiry.conf ]; then
	/bin/cp ${EXAMPLE}/inquiry.conf ${ETCDIR}/inquiry.conf
else
	/bin/grep -v 'Id:' ${ETCDIR}/inquiry.conf > /tmp/$$.in1
	/bin/grep -v 'Id:' ${EXAMPLE}/inquiry.conf > /tmp/$$.in2
	/bin/diff /tmp/$$.in1 /tmp/$$.in2 > /dev/null
	if [ $? -ne 0 ]; then
		echo "inquiry.conf has been updated for this release."
		echo "${EXAMPLE}/inquiry.conf is the latest version."
		echo "Please add your changes and copy this file to"
		echo "${ETCDIR}/inquiry.conf ."
		echo " "
	fi
	/bin/rm /tmp/$$.in1 /tmp/$$.in2
fi

#
# Copy in default versions of the required scripts if they don't exist.
# Notify the site if the customized versions have changed.  Note that
# dev_down.sh and load_notify.sh are not required scripts.
#
SH_LIST="archiver.sh recycler.sh save_core.sh ssi.sh"
for object in $SH_LIST; do
	if [ ! -f ${SCRIPTS}/${object} ]; then
		/bin/cp ${EXAMPLE}/${object} ${SCRIPTS}/${object}
	else
		/bin/grep -v 'Id:' ${SCRIPTS}/${object} > /tmp/$$.in1
		/bin/grep -v 'Id:' ${EXAMPLE}/${object} > /tmp/$$.in2
		/bin/diff /tmp/$$.in1 /tmp/$$.in2 > /dev/null
		if [ $? -ne 0 ]; then
			echo "${object} has been updated for this release."
			echo "${EXAMPLE}/${object} is the latest version."
			echo "Please add your changes and copy this file to"
			echo "${SCRIPTS}/${object} ."
			echo " "
		fi
		/bin/rm /tmp/$$.in1 /tmp/$$.in2
	fi
	/usr/bin/chmod 0750     ${SCRIPTS}/${object}
	/usr/bin/chown root:bin ${SCRIPTS}/${object}
done

#
# Do NOT copy in default versions of the optional scripts if they don't exist.
# It is up to the site to do the copy if they want the script to be invoked.
# Notify the site if the customized versions have changed.
#
SH_LIST="dev_down.sh load_notify.sh log_rotate.sh"
for object in $SH_LIST; do
	if [ -f ${SCRIPTS}/${object} ]; then
		/bin/grep -v 'Id:' ${SCRIPTS}/${object} > /tmp/$$.in1
		/bin/grep -v 'Id:' ${EXAMPLE}/${object} > /tmp/$$.in2
		/bin/diff /tmp/$$.in1 /tmp/$$.in2 > /dev/null
		if [ $? -ne 0 ]; then
			echo "${object} has been updated for this release."
			echo "${EXAMPLE}/${object} is the latest version."
			echo "Please add your changes and copy this file to"
			echo "${SCRIPTS}/${object} ."
			echo " "
		fi
		/bin/rm /tmp/$$.in1 /tmp/$$.in2
		/usr/bin/chmod 0750     ${SCRIPTS}/${object}
		/usr/bin/chown root:bin ${SCRIPTS}/${object}
	fi
done

#
# If SunCluster is installed, make a symlink
# to the SAM-FS info for the Cluster software.
#

RTRDIR=/usr/cluster/lib/rgm/rtreg
if [ -d $RTRDIR ]; then
	ln -s /opt/SUNWsamfs/sc/etc/SUNW.qfs $RTRDIR/SUNW.qfs
fi

#
# Reset the administrator group to the previous value.
#
GROUPADM=`/bin/cat /opt/SUNWsamfs/.samgroup`
/opt/SUNWsamfs/sbin/set_admin $GROUPADM
echo " "

if [ -f /etc/sysevent/config/SUNW,SUNWsamfs,sysevent.conf ]; then
	echo "Restarting the sysevent daemon" >> $INSLOG 2>&1
	pkill -HUP syseventd >> $INSLOG 2>&1
fi

/bin/catman -w -M /opt/SUNWsamfs/man

# Add samst driver.

echo "Configuring devices.  Please wait, this may take a while."
/bin/sync
/usr/sbin/add_drv samst >> $INSLOG 2>&1
if [ $? -eq 1 ]; then
	echo "add_drv returned an error.  This can occur if there are no tape or"
	echo "optical devices connected to the system or the driver is already  "
	echo "installed.  See $INSLOG for the additional messages. "
	echo " "
fi

# Build samst devices

if [ ! -f /opt/SUNWsamfs/sbin/samdev ]; then
	echo "Issuing /usr/sbin/devfsadm -i samst >> $INSLOG 2>&1"
	/usr/sbin/devfsadm -i samst >> $INSLOG 2>&1
else
	echo "Issuing /opt/SUNWsamfs/sbin/samdev  >> $INSLOG 2>&1"
	/opt/SUNWsamfs/sbin/samdev >> $INSLOG 2>&1
fi

# Add the samioc driver
echo ""
echo "Adding samioc driver"
/usr/sbin/add_drv -m '* 0666 root sys' samioc >>$INSLOG 2>&1
if [ $? -eq 1 ]; then
	echo "add_drv returned an error adding the samioc driver. See"
	echo "$INSLOG for the additional messages."
	echo ""
	echo "Once issue is resolved, run \"/usr/sbin/add_drv samioc\" to"
	echo "add the samioc driver."
	echo ""
fi

/bin/chmod 0750 /usr/lib/fs/samfs/sam-fsd

/bin/grep -w "sam-fsd" /etc/inittab >/dev/null
if [ $? = 0 ]; then
	NUMFSD=`/bin/grep sam-fsd /etc/inittab | grep -cv "#"`
	echo " "
	if [ $NUMFSD -eq 0 ]; then
		sed -e /#*sam-fsd/s/#// < /etc/inittab > /etc/inittab.tmp
		NUMFSD=`/bin/grep sam-fsd /etc/inittab.tmp | grep -cv "#"`
		if [ $NUMFSD -eq 1 ]; then
			echo "INFO: sam-fsd entry detected in /etc/inittab"
			mv /etc/inittab.tmp /etc/inittab
			chmod 644 /etc/inittab
			echo "Please ensure run levels are correct; recommended is 023456"
			/bin/grep sam-fsd /etc/inittab
			echo " "
			echo "Restarting the init process to start sam-fsd"
			kill -HUP 1
		elif [ $NUMFSD -ne 0 ]; then
			echo "WARNING multiple sam-fsd would be active if we uncommented"
			echo "the sam-fsd lines; leaving /etc/inittab as is."
			/bin/grep sam-fsd /etc/inittab
			rm /etc/inittab.tmp
		else
			mv /etc/inittab.tmp /etc/inittab
			chmod 644 /etc/inittab
		fi
	else
		echo "INFO: sam-fsd entry detected in /etc/inittab."
		echo "Please ensure run levels are correct; recommended is 023456"
		/bin/grep sam-fsd /etc/inittab
		echo " "
		echo "Restarting the init process to start sam-fsd"
		kill -HUP 1
	fi
fi

#
# Start the sam-mgmtrpcd daemon. If the user is going to install the
# Sun Storedge SAM-QFS Manager, then the SAM-QFS Manager daemon
# has to be started.
#
MGMMODE=`cat /opt/SUNWsamfs/.sam-mgmtrpcd`
if [ X$MGMMODE != XOFF ]; then
	if [ X$MGMMODE = XALL ]; then
		/opt/SUNWsamfs/sbin/samadm config -a
	else
		/opt/SUNWsamfs/sbin/samadm config -b
	fi
fi

exit 0
