5 # The contents of this file are subject to the terms of the
6 # Common Development and Distribution License (the "License").
7 # You may not use this file except in compliance with the License.
9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 # or http://www.opensolaris.org/os/licensing.
11 # See the License for the specific language governing permissions
12 # and limitations under the License.
14 # When distributing Covered Code, include this CDDL HEADER in each
15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 # If applicable, add the following below this CDDL HEADER, with the
17 # fields enclosed by brackets "[]" replaced with your own identifying
18 # information: Portions Copyright [yyyy] [name of copyright owner]
23 # Copyright 2006 Sun Microsystems, Inc. All rights reserved.
24 # Use is subject to license terms.
26 # ident "%Z%%M% %I% %E% SMI"
28 # Start mirror resync threads.
30 DEVFSADM
=/usr
/sbin
/devfsadm
31 METADEVADM
=/usr
/sbin
/metadevadm
32 METASYNC
=/usr
/sbin
/metasync
34 METASET
=/usr
/sbin
/metaset
35 TMPFILE
=/var
/run
/metaset.$$
37 .
/lib
/svc
/share
/smf_include.sh
41 echo "Unable to resolve unnamed devices for volume management."
42 echo "Please refer to the Solaris Volume Manager documentation,"
43 echo "Troubleshooting section, at http://docs.sun.com or from"
44 echo "your local copy."
47 resolve_auto_take_sets
()
49 if [ -x $METASET ]; then
50 # Fixing up of the ctd names for devices in auto take
51 # sets relies heavily on the output of the metaset
52 # command. Any change to the output of the metaset command
53 # should modify this script as well in order ensure nothing
56 # The following command saves all of the auto-take set names
58 name_str
=`gettext "Set name"`
59 mn_str
=`gettext "Multi-owner"`
60 $METASET |
/bin
/nawk
-F ' |\t|,' -v snm
="$name_str" \
61 -v mstr
="$mn_str" '$0 ~ snm { \
62 if (index($0, mstr) == 0) print $4 \
65 if [ -s "$TMPFILE" ]; then
66 localised_string
=`gettext "Yes (auto)"`
67 for i
in `cat $TMPFILE`; do
68 $METASET -s $i |
grep "$localised_string" \
71 $METADEVADM -l -r -s $i
77 *) echo "$METADEVADM \
84 if [ -f "$TMPFILE" ]; then
85 /usr
/bin
/rm -f $TMPFILE
90 if [ ! -s /kernel
/drv
/md.conf
]; then
91 echo "/kernel/drv/md.conf is missing."
95 if grep '^mddb_bootlist' /kernel
/drv
/md.conf
>/dev
/null
2>&1; then :; else
96 echo "No 'mddb_bootlist' entry in /kernel/drv/md.conf."
100 if [ ! -x $METADEVADM ]; then
101 echo "$METADEVADM is missing or not executable."
102 exit $SMF_EXIT_ERR_CONFIG
105 if [ ! -x $METASYNC ]; then
106 echo "$METASYNC is missing or not executable."
107 exit $SMF_EXIT_ERR_CONFIG
110 if [ ! -c $METADEV ]; then
111 echo "$METADEV is missing or not a character device."
120 3) echo "Executing devfsadm"
123 if [ $devfsadmerror = 0 ]; then
124 echo "Executing metadevadm -r"
128 if [ $devfsadmerror != 0 -o $error = 3 ]; then
130 elif [ $error != 0 -a $error != 2 ]; then
131 echo "$METADEVADM -r failure $error."
135 *) echo "$METADEVADM -r failure $error."
140 resolve_auto_take_sets
147 *) echo "Unknown $METASYNC -r failure $error."