/[packages]/cauldron/nfs-utils/current/SOURCES/nfs-common.init
ViewVC logotype

Contents of /cauldron/nfs-utils/current/SOURCES/nfs-common.init

Parent Directory Parent Directory | Revision Log Revision Log


Revision 49044 - (show annotations) (download)
Tue Feb 8 16:36:05 2011 UTC (13 years, 2 months ago) by ennael
File size: 4481 byte(s)
imported package nfs-utils
1 #!/bin/sh
2
3 # chkconfig: 345 14 86
4 # description: NFS support files common to client and server
5
6 ### BEGIN INIT INFO
7 # Provides: nfs-common
8 # Required-Start: $portmap
9 # Required-Stop: $portmap
10 # Default-Start: 3 4 5 S
11 # Default-Stop: 0 1 6
12 # Short-Description: NFS support files common to client and server
13 # Description: NFS is a popular protocol for file sharing across
14 # TCP/IP networks. This service provides various
15 # support functions for NFS mounts.
16 ### END INIT INFO
17
18 # Source function library.
19 . /etc/rc.d/init.d/functions
20
21 # Source networking configuration.
22 . /etc/sysconfig/network
23
24 # Check that networking is up.
25 [ "${NETWORKING}" = "no" ] && exit 0
26
27 # Read config
28 NAME="NFS common utilities"
29 LOCKFILE=/var/lock/subsys/nfs-common
30 NEED_STATD=yes
31 NEED_IDMAPD=yes
32 NEED_GSSD=
33 PIPEFS_MOUNTPOINT=/var/lib/nfs/rpc_pipefs
34 [ -f /etc/sysconfig/nfs-common ] && . /etc/sysconfig/nfs-common
35
36 # Parse the fstab file, and determine whether we need gssd.
37 # (The /etc/sysconfig settings, if any, will override our autodetection)
38 AUTO_NEED_GSSD=no
39
40 while read DEV MTPT FSTYPE OPTS REST; do
41 case "$OPTS" in
42 sec=krb5|*,sec=krb5|sec=krb5,*|*,sec=krb5i,*|sec=krb5i|*,sec=krb5i|sec=krb5i,*|*,sec=krb5i,*|sec=krb5p|*,sec=krb5p|sec=krb5p,*|*,sec=krb5p,*)
43 AUTO_NEED_GSSD=yes
44 ;;
45 esac
46 done < /etc/fstab
47
48 case "$NEED_STATD" in
49 yes|no)
50 ;;
51 *)
52 NEED_STATD=yes
53 ;;
54 esac
55
56 case "$NEED_IDMAPD" in
57 yes|no)
58 ;;
59 *)
60 NEED_IDMAPD=yes
61 ;;
62 esac
63
64 case "$NEED_GSSD" in
65 yes|no)
66 ;;
67 *)
68 NEED_GSSD=$AUTO_NEED_GSSD
69 ;;
70 esac
71
72 do_modprobe() {
73 if [ -x /sbin/modprobe -a -f /proc/modules ]; then
74 modprobe -q "$1" || true
75 fi
76 }
77
78 do_mount() {
79 if ! grep -E -qs "$1\$" /proc/filesystems; then
80 return 1
81 fi
82 if ! mountpoint -q "$2"; then
83 mount -t "$1" "$1" "$2"
84 return
85 fi
86 return 0
87 }
88
89 do_umount() {
90 if mountpoint -q "$1"; then
91 umount "$1"
92 fi
93 return 0
94 }
95
96 start() {
97 if [ ! -f $LOCKFILE ]; then
98 echo "Starting $NAME"
99
100 # Set the ports lockd should listen on
101 if [ -n "$LOCKD_TCPPORT" ]; then
102 /sbin/sysctl -w fs.nfs.nlm_tcpport=$LOCKD_TCPPORT >/dev/null 2>&1
103 fi
104 if [ -n "$LOCKD_UDPPORT" ]; then
105 /sbin/sysctl -w fs.nfs.nlm_udpport=$LOCKD_UDPPORT >/dev/null 2>&1
106 fi
107
108 if [ "$NEED_STATD" = yes ]; then
109 echo -n "Starting rpc.statd"
110 daemon rpc.statd $STATD_OPTIONS
111 rc=$?
112 echo
113 if [ $rc != 0 ]; then
114 return $rc
115 fi
116 fi
117
118 if [ "$NEED_IDMAPD" = yes ] || [ "$NEED_GSSD" = yes ]; then
119 do_modprobe nfs
120 do_modprobe nfs4
121 if do_mount rpc_pipefs $PIPEFS_MOUNTPOINT; then
122 if [ "$NEED_IDMAPD" = yes ]; then
123 echo -n "Starting rpc.idmapd"
124 daemon rpc.idmapd $RPCIDMAPD_OPTIONS
125 rc=$?
126 echo
127 if [ $rc != 0 ]; then
128 return $rc
129 fi
130 fi
131 if [ "$NEED_GSSD" = yes ]; then
132 do_modprobe rpcsec_gss_krb5
133
134 echo -n "Starting rpc.gssd"
135 daemon rpc.gssd $RPCGSSD_OPTIONS
136 rc=$?
137 echo
138 if [ $rc != 0 ]; then
139 return $rc
140 fi
141 fi
142 fi
143 fi
144
145 touch $LOCKFILE
146 fi
147 return 0
148 }
149
150 stop() {
151 echo "Stopping $NAME"
152
153 if [ "$NEED_GSSD" = yes ]; then
154 echo -n "Stopping rpc.gssd: "
155 killproc rpc.gssd
156 rc=$?
157 echo
158 if [ $rc != 0 ]; then
159 return $rc
160 fi
161 fi
162 if [ "$NEED_IDMAPD" = yes ]; then
163 echo -n "Stopping rpc.idmapd: "
164 killproc rpc.idmapd
165 rc=$?
166 echo
167 if [ $rc != 0 ]; then
168 return $rc
169 fi
170 fi
171 if status lockd >/dev/null; then
172 echo -n "Stopping kernel lockd: "
173 killproc lockd -KILL
174 echo
175 fi
176 if [ "$NEED_STATD" = yes ]; then
177 echo -n "Stopping rpc.statd: "
178 killproc rpc.statd
179 rc=$?
180 echo
181 if [ $rc != 0 ]; then
182 return $rc
183 fi
184 fi
185 do_umount $PIPEFS_MOUNTPOINT 2>/dev/null || true
186
187 # Reset the lockd ports if they were set
188 if [ -n "$LOCKD_TCPPORT" ]; then
189 /sbin/sysctl -w fs.nfs.nlm_tcpport=0 >/dev/null 2>&1
190 fi
191 if [ -n "$LOCKD_UDPPORT" ]; then
192 /sbin/sysctl -w fs.nfs.nlm_udpport=0 >/dev/null 2>&1
193 fi
194
195 rm -f $LOCKFILE
196 return 0
197 }
198
199 # See how we were called.
200 case "$1" in
201 start)
202 start
203 ;;
204 stop)
205 stop
206 ;;
207 status)
208 if [ "$NEED_STATD" = yes ]; then
209 status rpc.statd
210 fi
211
212 if [ "$NEED_GSSD" = yes ]; then
213 status rpc.gssd
214 fi
215
216 if [ "$NEED_IDMAPD" = yes ]; then
217 status rpc.idmapd
218 fi
219 ;;
220 restart|reload)
221 stop
222 sleep 1
223 start
224 ;;
225 *)
226 echo "Usage: $0 {start|stop|restart|reload|status}"
227 exit 1
228 ;;
229 esac
230
231 exit 0

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.30