Squashed 'yocto-poky/' content from commit ea562de

git-subtree-dir: yocto-poky
git-subtree-split: ea562de57590c966cd5a75fda8defecd397e6436
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver
new file mode 100644
index 0000000..7ed93a5
--- /dev/null
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver
@@ -0,0 +1,130 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          nfs-kernel-server
+# Required-Start:    $remote_fs nfs-common $portmap hwclock
+# Required-Stop:     $remote_fs nfs-common $portmap hwclock
+# 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
+#
+# Startup script for nfs-utils
+#
+# Source function library.
+. /etc/init.d/functions
+#
+# The environment variable NFS_SERVERS may be set in /etc/default/nfsd
+# Other control variables may be overridden here too
+test -r /etc/default/nfsd && . /etc/default/nfsd
+#
+# Location of executables:
+test -x "$NFS_MOUNTD" || NFS_MOUNTD=/usr/sbin/rpc.mountd
+test -x "$NFS_NFSD" || NFS_NFSD=/usr/sbin/rpc.nfsd
+#
+# The user mode program must also exist (it just starts the kernel
+# threads using the kernel module code).
+test -x "$NFS_MOUNTD" || exit 0
+test -x "$NFS_NFSD" || exit 0
+#
+# Default is 8 threads, value is settable between 1 and the truely
+# ridiculous 99
+test "$NFS_SERVERS" != "" && test "$NFS_SERVERS" -gt 0 && test "$NFS_SERVERS" -lt 100 || NFS_SERVERS=8
+#
+#----------------------------------------------------------------------
+# Startup and shutdown functions.
+#  Actual startup/shutdown is at the end of this file.
+#mountd
+start_mountd(){
+	echo -n 'starting mountd: '
+	start-stop-daemon --start --exec "$NFS_MOUNTD" -- "-f /etc/exports $@"
+	echo done
+}
+stop_mountd(){
+	echo -n 'stopping mountd: '
+	start-stop-daemon --stop --quiet --exec "$NFS_MOUNTD"
+	echo done
+}
+#
+#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
+}
+delay_nfsd(){
+	for delay in 0 1 2 3 4 5 6 7 8 9 
+	do
+		if pidof nfsd >/dev/null
+		then
+			echo -n .
+			sleep 1
+		else
+			return 0
+		fi
+	done
+	return 1
+}
+stop_nfsd(){
+	# WARNING: this kills any process with the executable
+	# name 'nfsd'.
+	echo -n 'stopping nfsd: '
+	start-stop-daemon --stop --quiet --signal 1 --name nfsd
+	if delay_nfsd || {
+		echo failed
+		echo ' using signal 9: '
+		start-stop-daemon --stop --quiet --signal 9 --name nfsd
+		delay_nfsd
+	}
+	then
+		echo done
+	else
+		echo failed
+	fi
+}
+
+#----------------------------------------------------------------------
+#
+# supported options:
+#  start
+#  stop
+#  reload: reloads the exports file
+#  restart: stops and starts mountd
+#FIXME: need to create the /var/lib/nfs/... directories
+case "$1" in
+  start)
+	exportfs -r
+	start_nfsd "$NFS_SERVERS"
+	start_mountd
+	test -r /etc/exports && exportfs -a;;
+  stop)	exportfs -ua
+	stop_mountd
+	stop_nfsd;;
+  status)
+	status /usr/sbin/rpc.mountd
+	RETVAL=$?
+	status nfsd
+	rval=$?
+	[ $RETVAL -eq 0 ] && exit $rval
+	exit $RETVAL;;
+  reload)	test -r /etc/exports && exportfs -r;;
+  restart)
+	$0 stop
+	$0 start;;
+  *)	echo "Usage: $0 {start|stop|status|reload|restart}"
+	exit 1;;
+esac