2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm#!/bin/sh
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm#
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# CDDL HEADER START
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm#
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# The contents of this file are subject to the terms of the
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# Common Development and Distribution License (the "License").
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# You may not use this file except in compliance with the License.
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm#
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# or http://www.opensolaris.org/os/licensing.
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# See the License for the specific language governing permissions
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# and limitations under the License.
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm#
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# When distributing Covered Code, include this CDDL HEADER in each
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# If applicable, add the following below this CDDL HEADER, with the
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# fields enclosed by brackets "[]" replaced with your own identifying
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# information: Portions Copyright [yyyy] [name of copyright owner]
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm#
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# CDDL HEADER END
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm#
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm#
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# Use is subject to license terms.
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm#
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# ident "%Z%%M% %I% %E% SMI"
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm#
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm# Start mirror resync threads.
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmDEVFSADM=/usr/sbin/devfsadm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmMETADEVADM=/usr/sbin/metadevadm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmMETASYNC=/usr/sbin/metasync
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmMETADEV=/dev/md/admin
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmMETASET=/usr/sbin/metaset
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmTMPFILE=/var/run/metaset.$$
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm. /lib/svc/share/smf_include.sh
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmprint_verbose()
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm{
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm echo "Unable to resolve unnamed devices for volume management."
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm echo "Please refer to the Solaris Volume Manager documentation,"
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm echo "Troubleshooting section, at http://docs.sun.com or from"
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm echo "your local copy."
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm}
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmresolve_auto_take_sets()
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm{
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm if [ -x $METASET ]; then
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm # Fixing up of the ctd names for devices in auto take
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm # sets relies heavily on the output of the metaset
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm # command. Any change to the output of the metaset command
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm # should modify this script as well in order ensure nothing
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm # breaks
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm #
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm # The following command saves all of the auto-take set names
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm # into the TMPFILE
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm name_str=`gettext "Set name"`
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm mn_str=`gettext "Multi-owner"`
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm $METASET | /bin/nawk -F ' |\t|,' -v snm="$name_str" \
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm -v mstr="$mn_str" '$0 ~ snm { \
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm if (index($0, mstr) == 0) print $4 \
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm }' > $TMPFILE 2>&1
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm if [ -s "$TMPFILE" ]; then
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm localised_string=`gettext "Yes (auto)"`
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm for i in `cat $TMPFILE`; do
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm $METASET -s $i | grep "$localised_string" \
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm > /dev/null 2>&1
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm if [ $? -eq 0 ]; then
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm $METADEVADM -l -r -s $i
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm error=$?
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm case $error in
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm 0|2) ;;
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm 3) print_verbose
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm ;;
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm *) echo "$METADEVADM \
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm -r failure $error."
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm ;;
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm esac
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm fi
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm done
a1e4d62bc1ea0bd683c63f185da43cda7aec8f20hshaw fi
a1e4d62bc1ea0bd683c63f185da43cda7aec8f20hshaw if [ -f "$TMPFILE" ]; then
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm /usr/bin/rm -f $TMPFILE
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm fi
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm fi
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm}
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmif [ ! -s /kernel/drv/md.conf ]; then
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm echo "/kernel/drv/md.conf is missing."
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm exit 0
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmfi
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmif grep '^mddb_bootlist' /kernel/drv/md.conf >/dev/null 2>&1; then :; else
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm echo "No 'mddb_bootlist' entry in /kernel/drv/md.conf."
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm exit 0
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmfi
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmif [ ! -x $METADEVADM ]; then
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm echo "$METADEVADM is missing or not executable."
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm exit $SMF_EXIT_ERR_CONFIG
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmfi
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmif [ ! -x $METASYNC ]; then
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm echo "$METASYNC is missing or not executable."
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm exit $SMF_EXIT_ERR_CONFIG
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmfi
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmif [ ! -c $METADEV ]; then
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm echo "$METADEV is missing or not a character device."
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm exit 0
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmfi
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm$METADEVADM -l -r
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmerror=$?
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmcase $error in
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm0|2) ;;
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm3) echo "Executing devfsadm"
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm $DEVFSADM
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm devfsadmerror=$?
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm if [ $devfsadmerror = 0 ]; then
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm echo "Executing metadevadm -r"
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm $METADEVADM -l -r
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm error=$?
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm fi
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm if [ $devfsadmerror != 0 -o $error = 3 ]; then
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm print_verbose
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm elif [ $error != 0 -a $error != 2 ]; then
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm echo "$METADEVADM -r failure $error."
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm fi
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm ;;
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm*) echo "$METADEVADM -r failure $error."
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm exit 1
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm ;;
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmesac
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmresolve_auto_take_sets
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm$METASYNC -r
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmerror=$?
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmcase $error in
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm0) ;;
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm*) echo "Unknown $METASYNC -r failure $error."
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm exit 1
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm ;;
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanmesac
2fb876ae0cefcbd01f8d8490242aa4501caddbc3jeanm