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. Reviewed by: freqlabs MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D29449
This commit is contained in:
parent
516fe911a6
commit
b43fe9eb4b
@ -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");
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user