From 927456bb9b16873fb100ee2191c40500ae32b083 Mon Sep 17 00:00:00 2001 From: dim Date: Thu, 17 Nov 2011 08:12:12 +0000 Subject: [PATCH] MFC r227112: Whenever you boot with nfsv4_server_enable=NO (the default) in rc.conf, the /etc/rc.d/nfsd script sets vfs.nfsd.server_max_nfsvers to 3. Then, when you set nfsv4_server_enable=YES in rc.conf, and restart nfsd via the rc.d script, without rebooting, the sysctl does *not* get reset to max version 4, so NFSv4 still doesn't work. Fix this by explicitly setting vfs.nfsd.server_max_nfsvers to 4 when NFSv4 is requested. I also added resetting of the nfs_privport sysctls, since this has the same issue: nfs_reserved_port_only=YES in rc.conf sets the nfs_privport sysctl to 1, but in the other case, the sysctl doesn't get reset to 0. Reviewed by: rmacklem Silence from: rc@ Approved by: re (kib) git-svn-id: svn://svn.freebsd.org/base/releng/9.0@227608 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- etc/rc.d/nfsd | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/etc/rc.d/nfsd b/etc/rc.d/nfsd index 8dae57c9..e1fd9681 100755 --- a/etc/rc.d/nfsd +++ b/etc/rc.d/nfsd @@ -29,6 +29,8 @@ nfsd_precmd() if checkyesno nfs_reserved_port_only; then echo 'NFS on reserved port only=YES' sysctl vfs.nfsrv.nfs_privport=1 > /dev/null + else + sysctl vfs.nfsrv.nfs_privport=0 > /dev/null fi else rc_flags="${nfs_server_flags}" @@ -40,9 +42,12 @@ nfsd_precmd() if checkyesno nfs_reserved_port_only; then echo 'NFS on reserved port only=YES' sysctl vfs.nfsd.nfs_privport=1 > /dev/null + else + sysctl vfs.nfsd.nfs_privport=0 > /dev/null fi if checkyesno nfsv4_server_enable; then + sysctl vfs.nfsd.server_max_nfsvers=4 > /dev/null if ! checkyesno nfsuserd_enable && \ ! /etc/rc.d/nfsuserd forcestatus 1>/dev/null 2>&1 then -- 2.45.0