xref: /dragonfly/etc/rc.d/nfsclient (revision 60233e58)
1#!/bin/sh
2#
3# $FreeBSD: src/etc/rc.d/nfsclient,v 1.3 2002/10/12 10:31:31 schweikh Exp $
4# $DragonFly: src/etc/rc.d/nfsclient,v 1.6 2005/11/19 21:47:32 swildner Exp $
5#
6
7# PROVIDE: nfsclient
8# REQUIRE: NETWORKING mountcritremote rpcbind
9# KEYWORD: shutdown
10
11. /etc/rc.subr
12
13name="nfsclient"
14rcvar="nfs_client_enable"
15start_cmd="nfsclient_start"
16start_precmd="nfsclient_precmd"
17stop_cmd="unmount_all"
18
19# Load nfs module if it was not compiled into the kernel
20nfsclient_precmd()
21{
22	if ! sysctl vfs.nfs >/dev/null 2>&1; then
23		if ! kldload nfs; then
24			warn 'Could not load nfs module'
25			return 1
26		fi
27	fi
28	return 0
29}
30
31nfsclient_start()
32{
33	#
34	# Run nfsiod and set some nfs client related sysctls
35	#
36	echo -n "NFS CLIENT:"
37	if [ -n "${nfs_client_flags}" ]; then
38		echo -n ' nfsiod'
39		nfsiod ${nfs_client_flags}
40	fi
41
42	if [ -n "${nfs_access_cache}" ]; then
43		sysctl vfs.nfs.access_cache_timeout=${nfs_access_cache} >/dev/null
44	fi
45	if [ -n "${nfs_neg_cache}" ]; then
46		sysctl vfs.nfs.neg_cache_timeout=${nfs_neg_cache} >/dev/null
47	fi
48	if [ -n "${nfs_bufpackets}" ]; then
49		sysctl vfs.nfs.bufpackets=${nfs_bufpackets} > /dev/null
50	fi
51	echo -n " access_cache_timeout=`sysctl -n vfs.nfs.access_cache_timeout`"
52	echo -n " neg_cache_timeout=`sysctl -n vfs.nfs.neg_cache_timeout`"
53	echo ""
54	unmount_all
55}
56
57unmount_all()
58{
59	# If /var/db/mounttab exists, some nfs-server has not been
60	# successfully notified about a previous client shutdown.
61	# If there is no /var/db/mounttab, we do nothing.
62
63	if checkyesno rpc_umntall_enable; then
64		if [ -f /var/db/mounttab ]; then
65			echo -n ' rpc.umntall'
66			rpc.umntall -k
67		fi
68	fi
69}
70load_rc_config $name
71run_rc_command "$1"
72