aboutsummaryrefslogtreecommitdiff
path: root/libexec/rc/rc.d/nfsclient
diff options
context:
space:
mode:
Diffstat (limited to 'libexec/rc/rc.d/nfsclient')
-rwxr-xr-xlibexec/rc/rc.d/nfsclient53
1 files changed, 53 insertions, 0 deletions
diff --git a/libexec/rc/rc.d/nfsclient b/libexec/rc/rc.d/nfsclient
new file mode 100755
index 000000000000..857cfa02036f
--- /dev/null
+++ b/libexec/rc/rc.d/nfsclient
@@ -0,0 +1,53 @@
+#!/bin/sh
+#
+#
+
+# PROVIDE: nfsclient
+# REQUIRE: NETWORKING mountcritremote rpcbind
+# KEYWORD: nojail shutdown
+
+. /etc/rc.subr
+
+name="nfsclient"
+desc="NFS client setup"
+rcvar="nfs_client_enable"
+start_cmd="nfsclient_start"
+stop_cmd="unmount_all"
+required_modules="nfscl:nfs"
+
+nfsclient_start()
+{
+ #
+ # Set some nfs client related sysctls
+ #
+
+ if [ -n "${nfs_access_cache}" ]; then
+ startmsg "NFS access cache time=${nfs_access_cache}"
+ if ! sysctl vfs.nfs.access_cache_timeout=${nfs_access_cache} >/dev/null; then
+ warn "failed to set access cache timeout"
+ fi
+ fi
+ if [ -n "${nfs_bufpackets}" ]; then
+ if ! sysctl vfs.nfs.bufpackets=${nfs_bufpackets} > /dev/null; then
+ warn "failed to set vfs.nfs.bufpackets"
+ fi
+ 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
+
+# no unmounting in svcj
+nfsclient_svcj="NO"
+
+run_rc_command "$1"