]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - debian/nfs-kernel-server.init
Imported Debian patch 1.2.1-2
[nfs-utils.git] / debian / nfs-kernel-server.init
index 15b3254933635dcea10582b9780ea970871453bb..4291e09e8d38959a6373409de9ae02ab3c84acbe 100644 (file)
@@ -1,14 +1,17 @@
 #!/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.
-#
+
+### BEGIN INIT INFO
+# Provides:          nfs-kernel-server
+# Required-Start:    $remote_fs nfs-common $portmap $time
+# Required-Stop:     $remote_fs nfs-common $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"
@@ -24,8 +27,7 @@ DEFAULTFILE=/etc/default/nfs-kernel-server
 RPCNFSDCOUNT=8
 RPCNFSDPRIORITY=0
 RPCMOUNTDOPTS=
-NEED_SVCGSSD=yes
-RPCGSSDOPTS=
+NEED_SVCGSSD=no
 RPCSVCGSSDOPTS=
 PROCNFSD_MOUNTPOINT=/proc/fs/nfsd
 if [ -f $DEFAULTFILE ]; then
@@ -35,7 +37,7 @@ 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
@@ -62,7 +64,7 @@ case "$1" in
                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
+               if [ -f /proc/kallsyms ] && ! grep -Eqm1 ' nfsd_.* *\[nfsd\]' /proc/kallsyms; then
                        log_warning_msg "Not starting $DESC: no support in current kernel."
                        exit 0
                fi
@@ -70,9 +72,10 @@ case "$1" in
                do_mount nfsd $PROCNFSD_MOUNTPOINT || NEED_SVCGSSD=no
                log_begin_msg "Exporting directories for $DESC..."
                $PREFIX/sbin/exportfs -r
-               if [ $? != 0 ]; then
-                       log_end_msg $?
-                       exit $?
+               RET=$?
+               if [ $RET != 0 ]; then
+                       log_end_msg $RET
+                       exit $RET
                fi
                log_end_msg 0
 
@@ -81,9 +84,10 @@ case "$1" in
                start-stop-daemon --start --oknodo --quiet \
                    --nicelevel $RPCNFSDPRIORITY \
                    --exec $PREFIX/sbin/rpc.nfsd -- $RPCNFSDCOUNT
-               if [ $? != 0 ]; then
-                       log_end_msg $?
-                       exit $?
+               RET=$?
+               if [ $RET != 0 ]; then
+                       log_end_msg $RET
+                       exit $RET
                fi
 
                # make sure 127.0.0.1 is a valid source for requests
@@ -100,13 +104,26 @@ case "$1" in
                    RPCMOUNTDOPTS="$RPCMOUNTDOPTS --no-nfs-version 3"
 
                [ -z "$ClearAddr" ] || echo "nfsd 127.0.0.1 1" >/proc/net/rpc/auth.unix.ip/channel
+       
+               if [ "$NEED_SVCGSSD" = "yes" ]; then
+                       do_modprobe rpcsec_gss_krb5
+                       log_progress_msg "svcgssd"
+                       start-stop-daemon --start --oknodo --quiet \
+                           --exec $PREFIX/sbin/rpc.svcgssd -- $RPCSVCGSSDOPTS
+                       RET=$?
+                       if [ $RET != 0 ]; then
+                               log_end_msg $RET
+                               exit $RET
+                       fi
+               fi
 
                log_progress_msg "mountd"
                start-stop-daemon --start --oknodo --quiet \
                    --exec $PREFIX/sbin/rpc.mountd -- $RPCMOUNTDOPTS
-               if [ $? != 0 ]; then
-                       log_end_msg $?
-                       exit $?
+               RET=$?
+               if [ $RET != 0 ]; then
+                       log_end_msg $RET
+                       exit $RET
                fi
 
                log_end_msg 0
@@ -117,34 +134,48 @@ case "$1" in
 
   stop)
        log_daemon_msg "Stopping $DESC"
-       
+
        log_progress_msg "mountd"
        start-stop-daemon --stop --oknodo --quiet \
            --name rpc.mountd --user 0
-       if [ $? != 0 ]; then
-               log_end_msg $?
-               exit $?
+       RET=$?
+       if [ $RET != 0 ]; then
+               log_end_msg $RET
+               exit $RET
+       fi
+
+       if [ "$NEED_SVCGSSD" = "yes" ]; then
+               log_progress_msg "svcgssd"
+               start-stop-daemon --stop --oknodo --quiet \
+                   --name rpc.svcgssd --user 0
+               RET=$?
+               if [ $RET != 0 ]; then
+                       log_end_msg $RET
+                       exit $RET
+               fi
        fi
 
        log_progress_msg "nfsd"
        start-stop-daemon --stop --oknodo --quiet \
            --name nfsd --user 0 --signal 2
-       if [ $? != 0 ]; then
-               log_end_msg $?
-               exit $?
+       RET=$?
+       if [ $RET != 0 ]; then
+               log_end_msg $RET
+               exit $RET
        fi
 
        log_end_msg 0
 
        log_begin_msg "Unexporting directories for $DESC..."
        $PREFIX/sbin/exportfs -au
-       if [ $? != 0 ]; then
-               log_end_msg $?
-               exit $?
+       RET=$?
+       if [ $RET != 0 ]; then
+               log_end_msg $RET
+               exit $RET
        fi
        log_end_msg 0
 
-       if mountpoint -q /proc/nfs/nfsd
+       if mountpoint -q $PROCNFSD_MOUNTPOINT
        then
            $PREFIX/sbin/exportfs -f
        fi
@@ -164,8 +195,9 @@ case "$1" in
   reload | force-reload)
        log_begin_msg "Re-exporting directories for $DESC..."
        $PREFIX/sbin/exportfs -r
-       log_end_msg $?
-       exit $?
+       RET=$?
+       log_end_msg $RET
+       exit $RET
        ;;
 
   restart)