From 0bff7488fb988a9a6e62cddf177ad456bfd43aaf Mon Sep 17 00:00:00 2001 From: rmacklem Date: Tue, 2 Jun 2009 22:15:47 +0000 Subject: Add support for the experimental nfs subsystem to the scripts in /etc/rc.d. They use the following new rc variables: nfsv4_server_enable - set to "YES" to run the experimental server nfsuserd_enable - set to "YES" to run nfsuserd for NFSv4 client and server nfsuserd_flags - command line flags for nfsuserd nfscbd_enable - set to "YES" to run the experimental nfs client's NFSv4 callback daemon nfscbd_flags - command line flags for nfscbd Reviewed by: dougb Approved by: kib (mentor) --- etc/defaults/rc.conf | 5 +++++ etc/rc.d/Makefile | 4 ++-- etc/rc.d/mountd | 7 +++++++ etc/rc.d/nfscbd | 19 +++++++++++++++++++ etc/rc.d/nfsd | 32 +++++++++++++++++++++++--------- etc/rc.d/nfsuserd | 19 +++++++++++++++++++ 6 files changed, 75 insertions(+), 11 deletions(-) create mode 100755 etc/rc.d/nfscbd create mode 100755 etc/rc.d/nfsuserd (limited to 'etc') diff --git a/etc/defaults/rc.conf b/etc/defaults/rc.conf index b1f09df..f381423 100644 --- a/etc/defaults/rc.conf +++ b/etc/defaults/rc.conf @@ -315,6 +315,11 @@ rpcbind_flags="" # Flags to rpcbind (if enabled). rpc_ypupdated_enable="NO" # Run if NIS master and SecureRPC (or NO). keyserv_enable="NO" # Run the SecureRPC keyserver (or NO). keyserv_flags="" # Flags to keyserv (if enabled). +nfsv4_server_enable="NO" # Enable support for NFSv4 +nfscbd_enable="NO" # NFSv4 client side callback daemon +nfscbd_flags="" # Flags for nfscbd +nfsuserd_enable="NO" # NFSv4 user/group name mapping daemon +nfsuserd_flags="" # Flags for nfsuserd ### Network Time Services options: ### timed_enable="NO" # Run the time daemon (or NO). diff --git a/etc/rc.d/Makefile b/etc/rc.d/Makefile index abeb757..f2e2b4f 100755 --- a/etc/rc.d/Makefile +++ b/etc/rc.d/Makefile @@ -23,8 +23,8 @@ FILES= DAEMON FILESYSTEMS LOGIN NETWORKING SERVERS \ mixer motd mountcritlocal mountcritremote mountlate \ mdconfig mdconfig2 mountd moused mroute6d mrouted msgs \ named natd netif netoptions \ - network_ipv6 newsyslog nfsclient nfsd \ - nfsserver nisdomain nsswitch ntpd ntpdate \ + network_ipv6 newsyslog nfsclient nfscbd nfsd \ + nfsserver nfsuserd nisdomain nsswitch ntpd ntpdate \ othermta \ pf pflog pfsync \ powerd power_profile ppp pppoed pwcheck \ diff --git a/etc/rc.d/mountd b/etc/rc.d/mountd index 6f82601..e893e98 100755 --- a/etc/rc.d/mountd +++ b/etc/rc.d/mountd @@ -37,6 +37,13 @@ mountd_precmd() fi fi + # If nfsv4_server_enable is yes, force use of the experimental + # server + # + if checkyesno nfsv4_server_enable; then + rc_flags="-e ${rc_flags}" + fi + if checkyesno zfs_enable; then rc_flags="${rc_flags} /etc/exports /etc/zfs/exports" fi diff --git a/etc/rc.d/nfscbd b/etc/rc.d/nfscbd new file mode 100755 index 0000000..8fecfe9 --- /dev/null +++ b/etc/rc.d/nfscbd @@ -0,0 +1,19 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# PROVIDE: nfscbd +# REQUIRE: NETWORKING nfsuserd +# KEYWORD: nojail shutdown + +. /etc/rc.subr + +name="nfscbd" +rcvar=`set_rcvar` +command="/usr/sbin/${name}" +sig_stop="USR1" + +load_rc_config $name + +run_rc_command "$1" diff --git a/etc/rc.d/nfsd b/etc/rc.d/nfsd index 84bda25..bbfe563 100755 --- a/etc/rc.d/nfsd +++ b/etc/rc.d/nfsd @@ -4,7 +4,7 @@ # # PROVIDE: nfsd -# REQUIRE: mountd hostname gssd +# REQUIRE: mountd hostname gssd nfsuserd # KEYWORD: nojail shutdown . /etc/rc.subr @@ -14,14 +14,33 @@ rcvar=`set_rcvar nfs_server` command="/usr/sbin/${name}" load_rc_config $name -command_args="${nfs_server_flags}" start_precmd="nfsd_precmd" sig_stop="USR1" nfsd_precmd() { - if ! sysctl vfs.nfsrv >/dev/null 2>&1; then - force_depend nfsserver || return 1 + if checkyesno nfsv4_server_enable; then + # If nfsv4_server_enable is yes, force use + # of the experimental server + # + rc_flags="-e ${nfs_server_flags}" + + if ! checkyesno nfsuserd_enable && \ + ! /etc/rc.d/nfsuserd forcestatus 1>/dev/null 2>&1 + then + force_depend nfsuserd || return 1 + fi + else + rc_flags="${nfs_server_flags}" + + if ! sysctl vfs.nfsrv >/dev/null 2>&1; then + force_depend nfsserver || return 1 + fi + + if checkyesno nfs_reserved_port_only; then + echo 'NFS on reserved port only=YES' + sysctl vfs.nfsrv.nfs_privport=1 > /dev/null + fi fi if ! checkyesno rpcbind_enable && \ @@ -35,11 +54,6 @@ nfsd_precmd() then force_depend mountd || return 1 fi - - if checkyesno nfs_reserved_port_only; then - echo 'NFS on reserved port only=YES' - sysctl vfs.nfsrv.nfs_privport=1 > /dev/null - fi return 0 } diff --git a/etc/rc.d/nfsuserd b/etc/rc.d/nfsuserd new file mode 100755 index 0000000..278c666 --- /dev/null +++ b/etc/rc.d/nfsuserd @@ -0,0 +1,19 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# PROVIDE: nfsuserd +# REQUIRE: NETWORKING +# KEYWORD: nojail shutdown + +. /etc/rc.subr + +name="nfsuserd" +rcvar=`set_rcvar` +command="/usr/sbin/${name}" +sig_stop="USR1" + +load_rc_config $name + +run_rc_command "$1" -- cgit v1.1