rc scripts for the new experimental nfs subsystem
Rick Macklem
rick at snowhite.cis.uoguelph.ca
Fri May 29 16:53:04 UTC 2009
> cursory inspection. Please review
> http://www.freebsd.org/doc/en_US.ISO8859-1/articles/rc-scripting/ as well.
Thanks. Very helpful.
Ok, I've shortened nfsv4_serversupport_enable to nfsv4_server_enable and
changed the names of the others to follow the FreeBSD tradition (now that
I know about it:-). I also made the new scripts follow the traditions, I
think? (I also simplified the if in nfsd, since I thought that's what
you meant by "shorten" the first time I read the email. I think it's more
readable this way, anyhow.)
The "REQUIRE: NETWORKING" is debatable for nfsuserd, since it doesn't
use networking itself. However, it calls functions like getpwent(), which
usually use LDAP, NIS,... these days. Also, it's used by NFS, which is
useless without networking, so I thought it made sense?
Thanks for helping out, rick
Here's a diff -u:
--- rc.conf.sav 2009-05-29 11:27:49.000000000 -0400
+++ rc.conf 2009-05-29 11:27:17.000000000 -0400
@@ -311,6 +311,11 @@
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 -u -N -r rc.d.sav/mountd rc.d/mountd
--- rc.d.sav/mountd 2009-05-28 14:59:22.000000000 -0400
+++ rc.d/mountd 2009-05-29 11:55:38.000000000 -0400
@@ -37,6 +37,13 @@
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 -u -N -r rc.d.sav/nfscbd rc.d/nfscbd
--- rc.d.sav/nfscbd 1969-12-31 19:00:00.000000000 -0500
+++ rc.d/nfscbd 2009-05-29 11:55:38.000000000 -0400
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: nfscbd
+# REQUIRE: NETWORKING
+# KEYWORD: nojail shutdown
+
+. /etc/rc.subr
+
+name="nfscbd"
+rcvar=`set_rcvar`
+command="/usr/sbin/${name}"
+
+load_rc_config $name
+sig_stop="USR1"
+
+run_rc_command "$1"
diff -u -N -r rc.d.sav/nfsd rc.d/nfsd
--- rc.d.sav/nfsd 2009-05-28 14:59:22.000000000 -0400
+++ rc.d/nfsd 2009-05-29 11:55:38.000000000 -0400
@@ -14,13 +14,30 @@
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
+ # If nfsv4_server_enable is yes, force use of the experimental
+ # server
+ #
+ if checkyesno nfsv4_server_enable; then
+ rc_flags="-e ${nfs_server_flags}"
+ else
+ rc_flags="${nfs_server_flags}"
+ fi
+
+ if checkyesno nfsv4_server_enable; then
+ if ! checkyesno nfsuserd_enable && \
+ ! /etc/rc.d/nfsuserd forcestatus 1>/dev/null 2>&1
+ then
+ force_depend nfsuserd || return 1
+ fi
+ fi
+
+ if ! checkyesno nfsv4_server_enable && \
+ ! sysctl vfs.nfsrv >/dev/null 2>&1; then
force_depend nfsserver || return 1
fi
@@ -36,7 +53,8 @@
force_depend mountd || return 1
fi
- if checkyesno nfs_reserved_port_only; then
+ if ! checkyesno nfsv4_server_enable && \
+ checkyesno nfs_reserved_port_only; then
echo 'NFS on reserved port only=YES'
sysctl vfs.nfsrv.nfs_privport=1 > /dev/null
fi
diff -u -N -r rc.d.sav/nfsuserd rc.d/nfsuserd
--- rc.d.sav/nfsuserd 1969-12-31 19:00:00.000000000 -0500
+++ rc.d/nfsuserd 2009-05-29 11:55:38.000000000 -0400
@@ -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}"
+
+load_rc_config $name
+sig_stop="USR1"
+
+run_rc_command "$1"
More information about the freebsd-rc
mailing list