The branch stable/13 has been updated by rmacklem:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=33c839b6f6798011d87ad26b43c66f4ce04cdc2c

commit 33c839b6f6798011d87ad26b43c66f4ce04cdc2c
Author:     Rick Macklem <rmack...@freebsd.org>
AuthorDate: 2021-04-01 22:09:03 +0000
Commit:     Rick Macklem <rmack...@freebsd.org>
CommitDate: 2021-04-15 21:34:24 +0000

    nfsd: silence rpcb_unset noise for NFSv4 only servers
    
    An NFSv4 only configuration does not register with
    rpcbind(). Without this patch a failure to rpcb_unset()
    is reported when the daemon is terminated for this case.
    
    This is harmless noise, but this patch avoids calling
    rpcb_unset() for the NFSv4 only case, avoiding the noise.
    
    When called with "-d", it still does the rpcb_unset(),
    assuming that the configuration might have been
    changed to NFSv4 only and unregistering with
    rpcbind() might still be needed.
    
    (cherry picked from commit b43fe9eb4b3365156016ae3477747a46fc094bb8)
---
 usr.sbin/nfsd/nfsd.c | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/usr.sbin/nfsd/nfsd.c b/usr.sbin/nfsd/nfsd.c
index 0eb9c2560cf1..0222d23f2312 100644
--- a/usr.sbin/nfsd/nfsd.c
+++ b/usr.sbin/nfsd/nfsd.c
@@ -101,6 +101,7 @@ static int stablefd = -1;   /* Fd for the stable restart 
file */
 static int backupfd;           /* Fd for the backup stable restart file */
 static const char *getopt_shortopts;
 static const char *getopt_usage;
+static int nfs_minvers = NFS_VER2;
 
 static int minthreads_set;
 static int maxthreads_set;
@@ -170,7 +171,6 @@ main(int argc, char **argv)
        int bindhostc, bindanyflag, rpcbreg, rpcbregcnt;
        int nfssvc_addsock;
        int longindex = 0;
-       int nfs_minvers = NFS_VER2;
        size_t nfs_minvers_size;
        const char *lopt;
        char **bindhost = NULL;
@@ -307,6 +307,16 @@ main(int argc, char **argv)
                        errx(1, "Out of memory");
        }
 
+       if (unregister) {
+               /*
+                * Unregister before setting nfs_minvers, in case the
+                * value of vfs.nfsd.server_min_nfsvers has changed
+                * since registering with rpcbind.
+                */
+               unregistration();
+               exit (0);
+       }
+
        nfs_minvers_size = sizeof(nfs_minvers);
        error = sysctlbyname("vfs.nfsd.server_min_nfsvers", &nfs_minvers,
            &nfs_minvers_size, NULL, 0);
@@ -316,10 +326,6 @@ main(int argc, char **argv)
                nfs_minvers = NFS_VER2;
        }
 
-       if (unregister) {
-               unregistration();
-               exit (0);
-       }
        if (reregister) {
                if (udpflag) {
                        memset(&hints, 0, sizeof hints);
@@ -935,8 +941,8 @@ reapchild(__unused int signo)
 static void
 unregistration(void)
 {
-       if ((!rpcb_unset(NFS_PROGRAM, 2, NULL)) ||
-           (!rpcb_unset(NFS_PROGRAM, 3, NULL)))
+       if ((nfs_minvers == NFS_VER2 && !rpcb_unset(NFS_PROGRAM, 2, NULL)) ||
+           (nfs_minvers <= NFS_VER3 && !rpcb_unset(NFS_PROGRAM, 3, NULL)))
                syslog(LOG_ERR, "rpcb_unset failed");
 }
 
_______________________________________________
dev-commits-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-all
To unsubscribe, send any mail to "dev-commits-src-all-unsubscr...@freebsd.org"

Reply via email to