summaryrefslogtreecommitdiffstats
path: root/etc/rc.d/nfsclient
diff options
context:
space:
mode:
Diffstat (limited to 'etc/rc.d/nfsclient')
-rw-r--r--etc/rc.d/nfsclient57
1 files changed, 57 insertions, 0 deletions
diff --git a/etc/rc.d/nfsclient b/etc/rc.d/nfsclient
new file mode 100644
index 0000000..9327748
--- /dev/null
+++ b/etc/rc.d/nfsclient
@@ -0,0 +1,57 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: nfsclient
+# REQUIRE: NETWORKING mountcritremote rpcbind
+# KEYWORD: FreeBSD shutdown
+
+. /etc/rc.subr
+
+name="nfsclient"
+rcvar="nfs_client_enable"
+start_cmd="nfsclient_start"
+start_precmd="nfsclient_precmd"
+stop_cmd="unmount_all"
+
+# Load nfs module if it was not compiled into the kernel
+nfsclient_precmd()
+{
+ if ! sysctl vfs.nfs >/dev/null 2>&1; then
+ if ! kldload nfsclient ; then
+ warn 'Could not load nfs client module'
+ return 1
+ fi
+ fi
+ return 0
+}
+
+nfsclient_start()
+{
+ #
+ # Set some nfs client related sysctls
+ #
+
+ if [ -n "${nfs_access_cache}" ]; then
+ echo -n " NFS access cache time=${nfs_access_cache}"
+ sysctl vfs.nfs.access_cache_timeout=${nfs_access_cache} >/dev/null
+ fi
+ if [ -n "${nfs_bufpackets}" ]; then
+ sysctl vfs.nfs.bufpackets=${nfs_bufpackets} > /dev/null
+ fi
+
+ unmount_all
+}
+
+unmount_all()
+{
+ # If /var/db/mounttab exists, some nfs-server has not been
+ # successfully notified about a previous client shutdown.
+ # If there is no /var/db/mounttab, we do nothing.
+ if [ -f /var/db/mounttab ]; then
+ rpc.umntall -k
+ fi
+}
+load_rc_config $name
+run_rc_command "$1"
OpenPOWER on IntegriCloud