xref: /netbsd-src/external/gpl2/lvm2/dist/scripts/clvmd_init_red_hat (revision 7c604eea85b4f330dc75ffe65e947f4d73758aa0)
1bec4d750Shaad#!/bin/bash
2bec4d750Shaad#
3bec4d750Shaad# chkconfig: - 24 76
4bec4d750Shaad# description: Starts and stops clvmd
5bec4d750Shaad#
6bec4d750Shaad# For Red-Hat-based distributions such as Fedora, RHEL, CentOS.
7bec4d750Shaad#
8bec4d750Shaad### BEGIN INIT INFO
9*7c604eeaShaad# Provides: clvmd
10*7c604eeaShaad# Required-Start: $local_fs
11*7c604eeaShaad# Required-Stop: $local_fs
12*7c604eeaShaad# Default-Start:
13*7c604eeaShaad# Default-Stop: 0 1 6
14*7c604eeaShaad# Short-Description: Clustered LVM Daemon
15bec4d750Shaad### END INIT INFO
16bec4d750Shaad
17bec4d750Shaad. /etc/init.d/functions
18bec4d750Shaad
19bec4d750ShaadDAEMON=clvmd
20bec4d750Shaad
21bec4d750Shaadexec_prefix=
22bec4d750Shaadsbindir=${exec_prefix}/sbin
23bec4d750Shaad
24bec4d750ShaadLVDISPLAY=${sbindir}/lvdisplay
25bec4d750ShaadVGCHANGE=${sbindir}/vgchange
26bec4d750ShaadVGSCAN=${sbindir}/vgscan
27bec4d750ShaadVGDISPLAY=${sbindir}/vgdisplay
28bec4d750ShaadVGS=${sbindir}/vgs
29bec4d750Shaad
30bec4d750ShaadCLVMDOPTS="-T20"
31bec4d750Shaad
32bec4d750Shaad[ -f /etc/sysconfig/cluster ] && . /etc/sysconfig/cluster
33bec4d750Shaad
34*7c604eeaShaad[ -n "$CLVMD_CLUSTER_IFACE" ] && CLVMDOPTS="$CLVMDOPTS -I $CLVMD_CLUSTER_IFACE"
35*7c604eeaShaad
36bec4d750ShaadLOCK_FILE="/var/lock/subsys/$DAEMON"
37bec4d750Shaad
38bec4d750Shaadstart()
39bec4d750Shaad{
40bec4d750Shaad	for rtrn in 0
41bec4d750Shaad	do
42bec4d750Shaad		if ! pidof $DAEMON > /dev/null
43bec4d750Shaad		then
44bec4d750Shaad			echo -n "Starting $DAEMON: "
45bec4d750Shaad			daemon $DAEMON $CLVMDOPTS
46bec4d750Shaad			rtrn=$?
47bec4d750Shaad			echo
48bec4d750Shaad			if [ $rtrn -ne 0 ]
49bec4d750Shaad			then
50bec4d750Shaad				break
51bec4d750Shaad			fi
52bec4d750Shaad 		fi
53bec4d750Shaad		# refresh cache
54bec4d750Shaad		$VGSCAN  > /dev/null 2>&1
55bec4d750Shaad
56bec4d750Shaad		if [ -n "$LVM_VGS" ]
57bec4d750Shaad		then
58bec4d750Shaad			for vg in $LVM_VGS
59bec4d750Shaad			do
60bec4d750Shaad				action "Activating VG $vg:" $VGCHANGE -ayl $vg || rtrn=$?
61bec4d750Shaad			done
62bec4d750Shaad		else
63bec4d750Shaad			action "Activating VGs:" $VGCHANGE -ayl || rtrn=$?
64bec4d750Shaad		fi
65bec4d750Shaad	done
66bec4d750Shaad
67bec4d750Shaad	return $rtrn
68bec4d750Shaad}
69bec4d750Shaad
70bec4d750Shaadstop()
71bec4d750Shaad{
72bec4d750Shaad	for rtrn in 0
73bec4d750Shaad	do
74bec4d750Shaad		if [ -n "$LVM_VGS" ]
75bec4d750Shaad		then
76bec4d750Shaad			for vg in $LVM_VGS
77bec4d750Shaad			do
78bec4d750Shaad				action "Deactivating VG $vg:" $VGCHANGE -anl $vg || rtrn=$?
79bec4d750Shaad			done
80bec4d750Shaad		else
81bec4d750Shaad			# Hack to only deactivate clustered volumes
82bec4d750Shaad			clustervgs=`$VGDISPLAY 2> /dev/null | awk 'BEGIN {RS="VG Name"} {if (/Clustered/) print $1;}'`
83bec4d750Shaad			for vg in $clustervgs; do
84bec4d750Shaad				action "Deactivating VG $vg:" $VGCHANGE -anl $vg || rtrn=$?
85bec4d750Shaad			done
86bec4d750Shaad		fi
87bec4d750Shaad
88bec4d750Shaad		[ $rtrn -ne 0 ] && break
89bec4d750Shaad
90bec4d750Shaad		echo -n "Stopping clvm:"
91bec4d750Shaad		killproc $DAEMON -TERM
92bec4d750Shaad		rtrn=$?
93bec4d750Shaad		echo
94bec4d750Shaad	done
95bec4d750Shaad
96bec4d750Shaad	return $rtrn
97bec4d750Shaad}
98bec4d750Shaad
99bec4d750Shaadwait_for_finish()
100bec4d750Shaad{
101bec4d750Shaad	count=0
102bec4d750Shaad
103bec4d750Shaad	while [ "$count" -le 10 -a -n "`pidof $DAEMON`" ]
104bec4d750Shaad	do
105bec4d750Shaad		sleep 1
106bec4d750Shaad		count=$((count + 1))
107bec4d750Shaad	done
108bec4d750Shaad
109bec4d750Shaad	if [ `pidof $DAEMON` ]
110bec4d750Shaad	then
111bec4d750Shaad		return 1
112bec4d750Shaad	else
113bec4d750Shaad		return 0
114bec4d750Shaad	fi
115bec4d750Shaad}
116bec4d750Shaad
117*7c604eeaShaadreload() {
118*7c604eeaShaad	$DAEMON -R
119*7c604eeaShaad}
120*7c604eeaShaad
121*7c604eeaShaadrh_status() {
122*7c604eeaShaad	status $DAEMON
123*7c604eeaShaad}
124*7c604eeaShaad
125*7c604eeaShaadrh_status_q() {
126*7c604eeaShaad	rh_status >/dev/null 2>&1
127*7c604eeaShaad}
128*7c604eeaShaad
129*7c604eeaShaad
130bec4d750Shaadrtrn=1
131bec4d750Shaad
132bec4d750Shaad# See how we were called.
133bec4d750Shaadcase "$1" in
134bec4d750Shaad  start)
135bec4d750Shaad	start
136bec4d750Shaad	rtrn=$?
137bec4d750Shaad	[ $rtrn = 0 ] && touch $LOCK_FILE
138bec4d750Shaad	;;
139bec4d750Shaad
140bec4d750Shaad  stop)
141bec4d750Shaad	stop
142bec4d750Shaad	rtrn=$?
143bec4d750Shaad	[ $rtrn = 0 ] && rm -f $LOCK_FILE
144bec4d750Shaad	;;
145bec4d750Shaad
146bec4d750Shaad  restart)
147bec4d750Shaad	if stop
148bec4d750Shaad	then
149bec4d750Shaad		wait_for_finish
150bec4d750Shaad		start
151bec4d750Shaad	fi
152bec4d750Shaad	rtrn=$?
153bec4d750Shaad	;;
154bec4d750Shaad
155*7c604eeaShaad  reload)
156*7c604eeaShaad	rh_status_q || exit 7
157*7c604eeaShaad	reload
158*7c604eeaShaad	;;
159*7c604eeaShaad
160bec4d750Shaad  status)
161*7c604eeaShaad	rh_status
162bec4d750Shaad	rtrn=$?
163bec4d750Shaad	vols=$( $LVDISPLAY -C --nohead 2> /dev/null | awk '($3 ~ /....a./) {print $1}' )
164bec4d750Shaad	echo active volumes: ${vols:-"(none)"}
165bec4d750Shaad	;;
166bec4d750Shaad
167bec4d750Shaad  *)
168*7c604eeaShaad	echo $"Usage: $0 {start|stop|restart|reload|status}"
169bec4d750Shaad	;;
170bec4d750Shaadesac
171bec4d750Shaad
172bec4d750Shaadexit $rtrn
173