6 DAEMON_DEPENDS
=('nfs-common')
16 # rpc.nfsd daemon & binary location
17 NFSD_PROCESS_NAME
=nfsd
18 NFSD_DAEMON_NAME
=rpc.nfsd
19 NFSD
="/usr/sbin/rpc.nfsd"
21 # rpc.svcgssd daemon & binary location
22 SVCGSSD_DAEMON_NAME
=rpc.svcgssd
23 SVCGSSD
="/usr/sbin/rpc.svcgssd"
25 # rpc.idmapd daemon & binary location
26 IDMAPD_DAEMON_NAME
=rpc.idmapd
27 IDMAPD
="/usr/sbin/rpc.idmapd"
29 # rpc.mountd daemon & binary location
30 MOUNTD_DAEMON_NAME
=rpc.mountd
31 MOUNTD
="/usr/sbin/rpc.mountd"
33 # exortfs binary location
34 EXPORTFS
="/usr/sbin/exportfs"
38 .
/etc
/conf.d
/$daemon_name.conf
40 # Default number of nfsd servers
41 [ -z "$NFSD_COUNT" ] && NFSD_COUNT
=8
43 # Default mountpoint and options for nfsd filesystem
44 [ -z "$PROCNFSD_MOUNTPOINT" ] && PROCNFSD_MOUNTPOINT
="/proc/fs/nfsd"
45 [ -z "$PROCNFSD_MOUNTOPTS" ] && PROCNFSD_MOUNTOPTS
="rw,nodev,noexec,nosuid"
47 case "$NEED_SVCGSSD" in
56 if [ -x /sbin
/modprobe
-a -f /proc
/modules
]; then
57 modprobe
-q "$1" || true
62 if ! grep -E "$1\$" /proc
/filesystems
&> /dev
/null
; then
66 if grep -vw "$1" /proc
/mounts
&> /dev
/null
; then
67 if ! mountpoint
-q "$2" ; then
68 mount
-t "$1" "$1" "$2" -o "$3"
76 if mountpoint
-q "$1" ; then
88 ck_depends
${DAEMON_DEPENDS[@]}
91 stat_busy
"Mounting nfsd filesystem"
93 do_mount nfsd
"$PROCNFSD_MOUNTPOINT" "$PROCNFSD_MOUNTOPTS"
95 if [ $rc -gt 0 ]; then
102 stat_busy
"Exporting all directories"
105 if [ $rc -gt 0 ]; then
112 stat_busy
"Starting $NFSD_DAEMON_NAME daemon"
113 PID
=$
(get_pid
$NFSD_PROCESS_NAME)
114 if [ -z "$PID" ]; then
115 [ -f /var
/run
/$NFSD_DAEMON_NAME.pid
] && rm -f /var
/run
/$NFSD_DAEMON_NAME.pid
117 $NFSD $NFSD_OPTS $NFSD_COUNT
120 if [ $rc -gt 0 ]; then
124 echo $
(get_pid
$NFSD_PROCESS_NAME) > /var
/run
/$NFSD_DAEMON_NAME.pid
132 if [ "$NEED_SVCGSSD" = yes ]; then
133 do_modprobe rpcsec_gss_krb5
134 stat_busy
"Starting $SVCGSSD_DAEMON_NAME daemon"
135 PID
=$
(get_pid
$SVCGSSD)
136 if [ -z "$PID" ]; then
137 [ -f /var
/run
/$SVCGSSD_DAEMON_NAME.pid
] && rm -f /var
/run
/$SVCGSSD_DAEMON_NAME.pid
139 $SVCGSSD $SVCGSSD_OPTS
142 if [ $rc -gt 0 ]; then
146 echo $
(get_pid
$SVCGSSD) > /var
/run
/$SVCGSSD_DAEMON_NAME.pid
155 PID
=$
(get_pid
$IDMAPD)
156 [ ! -z "$PID" ] && kill -SIGHUP $IDMAPD_DAEMON_NAME &> /dev
/null
158 stat_busy
"Starting $MOUNTD_DAEMON_NAME daemon"
159 PID
=$
(get_pid
$MOUNTD)
160 if [ -z "$PID" ]; then
161 [ -f /var
/run
/$MOUNTD_DAEMON_NAME.pid
] && rm -f /var
/run
/$MOUNTD_DAEMON_NAME.pid
166 if [ $rc -gt 0 ]; then
170 echo $
(get_pid
$MOUNTD) > /var
/run
/$MOUNTD_DAEMON_NAME.pid
178 add_daemon
$daemon_name
183 stat_busy
"Stopping $MOUNTD_DAEMON_NAME daemon"
184 PID
=$
(get_pid
$MOUNTD)
186 [ ! -z "$PID" ] && kill $PID &> /dev
/null
189 if [ $rc -gt 0 ]; then
193 rm -f /var
/run
/$MOUNTD_DAEMON_NAME.pid
&> /dev
/null
197 if [ "$NEED_SVCGSSD" = yes ]; then
198 stat_busy
"Stopping $SVCGSSD_DAEMON_NAME daemon"
199 PID
=$
(get_pid
$SVCGSSD)
201 [ ! -z "$PID" ] && kill $PID &> /dev
/null
204 if [ $rc -gt 0 ]; then
208 rm -f /var
/run
/$SVCGSSD_DAEMON_NAME.pid
&> /dev
/null
213 stat_busy
"Stopping $NFSD_DAEMON_NAME daemon"
214 PID
=$
(get_pid
$NFSD_PROCESS_NAME)
216 [ ! -z "$PID" ] && kill -2 $PID &> /dev
/null
219 if [ $rc -gt 0 ]; then
224 PID
=$
(get_pid
$NFSD_PROCESS_NAME)
225 # KILL (KILL) - just to be sure
226 [ ! -z "$PID" ] && kill -9 $PID &> /dev
/null
228 rm -f /var
/run
/$NFSD_DAEMON_NAME.pid
&> /dev
/null
232 stat_busy
"Unexporting all directories"
235 if [ $rc -gt 0 ]; then
242 # flush everything out of the kernels export table
243 if mountpoint
-q "$PROCNFSD_MOUNTPOINT" ; then
246 do_umount
"$PROCNFSD_MOUNTPOINT" 2>/dev
/null || true
247 rm_daemon
$daemon_name
251 stat_busy
"Checking $daemon_name status";
252 ck_status
$daemon_name
254 stat_busy
"Daemon $NFSD_DAEMON_NAME running"
255 PID
=$
(get_pid
$NFSD_PROCESS_NAME)
256 if [ -z "$PID" ]; then
262 stat_busy
"Daemon $MOUNTD_DAEMON_NAME running"
263 PID
=$
(get_pid
$MOUNTD)
264 if [ -z "$PID" ]; then
270 if [ "$NEED_SVCGSSD" = yes ]; then
271 stat_busy
"Daemon $SVCGSSD_DAEMON_NAME running"
272 PID
=$
(get_pid
$SVCGSSD)
273 if [ -z "$PID" ]; then
284 stat_busy
"Re-exporting all directories"
287 if [ $rc -gt 0 ]; then
301 echo "usage: $0 {start|stop|status|reload|restart}"