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 int backupfd; /* Fd for the backup stable restart file */
|
||||||
static const char *getopt_shortopts;
|
static const char *getopt_shortopts;
|
||||||
static const char *getopt_usage;
|
static const char *getopt_usage;
|
||||||
|
static int nfs_minvers = NFS_VER2;
|
||||||
|
|
||||||
static int minthreads_set;
|
static int minthreads_set;
|
||||||
static int maxthreads_set;
|
static int maxthreads_set;
|
||||||
@ -170,7 +171,6 @@ main(int argc, char **argv)
|
|||||||
int bindhostc, bindanyflag, rpcbreg, rpcbregcnt;
|
int bindhostc, bindanyflag, rpcbreg, rpcbregcnt;
|
||||||
int nfssvc_addsock;
|
int nfssvc_addsock;
|
||||||
int longindex = 0;
|
int longindex = 0;
|
||||||
int nfs_minvers = NFS_VER2;
|
|
||||||
size_t nfs_minvers_size;
|
size_t nfs_minvers_size;
|
||||||
const char *lopt;
|
const char *lopt;
|
||||||
char **bindhost = NULL;
|
char **bindhost = NULL;
|
||||||
@ -307,6 +307,16 @@ main(int argc, char **argv)
|
|||||||
errx(1, "Out of memory");
|
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);
|
nfs_minvers_size = sizeof(nfs_minvers);
|
||||||
error = sysctlbyname("vfs.nfsd.server_min_nfsvers", &nfs_minvers,
|
error = sysctlbyname("vfs.nfsd.server_min_nfsvers", &nfs_minvers,
|
||||||
&nfs_minvers_size, NULL, 0);
|
&nfs_minvers_size, NULL, 0);
|
||||||
@ -316,10 +326,6 @@ main(int argc, char **argv)
|
|||||||
nfs_minvers = NFS_VER2;
|
nfs_minvers = NFS_VER2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unregister) {
|
|
||||||
unregistration();
|
|
||||||
exit (0);
|
|
||||||
}
|
|
||||||
if (reregister) {
|
if (reregister) {
|
||||||
if (udpflag) {
|
if (udpflag) {
|
||||||
memset(&hints, 0, sizeof hints);
|
memset(&hints, 0, sizeof hints);
|
||||||
@ -935,8 +941,8 @@ reapchild(__unused int signo)
|
|||||||
static void
|
static void
|
||||||
unregistration(void)
|
unregistration(void)
|
||||||
{
|
{
|
||||||
if ((!rpcb_unset(NFS_PROGRAM, 2, NULL)) ||
|
if ((nfs_minvers == NFS_VER2 && !rpcb_unset(NFS_PROGRAM, 2, NULL)) ||
|
||||||
(!rpcb_unset(NFS_PROGRAM, 3, NULL)))
|
(nfs_minvers <= NFS_VER3 && !rpcb_unset(NFS_PROGRAM, 3, NULL)))
|
||||||
syslog(LOG_ERR, "rpcb_unset failed");
|
syslog(LOG_ERR, "rpcb_unset failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user