Merge from vendor branch BSDTAR:
[dragonfly.git] / etc / rc.d / nfsclient
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.4 2004/01/27 00:42:45 rob Exp $
5 #
6
7 # PROVIDE: nfsclient
8 # REQUIRE: NETWORKING mountcritremote rpcbind
9 # KEYWORD: DragonFly shutdown
10
11 . /etc/rc.subr
12
13 name="nfsclient"
14 rcvar="nfs_client_enable"
15 start_cmd="nfsclient_start"
16 start_precmd="nfsclient_precmd"
17 stop_cmd="unmount_all"
18
19 # Load nfs module if it was not compiled into the kernel
20 nfsclient_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
31 nfsclient_start()
32 {
33         #
34         # Run nfsiod and set some nfs client related sysctls
35         #
36         if [ -n "${nfs_client_flags}" ]; then
37                 echo -n ' nfsiod'
38                 nfsiod ${nfs_client_flags}
39         fi
40
41         if [ -n "${nfs_access_cache}" ]; then
42                 echo "NFS access cache time=${nfs_access_cache}"
43                 sysctl vfs.nfs.access_cache_timeout=${nfs_access_cache} >/dev/null
44         fi
45         if [ -n "${nfs_bufpackets}" ]; then
46                  sysctl vfs.nfs.bufpackets=${nfs_bufpackets} > /dev/null
47         fi
48
49         unmount_all
50 }
51
52 unmount_all()
53 {
54         # If /var/db/mounttab exists, some nfs-server has not been
55         # successfully notified about a previous client shutdown.
56         # If there is no /var/db/mounttab, we do nothing.
57
58         if checkyesno rpc_umntall_enable; then
59                 if [ -f /var/db/mounttab ]; then
60                         echo -n ' rpc.umntall'
61                         rpc.umntall -k -f
62                 fi
63         fi
64 }
65 load_rc_config $name
66 run_rc_command "$1"