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