nfs-utils: Stop rpc.statd correctly

An incorrect process name in the nfsserver initscript prevented
rpc.statd from being shut down.

root@qemux86-64:~# /etc/init.d/nfsserver start
creating NFS state directory: done
starting 8 nfsd kernel threads: done
starting mountd: done
starting statd: done

root@qemux86-64:~# ps | grep rpc.statd
  650 root     10532 S    /usr/sbin/rpc.statd
  654 root      4720 S    grep rpc.statd

root@qemux86-64:~# /etc/init.d/nfsserver stop
stopping statd: done
stopping mountd: done
stopping nfsd: done

root@qemux86-64:~# ps | grep rpc.statd
  650 root     10532 S    /usr/sbin/rpc.statd
  662 root      4720 S    grep rpc.statd

As this daemon drops a pid file,simply use that instead.
Also add some initialization checks so the daemons are not
left partially started in the absence of kernel nfsd support.

(From OE-Core master rev: 37e70a28e9cfc773bd70f09d7129295ce891ae18)

(From OE-Core rev: 5f22bad97a3bacb87cefb54ffd785d359c58aec0)

Signed-off-by: Andy Ross <andy.ross@windriver.com>
Signed-off-by: Qiang Chen <qiang.chen@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Qiang Chen 2013-10-22 11:03:59 +08:00 committed by Richard Purdie
parent 5dacc78659
commit a1927d6c45
1 changed files with 14 additions and 4 deletions

View File

@ -25,6 +25,7 @@ test -r /etc/default/nfsd && . /etc/default/nfsd
test -x "$NFS_MOUNTD" || NFS_MOUNTD=/usr/sbin/rpc.mountd
test -x "$NFS_NFSD" || NFS_NFSD=/usr/sbin/rpc.nfsd
test -x "$NFS_STATD" || NFS_STATD=/usr/sbin/rpc.statd
test -z "$STATD_PID" && STATD_PID=/var/run/rpc.statd.pid
#
# The user mode program must also exist (it just starts the kernel
# threads using the kernel module code).
@ -77,6 +78,17 @@ stop_mountd(){
#
#nfsd
start_nfsd(){
modprobe -q nfsd
grep -q nfsd /proc/filesystems || {
echo NFS daemon support not enabled in kernel
exit 1
}
grep -q nfsd /proc/mounts || mount -t nfsd nfsd /proc/fs/nfsd
grep -q nfsd /proc/mounts || {
echo nfsd filesystem could not be mounted at /proc/fs/nfsd
exit 1
}
echo -n "starting $1 nfsd kernel threads: "
start-stop-daemon --start --exec "$NFS_NFSD" -- "$@"
echo done
@ -115,14 +127,12 @@ stop_nfsd(){
#statd
start_statd(){
echo -n "starting statd: "
start-stop-daemon --start --exec "$NFS_STATD"
start-stop-daemon --start --exec "$NFS_STATD" --pidfile "$STATD_PID"
echo done
}
stop_statd(){
# WARNING: this kills any process with the executable
# name 'statd'.
echo -n 'stopping statd: '
start-stop-daemon --stop --quiet --signal 1 --name statd
start-stop-daemon --stop --quiet --signal 1 --pidfile "$STATD_PID"
echo done
}
#----------------------------------------------------------------------