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