rc scripts for the new experimental nfs subsystem
Doug Barton
dougb at FreeBSD.org
Sat May 30 19:17:30 UTC 2009
Rick Macklem wrote:
>> cursory inspection. Please review
>> http://www.freebsd.org/doc/en_US.ISO8859-1/articles/rc-scripting/ as well.
>
> Thanks. Very helpful.
GTH.
> 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:-).
Well, that's what review is for, right? :)
> 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?
It sounds like what you really want to do is have nfsd REQUIRE nfsuserd.
I'll only comment on a few things, the rest looks good.
> 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"
For consistency sake sig_stop should really be moved up between
command and load_rc_config, but this is just cosmetic.
> diff -u -N -r rc.d.sav/nfsd rc.d/nfsd
I'm not sure why you added so many tests for the new variable. I've
attached a streamlined version of your patch which I think will
accomplish the same things.
> 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"
Same here with sig_stop.
hope this helps,
Doug
--
This .signature sanitized for your protection
-------------- next part --------------
Index: nfsd
===================================================================
--- nfsd (revision 192991)
+++ nfsd (working copy)
@@ -14,14 +14,33 @@
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 @@
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
}
More information about the freebsd-rc
mailing list