]> git.pld-linux.org Git - packages/nfs-utils.git/blob - nfsfs.init
- no need to mount rpc_pipefs here, idmapd will do/already did it for us
[packages/nfs-utils.git] / nfsfs.init
1 #!/bin/sh
2 #
3 # nfsfs         Mount NFS filesystems.
4 #
5 # Version:      @(#) /etc/init.d/skeleton 1.01 26-Oct-1993
6 #
7 # Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
8 #
9 # chkconfig:    345 16 80
10 # description:  Mounts and unmounts all Network File System (NFS) \
11 #               mount points.
12 #
13 # $Id$
14
15 # Source networking configuration.
16 if [ ! -f /etc/sysconfig/network ]; then
17         exit 0
18 fi
19
20 # Source function library.
21 . /etc/rc.d/init.d/functions
22
23 # Get network config
24 . /etc/sysconfig/network
25
26 # Get service config
27 [ -f /etc/sysconfig/nfsfs ] && . /etc/sysconfig/nfsfs
28 [ -f /etc/sysconfig/nfslock ] && . /etc/sysconfig/nfslock
29
30 # Check that networking is up.
31 if is_yes "${NETWORKING}"; then
32         if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
33                 msg_network_down nfsfs
34                 exit 1
35         fi
36 else
37         exit 0
38 fi
39
40 if [ -x /sbin/pidof ] && [ "$1" != "stop" ]; then
41         [ -z "`/sbin/pidof portmap`" ] && nls "Error: portmap isn't running" && exit 0
42 fi
43
44 start() {
45         if [ ! -f /var/lock/subsys/nfsfs ]; then
46                 # Set the ports lockd should listen on
47                 if [ -n "$LOCKD_TCPPORT" ]; then
48                         /sbin/sysctl -w fs.nfs.nlm_tcpport=$LOCKD_TCPPORT >/dev/null 2>&1
49                 fi
50                 if [ -n "$LOCKD_UDPPORT" ]; then
51                         /sbin/sysctl -w fs.nfs.nlm_udpport=$LOCKD_UDPPORT >/dev/null 2>&1
52                 fi
53
54                 # Special case /usr first
55                 if ! awk '{ if ($2 == "/usr" && $3 ~ /^nfs(4$|$)/ && $4 !~ /noauto/) exit 1}' /etc/fstab ; then
56                         run_cmd "Mounting /usr filesystem" mount /usr
57                         # In case of /usr over NFS idmapd, gssd and lockd may not start
58                         # check if they're running and try to start them if not
59                         /sbin/service idmapd status >/dev/null || /sbin/service idmapd start
60                         /sbin/service gssd status >/dev/null || /sbin/service gssd start
61                         /sbin/service nfslock status >/dev/null || /sbin/service nfslock start
62                 fi
63                 run_cmd "Mounting NFS filesystems" mount -a -t nfs,nfs4
64                 touch /var/lock/subsys/nfsfs
65
66         else
67             msg_already_running "NFSFS"
68         fi
69 }
70
71 stop() {
72         if [ -f /proc/mounts ]; then
73                 fsfile="/proc/mounts"
74         else
75                 fsfile="/etc/mtab"
76         fi
77
78         show "Unmounting NFS filesystems"
79         busy
80         retry=3
81         remaining=$(awk '$3 ~ /^nfs(4$|$)/ {print $2}' $fsfile)
82         while [ -n "$remaining" -a $retry -gt 0 ]; do
83                 fuser -msk -TERM `awk '$3 ~ /^nfs(4$|$)/ {print $2}' < $fsfile`
84                 sleep 2
85                 fuser -msk -KILL `awk '$3 ~ /^nfs(4$|$)/ {print $2}' < $fsfile`
86                 umount -a -f -t nfs,nfs4
87                 remaining=$(awk '$3 ~ /^nfs(4$|$)/ {print $2}' $fsfile)
88                 retry=$(($retry-1))
89         done
90         ok
91         rm -f /var/lock/subsys/nfsfs
92 }
93
94 # See how we were called.
95 case "$1" in
96   start)
97         start
98         ;;
99   stop)
100         stop
101         ;;
102   status)
103         if [ -f /proc/mounts ]; then
104                 echo "Configured NFS mountpoints:"
105                 grep -v '^#' /etc/fstab | \
106                   awk '{ if ($3 ~ /^nfs(4$|$)/ && $4 !~ /noauto/) print $2}'
107                 echo "Active NFS mountpoints:"
108                 grep -v '^#' /proc/mounts | \
109                   awk '{ if ($3 ~ /^nfs(4$|$)/ && $4 !~ /noauto/) print $2}'
110         else
111                 echo "/proc filesystem unavailable"
112         fi
113         ;;
114   restart)
115         stop
116         start
117         ;;
118   reload|force-reload)
119         mount -a -t nfs,nfs4
120         ;;
121   *)
122         msg_usage "$0 {start|stop|restart|reload|force-reload|status}"
123         exit 3
124 esac
125
126 exit 0
This page took 0.041214 seconds and 4 git commands to generate.