]> git.pld-linux.org Git - packages/nfs-utils.git/blob - nfslock.init
- add support for the 'nosharecache' mount option
[packages/nfs-utils.git] / nfslock.init
1 #!/bin/sh
2 #
3 # nfslock       This shell script takes care of starting and stopping
4 #               the NSM status monitor - rpc.statd
5 #
6 # chkconfig:    345 14 82
7 # description:  The rpc.statd server implements the NSM \
8 #               (Network  Status  Monitor) RPC protocol. \
9 #               It is used by the NFS file locking service, lockd \
10 #               to implement lock recovery when the NFS server \
11 #               machine crashes and reboots.
12 # probe:        true
13
14 # Source function library.
15 . /etc/rc.d/init.d/functions
16
17 # Get network config
18 . /etc/sysconfig/network
19
20 # Get service config
21 [ -f /etc/sysconfig/nfslock ] && . /etc/sysconfig/nfslock
22
23 # Check that networking is up.
24 if is_yes "${NETWORKING}"; then
25         if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
26                 msg_network_down "RPC statd"
27                 exit 1
28         fi
29 else
30         exit 0
31 fi
32
33 if [ "$1" != "stop" ]; then
34         check_portmapper || { nls "Error: portmap isn't running" && exit 0; }
35 fi
36
37 # /usr may be on NFS, fail silently, nfsfs will start it
38 [ -x /usr/sbin/rpc.statd ] || exit 0
39
40 start() {
41         # Check if the service is already running?
42         if [ ! -f /var/lock/subsys/nfslock ]; then
43                 # Set the ports lockd should listen on
44                 if [ -n "$LOCKD_TCPPORT" ]; then
45                         /sbin/sysctl -w fs.nfs.nlm_tcpport=$LOCKD_TCPPORT >/dev/null 2>&1
46                 fi
47                 if [ -n "$LOCKD_UDPPORT" ]; then
48                         /sbin/sysctl -w fs.nfs.nlm_udpport=$LOCKD_UDPPORT >/dev/null 2>&1
49                 fi
50
51                 [ -n "$STATD_PORT" ] && STATDOPTS="$STATDOPTS -p $STATD_PORT"
52                 [ -n "$STATD_OUTPORT" ] && STATDOPTS="$STATDOPTS -o $STATD_OUTPORT"
53
54                 # Start daemons.
55                 # Don't put sm-notify here, statd will run it when started
56                 msg_starting "RPC statd"
57                 daemon rpc.statd $STATDOPTS
58                 RETVAL=$?
59                 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nfslock
60         else
61                 msg_already_running "RPC statd"
62         fi
63 }
64
65 stop() {
66         if [ -f /var/lock/subsys/nfslock ]; then
67                 # Reset the lockd ports if they were set
68                 if [ -n "$LOCKD_TCPPORT" ]; then
69                         /sbin/sysctl -w fs.nfs.nlm_tcpport=0 >/dev/null 2>&1
70                 fi
71                 if [ -n "$LOCKD_UDPPORT" ]; then
72                         /sbin/sysctl -w fs.nfs.nlm_udpport=0 >/dev/null 2>&1
73                 fi
74                 # Stop daemons.
75                 msg_stopping "RPC statd"
76                 killproc rpc.statd
77                 rm -f /var/lock/subsys/nfslock
78         else
79                 msg_not_running "RPC statd"
80         fi
81 }
82
83 RETVAL=0
84 # See how we were called.
85 case "$1" in
86   start)
87         start
88         ;;
89   stop)
90         stop
91         ;;
92   status)
93         status rpc.statd
94         exit $?
95         ;;
96   restart|force-reload)
97         stop
98         start
99         ;;
100   probe)
101         if [ ! -f /var/lock/subsys/nfslock ]; then
102                 echo start
103                 exit 0
104         fi
105         /sbin/pidof rpc.statd >/dev/null 2>&1; STATD="$?"
106         if [ $STATD = 1 ]; then
107                 echo restart
108                 exit 0
109         fi
110         ;;
111   *)
112         msg_usage "$0 {start|stop|restart|force-reload|probe|status}"
113         exit 3
114 esac
115
116 exit $RETVAL
This page took 0.758497 seconds and 3 git commands to generate.