Module Name:    src
Committed By:   christos
Date:           Fri Apr  2 03:07:54 UTC 2021

Modified Files:
        src/sys/nfs: nfs_vfsops.c

Log Message:
Set f_namemax during mount time like all the other filesystems so that
it does gets the right data in copy_statvfs_info(). Otherwise f_namemax
can end up being 0. To reproduce: unmount the remote filesystem, remount
it, and kill -HUP mountd to refresh exports.


To generate a diff of this commit:
cvs rdiff -u -r1.241 -r1.242 src/sys/nfs/nfs_vfsops.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/nfs/nfs_vfsops.c
diff -u src/sys/nfs/nfs_vfsops.c:1.241 src/sys/nfs/nfs_vfsops.c:1.242
--- src/sys/nfs/nfs_vfsops.c:1.241	Mon Apr 13 15:23:20 2020
+++ src/sys/nfs/nfs_vfsops.c	Thu Apr  1 23:07:54 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: nfs_vfsops.c,v 1.241 2020/04/13 19:23:20 ad Exp $	*/
+/*	$NetBSD: nfs_vfsops.c,v 1.242 2021/04/02 03:07:54 christos Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993, 1995
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nfs_vfsops.c,v 1.241 2020/04/13 19:23:20 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_vfsops.c,v 1.242 2021/04/02 03:07:54 christos Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_nfs.h"
@@ -223,7 +223,6 @@ nfs_statvfs(struct mount *mp, struct sta
 		sbp->f_ffree = tquad;
 		sbp->f_favail = tquad;
 		sbp->f_fresvd = 0;
-		sbp->f_namemax = NFS_MAXNAMLEN;
 	} else {
 		sbp->f_bsize = NFS_FABLKSIZE;
 		sbp->f_frsize = fxdr_unsigned(int32_t, sfp->sf_bsize);
@@ -235,7 +234,6 @@ nfs_statvfs(struct mount *mp, struct sta
 		sbp->f_ffree = 0;
 		sbp->f_favail = 0;
 		sbp->f_fresvd = 0;
-		sbp->f_namemax = NFS_MAXNAMLEN;
 	}
 	copy_statvfs_info(sbp, mp);
 	nfsm_reqdone;
@@ -706,19 +704,20 @@ mountnfs(struct nfs_args *argp, struct m
 		nmp = VFSTONFS(mp);
 		/* update paths, file handles, etc, here	XXX */
 		m_freem(nam);
-		return (0);
-	} else {
-		nmp = kmem_zalloc(sizeof(*nmp), KM_SLEEP);
-		mp->mnt_data = nmp;
-		TAILQ_INIT(&nmp->nm_uidlruhead);
-		TAILQ_INIT(&nmp->nm_bufq);
-		rw_init(&nmp->nm_writeverflock);
-		mutex_init(&nmp->nm_lock, MUTEX_DEFAULT, IPL_NONE);
-		cv_init(&nmp->nm_rcvcv, "nfsrcv");
-		cv_init(&nmp->nm_sndcv, "nfssnd");
-		cv_init(&nmp->nm_aiocv, "nfsaio");
-		cv_init(&nmp->nm_disconcv, "nfsdis");
+		return 0;
 	}
+	nmp = kmem_zalloc(sizeof(*nmp), KM_SLEEP);
+	TAILQ_INIT(&nmp->nm_uidlruhead);
+	TAILQ_INIT(&nmp->nm_bufq);
+	rw_init(&nmp->nm_writeverflock);
+	mutex_init(&nmp->nm_lock, MUTEX_DEFAULT, IPL_NONE);
+	cv_init(&nmp->nm_rcvcv, "nfsrcv");
+	cv_init(&nmp->nm_sndcv, "nfssnd");
+	cv_init(&nmp->nm_aiocv, "nfsaio");
+	cv_init(&nmp->nm_disconcv, "nfsdis");
+
+	mp->mnt_data = nmp;
+	mp->mnt_stat.f_namemax = NFS_MAXNAMLEN;
 	vfs_getnewfsid(mp);
 	nmp->nm_mountp = mp;
 

Reply via email to