Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/nfs Set f_namemax during mount time like all the other f...



details:   https://anonhg.NetBSD.org/src/rev/6be26775a50f
branches:  trunk
changeset: 982122:6be26775a50f
user:      christos <christos%NetBSD.org@localhost>
date:      Fri Apr 02 03:07:54 2021 +0000

description:
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.

diffstat:

 sys/nfs/nfs_vfsops.c |  31 +++++++++++++++----------------
 1 files changed, 15 insertions(+), 16 deletions(-)

diffs (67 lines):

diff -r 987acf4e4db2 -r 6be26775a50f sys/nfs/nfs_vfsops.c
--- a/sys/nfs/nfs_vfsops.c      Fri Apr 02 01:08:02 2021 +0000
+++ b/sys/nfs/nfs_vfsops.c      Fri Apr 02 03:07:54 2021 +0000
@@ -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 @@
                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 @@
                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 @@
                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;
 



Home | Main Index | Thread Index | Old Index