#!/sbin/sh -
# $Id: vxrootmir.sh,v 1.7.45.1 2002/02/06 01:41:42 vinit Exp $
#ident "$Source: /project/unixvm-cvs/src/sol/cmd/vxvm/support/vxrootmir.sh,v $"

# Copyright (c) 2001 VERITAS Software Corporation.  ALL RIGHTS RESERVED.
# UNPUBLISHED -- RIGHTS RESERVED UNDER THE COPYRIGHT
# LAWS OF THE UNITED STATES.  USE OF A COPYRIGHT NOTICE
# IS PRECAUTIONARY ONLY AND DOES NOT IMPLY PUBLICATION
# OR DISCLOSURE.
# 
# THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND
# TRADE SECRETS OF VERITAS SOFTWARE.  USE, DISCLOSURE,
# OR REPRODUCTION IS PROHIBITED WITHOUT THE PRIOR
# EXPRESS WRITTEN PERMISSION OF VERITAS SOFTWARE.
# 
#               RESTRICTED RIGHTS LEGEND
# USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT IS
# SUBJECT TO RESTRICTIONS AS SET FORTH IN SUBPARAGRAPH
# (C) (1) (ii) OF THE RIGHTS IN TECHNICAL DATA AND
# COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013.
#               VERITAS SOFTWARE
# 1600 PLYMOUTH STREET, MOUNTAIN VIEW, CA 94043


: ${VOLROOT_DIR:=$__VXVM_ROOT_DIR}
. ${VOL_SCRIPTS_LIB:-$VOLROOT_DIR/usr/lib/vxvm/lib}/vxcommon

quit()
{
	exit $1
}

# doit - execute a command, printing the command in verbose mode
doit() {
	[ "$verbose" ] && cat <<-% >&3
			! $*
			%
	[ -z "$noexec" ] && "$@"
}

progname=$0
usage=`progname="$progname" egettxt \
		'Usage: \$progname [-o verify|override][-t tasktag] <disk-name>' vxvmshm:0`
Verbose=
t_tasktag=
o_flag=
o_op=
rval=
emc_lic=
VEX_ARRAY_INCOMPAT=66

options()
{
	#
	# The "verify" and "override" flag (EMC Foundations suite specific)
	# are mutually exclusive and should not be specified together.
	#

	if [ -n "$o_flag" ]
	then
		if [ "X$1" = "Xverify" -a "X$o_op" = "Xoverride" ] || \
			[ "X$1" = "Xoverride" -a "X$o_op" = "Xverify" ]
		then
			egettxt "vxvm:vxmirror: ERROR: verify and override flags are mutually exclusive "\
			vxvmshm:1391
			echo "$usage"
			quit 1
		fi
		if [ "X$1" != "X$o_op" ]
		then
			echo "$usage"
			quit 1
		fi
	else
		o_flag="-o"
		o_op="$1"
		if [ "X$o_op" != "Xverify" -a "X$o_op" != "Xoverride" ]
		then
			egettxt "vxvm:vxmirror: ERROR: keyword verify or override expected "\
			vxvmshm:1390
			echo "$usage"
			quit 1
		fi
	fi
}

check_emc_lic()
{
	/usr/sbin/vxliccheck -f "VXSYM_LIC" > /dev/null 2>&1
        if [ $? -eq 0 -a -s /usr/lib/libarray.so ]
        then
                strings /usr/lib/libarray.so | grep \
                        "EMC foundation suite" >/dev/null 2>&1
                return $?
        fi
        return 1
}

while getopts :vVt:o: c
do
	case $c in
	v)	verbose=yes; v_opt=-v;;
	V)	Verbose=yes;;
	t)	t_tasktag="-t $OPTARG";;
	o)	options	$OPTARG	;;
	?)	echo "$usage" >&2; quit 1;;
	esac
done
shift `expr $OPTIND - 1`
if [ $# -ne 1 ]
then
	echo "$usage" >&2
	quit 1
fi

# Check for the presence of TimeFinder License
# if license is present then only verify/override is useful
if [ "X$o_op" = "Xverify" -o "X$o_op" = "Xoverride" ]
then
	check_emc_lic
	emc_lic=$?
fi

# Locate the root volume

vnames=`vxprint -F "%vname" -s\
    -e "(!sd_is_log) && 
    !any(assoc.aslist.sd_disk != sd_disk)" | sort -u`

dmname=$1
daname=`vxprint -g rootdg -dF '%daname' "$dmname" 2> /dev/null`
if [ -z "$daname" ]
then
	export dmname progname; egettxt \
		"$progname: Disk $dmname not found in configuration" \
		vxvmshm:992 $progname "$@" >&2
	quit 1
fi

if [ "X$daname" = X- ]
then
	export dmname progname; egettxt \
		"$progname: No backing device for disk $dmname" \
		vxvmshm:993 $progname "$@" >&2
	quit 1
fi

[ -n "$Verbose" ] && egettxt "  Mirror volume rootvol ..." vxvmshm:23
doit vxassist $o_flag $o_op $t_tasktag mirror rootvol layout=contig,diskalign "$dmname"
rval=$?
if [ $rval -ne 0 ]
then
	if [ $rval -eq $VEX_ARRAY_INCOMPAT ]
	then
		quit $rval
	else
		quit 1
	fi
fi

if [ "X$emc_lic" != "X0" -o "X$o_op" != "Xverify" ]
then
	doit vxbootsetup $v_opt "$dmname" || quit 1
fi

quit 0
