]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - debian/nfs-kernel-server.init
Imported Debian patch 1.0.9-3
[nfs-utils.git] / debian / nfs-kernel-server.init
old mode 100755 (executable)
new mode 100644 (file)
index 0143862..52913ae
@@ -1,16 +1,16 @@
 #!/bin/sh
-#
-# nfs-kernel-server
-#              This shell script takes care of starting and stopping
-#               the kernel-mode NFS server.
-#
-# chkconfig: 345 60 20
-# description: NFS is a popular protocol for file sharing across TCP/IP \
-#              networks. This service provides NFS server functionality, \
-#              which is configured via the /etc/exports file.
-#
-
-set -e
+
+### BEGIN INIT INFO
+# Provides:          nfs-kernel-server
+# Required-Start:    $portmap $time
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Kernel NFS server support
+# Description:       NFS is a popular protocol for file sharing across
+#                   TCP/IP networks. This service provides NFS server
+#                    functionality, which is configured via the
+#                    /etc/exports file.
+### END INIT INFO
 
 # What is this?
 DESC="NFS kernel daemon"
@@ -20,7 +20,6 @@ PREFIX=/usr
 [ -x $PREFIX/sbin/rpc.nfsd    ] || exit 0
 [ -x $PREFIX/sbin/rpc.mountd  ] || exit 0
 [ -x $PREFIX/sbin/exportfs    ] || exit 0
-[ -x $PREFIX/sbin/rpc.svcgssd ] || exit 0
 
 # Read config
 DEFAULTFILE=/etc/default/nfs-kernel-server
@@ -35,8 +34,10 @@ if [ -f $DEFAULTFILE ]; then
     . $DEFAULTFILE
 fi
 
+. /lib/lsb/init-functions
+
 do_modprobe() {
-    if [ -x /sbin/modprobe ]
+    if [ -x /sbin/modprobe -a -f /proc/modules ]
     then
         modprobe -q "$1" || true
     fi
@@ -58,37 +59,34 @@ do_mount() {
 # See how we were called.
 case "$1" in
   start)
-       cd /    # daemons should have root dir as cwd
        if [ -f /etc/exports ]
        then
                do_modprobe nfsd
 
                # See if our running kernel supports the NFS kernel server
                if [ -f /proc/kallsyms ] && ! grep -qE 'init_nf(sd|     )' /proc/kallsyms; then
-                       echo "Not starting $DESC: no support in current kernel."
+                       log_warning_msg "Not starting $DESC: no support in current kernel."
                        exit 0
                fi
                
                do_mount nfsd $PROCNFSD_MOUNTPOINT || NEED_SVCGSSD=no
-               printf "Exporting directories for $DESC..."
+               log_begin_msg "Exporting directories for $DESC..."
                $PREFIX/sbin/exportfs -r
-               echo "done."
-
-               printf "Starting $DESC:"
-               if [ "$NEED_SVCGSSD" = yes ]
-               then
-                   printf " svcgssd"
-                   start-stop-daemon --start --quiet \
-                           --make-pidfile --pidfile /var/run/rpc.svcgssd.pid \
-                           --exec $PREFIX/sbin/rpc.svcgssd -- $RPCSVCGSSDOPTS
+               if [ $? != 0 ]; then
+                       log_end_msg $?
+                       exit $?
                fi
+               log_end_msg 0
 
-               printf " nfsd"
-               start-stop-daemon --start --quiet \
+               log_daemon_msg "Starting $DESC"
+               log_progress_msg "nfsd"
+               start-stop-daemon --start --oknodo --quiet \
                    --nicelevel $RPCNFSDPRIORITY \
                    --exec $PREFIX/sbin/rpc.nfsd -- $RPCNFSDCOUNT
-
-               printf " mountd"
+               if [ $? != 0 ]; then
+                       log_end_msg $?
+                       exit $?
+               fi
 
                # make sure 127.0.0.1 is a valid source for requests
                ClearAddr=
@@ -105,43 +103,71 @@ case "$1" in
 
                [ -z "$ClearAddr" ] || echo "nfsd 127.0.0.1 1" >/proc/net/rpc/auth.unix.ip/channel
 
-               start-stop-daemon --start --quiet \
+               log_progress_msg "mountd"
+               start-stop-daemon --start --oknodo --quiet \
                    --exec $PREFIX/sbin/rpc.mountd -- $RPCMOUNTDOPTS
-               echo "."
+               if [ $? != 0 ]; then
+                       log_end_msg $?
+                       exit $?
+               fi
+
+               log_end_msg 0
        else
-               echo "Not starting $DESC: No exports."
+               log_warning_msg "Not starting $DESC: no exports."
        fi
        ;;
 
   stop)
-       printf "Stopping $DESC: mountd"
+       log_daemon_msg "Stopping $DESC"
+       
+       log_progress_msg "mountd"
        start-stop-daemon --stop --oknodo --quiet \
            --name rpc.mountd --user 0
-       if [ "$NEED_SVCGSSD" = yes ]
-       then
-           printf " svcgssd"
-           start-stop-daemon --stop --oknodo --quiet \
-                   --name rpc.svcgssd --user 0
-           rm -f /var/run/rpc.svcgssd.pid
+       if [ $? != 0 ]; then
+               log_end_msg $?
+               exit $?
        fi
-       printf " nfsd"
+
+       log_progress_msg "nfsd"
        start-stop-daemon --stop --oknodo --quiet \
            --name nfsd --user 0 --signal 2
-       echo "."
+       if [ $? != 0 ]; then
+               log_end_msg $?
+               exit $?
+       fi
+
+       log_end_msg 0
 
-       printf "Unexporting directories for $DESC..."
+       log_begin_msg "Unexporting directories for $DESC..."
        $PREFIX/sbin/exportfs -au
+       if [ $? != 0 ]; then
+               log_end_msg $?
+               exit $?
+       fi
+       log_end_msg 0
+
        if mountpoint -q /proc/nfs/nfsd
        then
            $PREFIX/sbin/exportfs -f
        fi
-       echo "done."
+       ;;
+
+  status)
+       if pidof nfsd >/dev/null
+       then
+           echo "nfsd running"
+           exit 0
+       else
+           echo "nfsd not running"
+           exit 3
+       fi
        ;;
 
   reload | force-reload)
-       printf "Re-exporting directories for $DESC..."
+       log_begin_msg "Re-exporting directories for $DESC..."
        $PREFIX/sbin/exportfs -r
-       echo "done."
+       log_end_msg $?
+       exit $?
        ;;
 
   restart)
@@ -151,7 +177,7 @@ case "$1" in
        ;;
 
   *)
-       echo "Usage: nfs-kernel-server {start|stop|reload|force-reload|restart}"
+       log_success_msg "Usage: nfs-kernel-server {start|stop|status|reload|force-reload|restart}"
        exit 1
        ;;
 esac