merge from tridge
[sahlberg/ctdb.git] / config / events.d / 60.nfs
1 #!/bin/sh
2 # script to manage nfs in a clustered environment
3
4 . /etc/ctdb/functions
5 loadconfig nfs
6
7 [ "$CTDB_MANAGES_NFS" = "yes" ] || exit 0
8
9 cmd="$1"
10 shift
11
12 PATH=/usr/bin:/bin:/usr/sbin:/sbin:$PATH
13
14 case $cmd in 
15      startup)
16         mkdir -p /etc/ctdb/state/nfs
17
18         # wait for all nfs exported directories to become available
19         nfs_dirs=`grep -v '^#' < /etc/exports | cut -d' ' -f1`
20         ctdb_wait_directories "NFS" $nfs_dirs
21
22         # make sure nfs is stopped before we start it, or it may get a bind error
23         service nfs stop > /dev/null 2>&1
24         service nfs start
25         ;;
26
27      shutdown)
28         service nfs stop
29         ;;
30
31      releaseip)
32         iface=$1
33         ip=$2
34         maskbits=$3
35
36         echo $ip >> /etc/ctdb/state/nfs/restart
37         exit 0
38         ;;
39
40      recovered)
41         # restart NFS to ensure that all TCP connections to the released ip
42         # are closed
43         [ -f /etc/ctdb/state/nfs/restart ] && {
44                 ( service nfs status > /dev/null 2>&1 && 
45                       service nfs restart > /dev/null 2>&1 ) &
46         } > /dev/null 2>&1
47         /bin/rm -f /etc/ctdb/state/nfs/restart
48         ;;
49
50       monitor)
51         # check that NFS responds to rpc requests
52         ctdb_check_rpc "NFS" 100003 3
53         ctdb_check_rpc "mount" 100005 1
54
55         # and that its directories are available
56         nfs_dirs=`grep -v '^#' < /etc/exports | cut -d' ' -f1`
57         ctdb_check_directories "nfs" $nfs_dirs
58         ;;
59
60 esac
61
62 exit 0