Author: rmacklem
Date: Mon Oct  3 00:10:14 2016
New Revision: 306609
URL: https://svnweb.freebsd.org/changeset/base/306609

Log:
  MFC: r304026
  Update the nfsstats structure to include the changes needed by
  the patch in D1626 plus changes so that it includes counts for
  NFSv4.1 (and the draft of NFSv4.2).
  Also, make all the counts uint64_t and add a vers field at the
  beginning, so that future revisions can easily be implemented.
  There is code in place to handle the old vesion of the nfsstats
  structure for backwards binary compatibility.
  
  Subsequent commits will update nfsstat(8) to use the new fields.

Modified:
  stable/11/sys/fs/nfs/nfs_commonkrpc.c
  stable/11/sys/fs/nfs/nfs_commonport.c
  stable/11/sys/fs/nfs/nfsport.h
  stable/11/sys/fs/nfs/nfsproto.h
  stable/11/sys/fs/nfsclient/nfs_clbio.c
  stable/11/sys/fs/nfsclient/nfs_clcomsubs.c
  stable/11/sys/fs/nfsclient/nfs_clstate.c
  stable/11/sys/fs/nfsclient/nfs_clsubs.c
  stable/11/sys/fs/nfsclient/nfs_clvfsops.c
  stable/11/sys/fs/nfsclient/nfs_clvnops.c
  stable/11/sys/fs/nfsserver/nfs_nfsdcache.c
  stable/11/sys/fs/nfsserver/nfs_nfsdport.c
  stable/11/sys/fs/nfsserver/nfs_nfsdsocket.c
  stable/11/sys/fs/nfsserver/nfs_nfsdstate.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/fs/nfs/nfs_commonkrpc.c
==============================================================================
--- stable/11/sys/fs/nfs/nfs_commonkrpc.c       Mon Oct  3 00:02:32 2016        
(r306608)
+++ stable/11/sys/fs/nfs/nfs_commonkrpc.c       Mon Oct  3 00:10:14 2016        
(r306609)
@@ -89,7 +89,7 @@ uint32_t      nfscl_nfs4_done_probes[NFSV41_N
 NFSSTATESPINLOCK;
 NFSREQSPINLOCK;
 NFSDLOCKMUTEX;
-extern struct nfsstats newnfsstats;
+extern struct nfsstatsv1 nfsstatsv1;
 extern struct nfsreqhead nfsd_reqq;
 extern int nfscl_ticks;
 extern void (*ncl_call_invalcaches)(struct vnode *);
@@ -642,7 +642,7 @@ newnfs_request(struct nfsrv_descript *nd
                procnum = NFSV4PROC_COMPOUND;
 
        if (nmp != NULL) {
-               NFSINCRGLOBAL(newnfsstats.rpcrequests);
+               NFSINCRGLOBAL(nfsstatsv1.rpcrequests);
 
                /* Map the procnum to the old NFSv2 one, as required. */
                if ((nd->nd_flag & ND_NFSV2) != 0) {
@@ -762,18 +762,18 @@ tryagain:
        if (stat == RPC_SUCCESS) {
                error = 0;
        } else if (stat == RPC_TIMEDOUT) {
-               NFSINCRGLOBAL(newnfsstats.rpctimeouts);
+               NFSINCRGLOBAL(nfsstatsv1.rpctimeouts);
                error = ETIMEDOUT;
        } else if (stat == RPC_VERSMISMATCH) {
-               NFSINCRGLOBAL(newnfsstats.rpcinvalid);
+               NFSINCRGLOBAL(nfsstatsv1.rpcinvalid);
                error = EOPNOTSUPP;
        } else if (stat == RPC_PROGVERSMISMATCH) {
-               NFSINCRGLOBAL(newnfsstats.rpcinvalid);
+               NFSINCRGLOBAL(nfsstatsv1.rpcinvalid);
                error = EPROTONOSUPPORT;
        } else if (stat == RPC_INTR) {
                error = EINTR;
        } else {
-               NFSINCRGLOBAL(newnfsstats.rpcinvalid);
+               NFSINCRGLOBAL(nfsstatsv1.rpcinvalid);
                error = EACCES;
        }
        if (error) {

Modified: stable/11/sys/fs/nfs/nfs_commonport.c
==============================================================================
--- stable/11/sys/fs/nfs/nfs_commonport.c       Mon Oct  3 00:02:32 2016        
(r306608)
+++ stable/11/sys/fs/nfs/nfs_commonport.c       Mon Oct  3 00:10:14 2016        
(r306609)
@@ -58,7 +58,7 @@ extern void (*nfsd_call_recall)(struct v
 extern int nfsrv_useacl;
 struct mount nfsv4root_mnt;
 int newnfs_numnfsd = 0;
-struct nfsstats newnfsstats;
+struct nfsstatsv1 nfsstatsv1;
 int nfs_numnfscbd = 0;
 int nfscl_debuglevel = 0;
 char nfsv4_callbackaddr[INET6_ADDRSTRLEN];
@@ -69,6 +69,7 @@ void (*ncl_call_invalcaches)(struct vnod
 
 static int nfs_realign_test;
 static int nfs_realign_count;
+static struct ext_nfsstats oldnfsstats;
 
 SYSCTL_NODE(_vfs, OID_AUTO, nfs, CTLFLAG_RW, 0, "NFS filesystem");
 SYSCTL_INT(_vfs_nfs, OID_AUTO, realign_test, CTLFLAG_RW, &nfs_realign_test,
@@ -446,9 +447,12 @@ nfssvc_nfscommon(struct thread *td, stru
 static int
 nfssvc_call(struct thread *p, struct nfssvc_args *uap, struct ucred *cred)
 {
-       int error = EINVAL;
+       int error = EINVAL, i, j;
        struct nfsd_idargs nid;
        struct nfsd_oidargs onid;
+       struct {
+               int vers;       /* Just the first field of nfsstats. */
+       } nfsstatver;
 
        if (uap->flag & NFSSVC_IDNAME) {
                if ((uap->flag & NFSSVC_NEWSTRUCT) != 0)
@@ -472,63 +476,157 @@ nfssvc_call(struct thread *p, struct nfs
                error = nfssvc_idname(&nid);
                goto out;
        } else if (uap->flag & NFSSVC_GETSTATS) {
-               error = copyout(&newnfsstats,
-                   CAST_USER_ADDR_T(uap->argp), sizeof (newnfsstats));
+               if ((uap->flag & NFSSVC_NEWSTRUCT) == 0) {
+                       /* Copy fields to the old ext_nfsstat structure. */
+                       oldnfsstats.attrcache_hits =
+                           nfsstatsv1.attrcache_hits;
+                       oldnfsstats.attrcache_misses =
+                           nfsstatsv1.attrcache_misses;
+                       oldnfsstats.lookupcache_hits =
+                           nfsstatsv1.lookupcache_hits;
+                       oldnfsstats.lookupcache_misses =
+                           nfsstatsv1.lookupcache_misses;
+                       oldnfsstats.direofcache_hits =
+                           nfsstatsv1.direofcache_hits;
+                       oldnfsstats.direofcache_misses =
+                           nfsstatsv1.direofcache_misses;
+                       oldnfsstats.accesscache_hits =
+                           nfsstatsv1.accesscache_hits;
+                       oldnfsstats.accesscache_misses =
+                           nfsstatsv1.accesscache_misses;
+                       oldnfsstats.biocache_reads =
+                           nfsstatsv1.biocache_reads;
+                       oldnfsstats.read_bios =
+                           nfsstatsv1.read_bios;
+                       oldnfsstats.read_physios =
+                           nfsstatsv1.read_physios;
+                       oldnfsstats.biocache_writes =
+                           nfsstatsv1.biocache_writes;
+                       oldnfsstats.write_bios =
+                           nfsstatsv1.write_bios;
+                       oldnfsstats.write_physios =
+                           nfsstatsv1.write_physios;
+                       oldnfsstats.biocache_readlinks =
+                           nfsstatsv1.biocache_readlinks;
+                       oldnfsstats.readlink_bios =
+                           nfsstatsv1.readlink_bios;
+                       oldnfsstats.biocache_readdirs =
+                           nfsstatsv1.biocache_readdirs;
+                       oldnfsstats.readdir_bios =
+                           nfsstatsv1.readdir_bios;
+                       for (i = 0; i < NFSV4_NPROCS; i++)
+                               oldnfsstats.rpccnt[i] = nfsstatsv1.rpccnt[i];
+                       oldnfsstats.rpcretries = nfsstatsv1.rpcretries;
+                       for (i = 0; i < NFSV4OP_NOPS; i++)
+                               oldnfsstats.srvrpccnt[i] =
+                                   nfsstatsv1.srvrpccnt[i];
+                       for (i = NFSV42_NOPS, j = NFSV4OP_NOPS;
+                           i < NFSV42_NOPS + NFSV4OP_FAKENOPS; i++, j++)
+                               oldnfsstats.srvrpccnt[j] =
+                                   nfsstatsv1.srvrpccnt[i];
+                       oldnfsstats.srvrpc_errs = nfsstatsv1.srvrpc_errs;
+                       oldnfsstats.srv_errs = nfsstatsv1.srv_errs;
+                       oldnfsstats.rpcrequests = nfsstatsv1.rpcrequests;
+                       oldnfsstats.rpctimeouts = nfsstatsv1.rpctimeouts;
+                       oldnfsstats.rpcunexpected = nfsstatsv1.rpcunexpected;
+                       oldnfsstats.rpcinvalid = nfsstatsv1.rpcinvalid;
+                       oldnfsstats.srvcache_inproghits =
+                           nfsstatsv1.srvcache_inproghits;
+                       oldnfsstats.srvcache_idemdonehits =
+                           nfsstatsv1.srvcache_idemdonehits;
+                       oldnfsstats.srvcache_nonidemdonehits =
+                           nfsstatsv1.srvcache_nonidemdonehits;
+                       oldnfsstats.srvcache_misses =
+                           nfsstatsv1.srvcache_misses;
+                       oldnfsstats.srvcache_tcppeak =
+                           nfsstatsv1.srvcache_tcppeak;
+                       oldnfsstats.srvcache_size = nfsstatsv1.srvcache_size;
+                       oldnfsstats.srvclients = nfsstatsv1.srvclients;
+                       oldnfsstats.srvopenowners = nfsstatsv1.srvopenowners;
+                       oldnfsstats.srvopens = nfsstatsv1.srvopens;
+                       oldnfsstats.srvlockowners = nfsstatsv1.srvlockowners;
+                       oldnfsstats.srvlocks = nfsstatsv1.srvlocks;
+                       oldnfsstats.srvdelegates = nfsstatsv1.srvdelegates;
+                       for (i = 0; i < NFSV4OP_CBNOPS; i++)
+                               oldnfsstats.cbrpccnt[i] =
+                                   nfsstatsv1.cbrpccnt[i];
+                       oldnfsstats.clopenowners = nfsstatsv1.clopenowners;
+                       oldnfsstats.clopens = nfsstatsv1.clopens;
+                       oldnfsstats.cllockowners = nfsstatsv1.cllockowners;
+                       oldnfsstats.cllocks = nfsstatsv1.cllocks;
+                       oldnfsstats.cldelegates = nfsstatsv1.cldelegates;
+                       oldnfsstats.cllocalopenowners =
+                           nfsstatsv1.cllocalopenowners;
+                       oldnfsstats.cllocalopens = nfsstatsv1.cllocalopens;
+                       oldnfsstats.cllocallockowners =
+                           nfsstatsv1.cllocallockowners;
+                       oldnfsstats.cllocallocks = nfsstatsv1.cllocallocks;
+                       error = copyout(&oldnfsstats, uap->argp,
+                           sizeof (oldnfsstats));
+               } else {
+                       error = copyin(uap->argp, &nfsstatver,
+                           sizeof(nfsstatver));
+                       if (error == 0 && nfsstatver.vers != NFSSTATS_V1)
+                               error = EPERM;
+                       if (error == 0)
+                               error = copyout(&nfsstatsv1, uap->argp,
+                                   sizeof (nfsstatsv1));
+               }
                if (error == 0) {
                        if ((uap->flag & NFSSVC_ZEROCLTSTATS) != 0) {
-                               newnfsstats.attrcache_hits = 0;
-                               newnfsstats.attrcache_misses = 0;
-                               newnfsstats.lookupcache_hits = 0;
-                               newnfsstats.lookupcache_misses = 0;
-                               newnfsstats.direofcache_hits = 0;
-                               newnfsstats.direofcache_misses = 0;
-                               newnfsstats.accesscache_hits = 0;
-                               newnfsstats.accesscache_misses = 0;
-                               newnfsstats.biocache_reads = 0;
-                               newnfsstats.read_bios = 0;
-                               newnfsstats.read_physios = 0;
-                               newnfsstats.biocache_writes = 0;
-                               newnfsstats.write_bios = 0;
-                               newnfsstats.write_physios = 0;
-                               newnfsstats.biocache_readlinks = 0;
-                               newnfsstats.readlink_bios = 0;
-                               newnfsstats.biocache_readdirs = 0;
-                               newnfsstats.readdir_bios = 0;
-                               newnfsstats.rpcretries = 0;
-                               newnfsstats.rpcrequests = 0;
-                               newnfsstats.rpctimeouts = 0;
-                               newnfsstats.rpcunexpected = 0;
-                               newnfsstats.rpcinvalid = 0;
-                               bzero(newnfsstats.rpccnt,
-                                   sizeof(newnfsstats.rpccnt));
+                               nfsstatsv1.attrcache_hits = 0;
+                               nfsstatsv1.attrcache_misses = 0;
+                               nfsstatsv1.lookupcache_hits = 0;
+                               nfsstatsv1.lookupcache_misses = 0;
+                               nfsstatsv1.direofcache_hits = 0;
+                               nfsstatsv1.direofcache_misses = 0;
+                               nfsstatsv1.accesscache_hits = 0;
+                               nfsstatsv1.accesscache_misses = 0;
+                               nfsstatsv1.biocache_reads = 0;
+                               nfsstatsv1.read_bios = 0;
+                               nfsstatsv1.read_physios = 0;
+                               nfsstatsv1.biocache_writes = 0;
+                               nfsstatsv1.write_bios = 0;
+                               nfsstatsv1.write_physios = 0;
+                               nfsstatsv1.biocache_readlinks = 0;
+                               nfsstatsv1.readlink_bios = 0;
+                               nfsstatsv1.biocache_readdirs = 0;
+                               nfsstatsv1.readdir_bios = 0;
+                               nfsstatsv1.rpcretries = 0;
+                               nfsstatsv1.rpcrequests = 0;
+                               nfsstatsv1.rpctimeouts = 0;
+                               nfsstatsv1.rpcunexpected = 0;
+                               nfsstatsv1.rpcinvalid = 0;
+                               bzero(nfsstatsv1.rpccnt,
+                                   sizeof(nfsstatsv1.rpccnt));
                        }
                        if ((uap->flag & NFSSVC_ZEROSRVSTATS) != 0) {
-                               newnfsstats.srvrpc_errs = 0;
-                               newnfsstats.srv_errs = 0;
-                               newnfsstats.srvcache_inproghits = 0;
-                               newnfsstats.srvcache_idemdonehits = 0;
-                               newnfsstats.srvcache_nonidemdonehits = 0;
-                               newnfsstats.srvcache_misses = 0;
-                               newnfsstats.srvcache_tcppeak = 0;
-                               newnfsstats.srvclients = 0;
-                               newnfsstats.srvopenowners = 0;
-                               newnfsstats.srvopens = 0;
-                               newnfsstats.srvlockowners = 0;
-                               newnfsstats.srvlocks = 0;
-                               newnfsstats.srvdelegates = 0;
-                               newnfsstats.clopenowners = 0;
-                               newnfsstats.clopens = 0;
-                               newnfsstats.cllockowners = 0;
-                               newnfsstats.cllocks = 0;
-                               newnfsstats.cldelegates = 0;
-                               newnfsstats.cllocalopenowners = 0;
-                               newnfsstats.cllocalopens = 0;
-                               newnfsstats.cllocallockowners = 0;
-                               newnfsstats.cllocallocks = 0;
-                               bzero(newnfsstats.srvrpccnt,
-                                   sizeof(newnfsstats.srvrpccnt));
-                               bzero(newnfsstats.cbrpccnt,
-                                   sizeof(newnfsstats.cbrpccnt));
+                               nfsstatsv1.srvrpc_errs = 0;
+                               nfsstatsv1.srv_errs = 0;
+                               nfsstatsv1.srvcache_inproghits = 0;
+                               nfsstatsv1.srvcache_idemdonehits = 0;
+                               nfsstatsv1.srvcache_nonidemdonehits = 0;
+                               nfsstatsv1.srvcache_misses = 0;
+                               nfsstatsv1.srvcache_tcppeak = 0;
+                               nfsstatsv1.srvclients = 0;
+                               nfsstatsv1.srvopenowners = 0;
+                               nfsstatsv1.srvopens = 0;
+                               nfsstatsv1.srvlockowners = 0;
+                               nfsstatsv1.srvlocks = 0;
+                               nfsstatsv1.srvdelegates = 0;
+                               nfsstatsv1.clopenowners = 0;
+                               nfsstatsv1.clopens = 0;
+                               nfsstatsv1.cllockowners = 0;
+                               nfsstatsv1.cllocks = 0;
+                               nfsstatsv1.cldelegates = 0;
+                               nfsstatsv1.cllocalopenowners = 0;
+                               nfsstatsv1.cllocalopens = 0;
+                               nfsstatsv1.cllocallockowners = 0;
+                               nfsstatsv1.cllocallocks = 0;
+                               bzero(nfsstatsv1.srvrpccnt,
+                                   sizeof(nfsstatsv1.srvrpccnt));
+                               bzero(nfsstatsv1.cbrpccnt,
+                                   sizeof(nfsstatsv1.cbrpccnt));
                        }
                }
                goto out;

Modified: stable/11/sys/fs/nfs/nfsport.h
==============================================================================
--- stable/11/sys/fs/nfs/nfsport.h      Mon Oct  3 00:02:32 2016        
(r306608)
+++ stable/11/sys/fs/nfs/nfsport.h      Mon Oct  3 00:10:14 2016        
(r306609)
@@ -55,6 +55,7 @@
 #include <sys/malloc.h>
 #include <sys/mbuf.h>
 #include <sys/mount.h>
+#include <sys/mutex.h>
 #include <sys/namei.h>
 #include <sys/proc.h>
 #include <sys/protosw.h>
@@ -254,24 +255,26 @@
 
 /*
  * Must be one more than last op#.
+ * NFSv4.2 isn't implemented yet, but define the op# limit for it.
  */
 #define        NFSV41_NOPS             59
+#define        NFSV42_NOPS             72
 
 /* Quirky case if the illegal op code */
 #define        NFSV4OP_OPILLEGAL       10044
 
 /*
- * Fake NFSV4OP_xxx used for nfsstat. Start at NFSV4OP_NOPS.
+ * Fake NFSV4OP_xxx used for nfsstat. Start at NFSV42_NOPS.
  */
-#define        NFSV4OP_SYMLINK         (NFSV4OP_NOPS)
-#define        NFSV4OP_MKDIR           (NFSV4OP_NOPS + 1)
-#define        NFSV4OP_RMDIR           (NFSV4OP_NOPS + 2)
-#define        NFSV4OP_READDIRPLUS     (NFSV4OP_NOPS + 3)
-#define        NFSV4OP_MKNOD           (NFSV4OP_NOPS + 4)
-#define        NFSV4OP_FSSTAT          (NFSV4OP_NOPS + 5)
-#define        NFSV4OP_FSINFO          (NFSV4OP_NOPS + 6)
-#define        NFSV4OP_PATHCONF        (NFSV4OP_NOPS + 7)
-#define        NFSV4OP_V3CREATE        (NFSV4OP_NOPS + 8)
+#define        NFSV4OP_SYMLINK         (NFSV42_NOPS)
+#define        NFSV4OP_MKDIR           (NFSV42_NOPS + 1)
+#define        NFSV4OP_RMDIR           (NFSV42_NOPS + 2)
+#define        NFSV4OP_READDIRPLUS     (NFSV42_NOPS + 3)
+#define        NFSV4OP_MKNOD           (NFSV42_NOPS + 4)
+#define        NFSV4OP_FSSTAT          (NFSV42_NOPS + 5)
+#define        NFSV4OP_FSINFO          (NFSV42_NOPS + 6)
+#define        NFSV4OP_PATHCONF        (NFSV42_NOPS + 7)
+#define        NFSV4OP_V3CREATE        (NFSV42_NOPS + 8)
 
 /*
  * This is the count of the fake operations listed above.
@@ -285,12 +288,12 @@
 #define        NFSV4OP_CBRECALL        4
 
 /*
- * Must be one greater than the last Callback Operation#.
+ * Must be one greater than the last Callback Operation# for NFSv4.0.
  */
 #define        NFSV4OP_CBNOPS          5
 
 /*
- * Additional Callback Ops for NFSv4.1 only. Not yet in nfsstats.
+ * Additional Callback Ops for NFSv4.1 only.
  */
 #define        NFSV4OP_CBLAYOUTRECALL  5
 #define        NFSV4OP_CBNOTIFY        6
@@ -303,6 +306,9 @@
 #define        NFSV4OP_CBNOTIFYLOCK    13
 #define        NFSV4OP_CBNOTIFYDEVID   14
 
+#define        NFSV41_CBNOPS           15
+#define        NFSV42_CBNOPS           16
+
 /*
  * The lower numbers -> 21 are used by NFSv2 and v3. These define higher
  * numbers used by NFSv4.
@@ -360,7 +366,72 @@
 #endif /* NFS_V3NPROCS */
 
 /*
- * Stats structure
+ * New stats structure.
+ * The vers field will be set to NFSSTATS_V1 by the caller.
+ */
+#define        NFSSTATS_V1     1
+struct nfsstatsv1 {
+       int             vers;   /* Set to version requested by caller. */
+       uint64_t        attrcache_hits;
+       uint64_t        attrcache_misses;
+       uint64_t        lookupcache_hits;
+       uint64_t        lookupcache_misses;
+       uint64_t        direofcache_hits;
+       uint64_t        direofcache_misses;
+       uint64_t        accesscache_hits;
+       uint64_t        accesscache_misses;
+       uint64_t        biocache_reads;
+       uint64_t        read_bios;
+       uint64_t        read_physios;
+       uint64_t        biocache_writes;
+       uint64_t        write_bios;
+       uint64_t        write_physios;
+       uint64_t        biocache_readlinks;
+       uint64_t        readlink_bios;
+       uint64_t        biocache_readdirs;
+       uint64_t        readdir_bios;
+       uint64_t        rpccnt[NFSV41_NPROCS + 15];
+       uint64_t        rpcretries;
+       uint64_t        srvrpccnt[NFSV42_NOPS + NFSV4OP_FAKENOPS];
+       uint64_t        srvrpc_errs;
+       uint64_t        srv_errs;
+       uint64_t        rpcrequests;
+       uint64_t        rpctimeouts;
+       uint64_t        rpcunexpected;
+       uint64_t        rpcinvalid;
+       uint64_t        srvcache_inproghits;
+       uint64_t        srvcache_idemdonehits;
+       uint64_t        srvcache_nonidemdonehits;
+       uint64_t        srvcache_misses;
+       uint64_t        srvcache_tcppeak;
+       int             srvcache_size;  /* Updated by atomic_xx_int(). */
+       uint64_t        srvclients;
+       uint64_t        srvopenowners;
+       uint64_t        srvopens;
+       uint64_t        srvlockowners;
+       uint64_t        srvlocks;
+       uint64_t        srvdelegates;
+       uint64_t        cbrpccnt[NFSV42_CBNOPS];
+       uint64_t        clopenowners;
+       uint64_t        clopens;
+       uint64_t        cllockowners;
+       uint64_t        cllocks;
+       uint64_t        cldelegates;
+       uint64_t        cllocalopenowners;
+       uint64_t        cllocalopens;
+       uint64_t        cllocallockowners;
+       uint64_t        cllocallocks;
+       uint64_t        srvstartcnt;
+       uint64_t        srvdonecnt;
+       uint64_t        srvbytes[NFSV42_NOPS + NFSV4OP_FAKENOPS];
+       uint64_t        srvops[NFSV42_NOPS + NFSV4OP_FAKENOPS];
+       struct bintime  srvduration[NFSV42_NOPS + NFSV4OP_FAKENOPS];
+       struct bintime  busyfrom;
+       struct bintime  busytime;
+};
+
+/*
+ * Old stats structure.
  */
 struct ext_nfsstats {
        int     attrcache_hits;
@@ -416,11 +487,6 @@ struct ext_nfsstats {
 
 #ifdef _KERNEL
 /*
- * Define the ext_nfsstats as nfsstats for the kernel code.
- */
-#define nfsstats       ext_nfsstats
-
-/*
  * Define NFS_NPROCS as NFSV4_NPROCS for the experimental kernel code.
  */
 #ifndef        NFS_NPROCS

Modified: stable/11/sys/fs/nfs/nfsproto.h
==============================================================================
--- stable/11/sys/fs/nfs/nfsproto.h     Mon Oct  3 00:02:32 2016        
(r306608)
+++ stable/11/sys/fs/nfs/nfsproto.h     Mon Oct  3 00:10:14 2016        
(r306609)
@@ -345,10 +345,10 @@
 
 /*
  * NFSPROC_NOOP is a fake op# that can't be the same as any V2/3/4 Procedure
- * or Operation#. Since the NFS V4 Op #s go higher, use NFSV41_NOPS, which
+ * or Operation#. Since the NFS V4 Op #s go higher, use NFSV42_NOPS, which
  * is one greater than the highest Op#.
  */
-#define        NFSPROC_NOOP            NFSV41_NOPS
+#define        NFSPROC_NOOP            NFSV42_NOPS
 
 /* Actual Version 2 procedure numbers */
 #define        NFSV2PROC_NULL          0

Modified: stable/11/sys/fs/nfsclient/nfs_clbio.c
==============================================================================
--- stable/11/sys/fs/nfsclient/nfs_clbio.c      Mon Oct  3 00:02:32 2016        
(r306608)
+++ stable/11/sys/fs/nfsclient/nfs_clbio.c      Mon Oct  3 00:10:14 2016        
(r306609)
@@ -60,7 +60,7 @@ __FBSDID("$FreeBSD$");
 #include <fs/nfsclient/nfs_kdtrace.h>
 
 extern int newnfs_directio_allow_mmap;
-extern struct nfsstats newnfsstats;
+extern struct nfsstatsv1 nfsstatsv1;
 extern struct mtx ncl_iod_mutex;
 extern int ncl_numasync;
 extern enum nfsiod_state ncl_iodwant[NFS_MAXASYNCDAEMON];
@@ -466,7 +466,7 @@ ncl_bioread(struct vnode *vp, struct uio
 
            switch (vp->v_type) {
            case VREG:
-               NFSINCRGLOBAL(newnfsstats.biocache_reads);
+               NFSINCRGLOBAL(nfsstatsv1.biocache_reads);
                lbn = uio->uio_offset / biosize;
                on = uio->uio_offset - (lbn * biosize);
 
@@ -543,7 +543,7 @@ ncl_bioread(struct vnode *vp, struct uio
                        n = MIN((unsigned)(bcount - on), uio->uio_resid);
                break;
            case VLNK:
-               NFSINCRGLOBAL(newnfsstats.biocache_readlinks);
+               NFSINCRGLOBAL(nfsstatsv1.biocache_readlinks);
                bp = nfs_getcacheblk(vp, (daddr_t)0, NFS_MAXPATHLEN, td);
                if (!bp) {
                        error = newnfs_sigintr(nmp, td);
@@ -563,7 +563,7 @@ ncl_bioread(struct vnode *vp, struct uio
                on = 0;
                break;
            case VDIR:
-               NFSINCRGLOBAL(newnfsstats.biocache_readdirs);
+               NFSINCRGLOBAL(nfsstatsv1.biocache_readdirs);
                if (np->n_direofoffset
                    && uio->uio_offset >= np->n_direofoffset) {
                    return (0);
@@ -992,7 +992,7 @@ ncl_write(struct vop_write_args *ap)
                        }
                }
 
-               NFSINCRGLOBAL(newnfsstats.biocache_writes);
+               NFSINCRGLOBAL(nfsstatsv1.biocache_writes);
                lbn = uio->uio_offset / biosize;
                on = uio->uio_offset - (lbn * biosize);
                n = MIN((unsigned)(biosize - on), uio->uio_resid);
@@ -1606,7 +1606,7 @@ ncl_doio(struct vnode *vp, struct buf *b
            switch (vp->v_type) {
            case VREG:
                uiop->uio_offset = ((off_t)bp->b_blkno) * DEV_BSIZE;
-               NFSINCRGLOBAL(newnfsstats.read_bios);
+               NFSINCRGLOBAL(nfsstatsv1.read_bios);
                error = ncl_readrpc(vp, uiop, cr);
 
                if (!error) {
@@ -1641,11 +1641,11 @@ ncl_doio(struct vnode *vp, struct buf *b
                break;
            case VLNK:
                uiop->uio_offset = (off_t)0;
-               NFSINCRGLOBAL(newnfsstats.readlink_bios);
+               NFSINCRGLOBAL(nfsstatsv1.readlink_bios);
                error = ncl_readlinkrpc(vp, uiop, cr);
                break;
            case VDIR:
-               NFSINCRGLOBAL(newnfsstats.readdir_bios);
+               NFSINCRGLOBAL(nfsstatsv1.readdir_bios);
                uiop->uio_offset = ((u_quad_t)bp->b_lblkno) * NFS_DIRBLKSIZ;
                if ((nmp->nm_flag & NFSMNT_RDIRPLUS) != 0) {
                        error = ncl_readdirplusrpc(vp, uiop, cr, td);
@@ -1707,7 +1707,7 @@ ncl_doio(struct vnode *vp, struct buf *b
                    + bp->b_dirtyoff;
                io.iov_base = (char *)bp->b_data + bp->b_dirtyoff;
                uiop->uio_rw = UIO_WRITE;
-               NFSINCRGLOBAL(newnfsstats.write_bios);
+               NFSINCRGLOBAL(nfsstatsv1.write_bios);
 
                if ((bp->b_flags & (B_ASYNC | B_NEEDCOMMIT | B_NOCACHE | 
B_CLUSTER)) == B_ASYNC)
                    iomode = NFSWRITE_UNSTABLE;

Modified: stable/11/sys/fs/nfsclient/nfs_clcomsubs.c
==============================================================================
--- stable/11/sys/fs/nfsclient/nfs_clcomsubs.c  Mon Oct  3 00:02:32 2016        
(r306608)
+++ stable/11/sys/fs/nfsclient/nfs_clcomsubs.c  Mon Oct  3 00:10:14 2016        
(r306609)
@@ -42,7 +42,7 @@ __FBSDID("$FreeBSD$");
 #ifndef APPLEKEXT
 #include <fs/nfs/nfsport.h>
 
-extern struct nfsstats newnfsstats;
+extern struct nfsstatsv1 nfsstatsv1;
 extern struct nfsv4_opflag nfsv4_opflag[NFSV41_NOPS];
 extern int ncl_mbuf_mlen;
 extern enum vtype newnv2tov_type[8];
@@ -241,8 +241,8 @@ nfscl_reqstart(struct nfsrv_descript *nd
        } else {
                (void) nfsm_fhtom(nd, nfhp, fhlen, 0);
        }
-       if (procnum < NFSV4_NPROCS)
-               NFSINCRGLOBAL(newnfsstats.rpccnt[procnum]);
+       if (procnum < NFSV41_NPROCS)
+               NFSINCRGLOBAL(nfsstatsv1.rpccnt[procnum]);
 }
 
 #ifndef APPLE

Modified: stable/11/sys/fs/nfsclient/nfs_clstate.c
==============================================================================
--- stable/11/sys/fs/nfsclient/nfs_clstate.c    Mon Oct  3 00:02:32 2016        
(r306608)
+++ stable/11/sys/fs/nfsclient/nfs_clstate.c    Mon Oct  3 00:10:14 2016        
(r306609)
@@ -84,7 +84,7 @@ __FBSDID("$FreeBSD$");
 /*
  * Global variables
  */
-extern struct nfsstats newnfsstats;
+extern struct nfsstatsv1 nfsstatsv1;
 extern struct nfsreqhead nfsd_reqq;
 extern u_int32_t newnfs_false, newnfs_true;
 extern int nfscl_debuglevel;
@@ -343,10 +343,10 @@ nfscl_newopen(struct nfsclclient *clp, s
                nowp->nfsow_defunct = 0;
                nfscl_lockinit(&nowp->nfsow_rwlock);
                if (dp != NULL) {
-                       newnfsstats.cllocalopenowners++;
+                       nfsstatsv1.cllocalopenowners++;
                        LIST_INSERT_HEAD(&dp->nfsdl_owner, nowp, nfsow_list);
                } else {
-                       newnfsstats.clopenowners++;
+                       nfsstatsv1.clopenowners++;
                        LIST_INSERT_HEAD(&clp->nfsc_owner, nowp, nfsow_list);
                }
                owp = *owpp = nowp;
@@ -380,9 +380,9 @@ nfscl_newopen(struct nfsclclient *clp, s
                                TAILQ_INSERT_HEAD(&clp->nfsc_deleg, dp,
                                    nfsdl_list);
                                dp->nfsdl_timestamp = NFSD_MONOSEC + 120;
-                               newnfsstats.cllocalopens++;
+                               nfsstatsv1.cllocalopens++;
                        } else {
-                               newnfsstats.clopens++;
+                               nfsstatsv1.clopens++;
                        }
                        LIST_INSERT_HEAD(&owp->nfsow_open, nop, nfso_list);
                        *opp = nop;
@@ -430,7 +430,7 @@ nfscl_deleg(mount_t mp, struct nfsclclie
                LIST_INSERT_HEAD(NFSCLDELEGHASH(clp, nfhp, fhlen), dp,
                    nfsdl_hash);
                dp->nfsdl_timestamp = NFSD_MONOSEC + 120;
-               newnfsstats.cldelegates++;
+               nfsstatsv1.cldelegates++;
                nfscl_delegcnt++;
        } else {
                /*
@@ -1071,10 +1071,10 @@ nfscl_getbytelock(vnode_t vp, u_int64_t 
                LIST_INIT(&nlp->nfsl_lock);
                if (donelocally) {
                        nlp->nfsl_open = NULL;
-                       newnfsstats.cllocallockowners++;
+                       nfsstatsv1.cllocallockowners++;
                } else {
                        nlp->nfsl_open = op;
-                       newnfsstats.cllockowners++;
+                       nfsstatsv1.cllockowners++;
                }
                LIST_INSERT_HEAD(lhp, nlp, nfsl_list);
                lp = nlp;
@@ -1402,9 +1402,9 @@ nfscl_freeopen(struct nfsclopen *op, int
        nfscl_freealllocks(&op->nfso_lock, local);
        FREE((caddr_t)op, M_NFSCLOPEN);
        if (local)
-               newnfsstats.cllocalopens--;
+               nfsstatsv1.cllocalopens--;
        else
-               newnfsstats.clopens--;
+               nfsstatsv1.clopens--;
 }
 
 /*
@@ -1483,9 +1483,9 @@ nfscl_freeopenowner(struct nfsclowner *o
        LIST_REMOVE(owp, nfsow_list);
        FREE((caddr_t)owp, M_NFSCLOWNER);
        if (local)
-               newnfsstats.cllocalopenowners--;
+               nfsstatsv1.cllocalopenowners--;
        else
-               newnfsstats.clopenowners--;
+               nfsstatsv1.clopenowners--;
 }
 
 /*
@@ -1502,9 +1502,9 @@ nfscl_freelockowner(struct nfscllockowne
        }
        FREE((caddr_t)lp, M_NFSCLLOCKOWNER);
        if (local)
-               newnfsstats.cllocallockowners--;
+               nfsstatsv1.cllocallockowners--;
        else
-               newnfsstats.cllockowners--;
+               nfsstatsv1.cllockowners--;
 }
 
 /*
@@ -1517,9 +1517,9 @@ nfscl_freelock(struct nfscllock *lop, in
        LIST_REMOVE(lop, nfslo_list);
        FREE((caddr_t)lop, M_NFSCLLOCK);
        if (local)
-               newnfsstats.cllocallocks--;
+               nfsstatsv1.cllocallocks--;
        else
-               newnfsstats.cllocks--;
+               nfsstatsv1.cllocks--;
 }
 
 /*
@@ -1553,7 +1553,7 @@ nfscl_freedeleg(struct nfscldeleghead *h
        TAILQ_REMOVE(hdp, dp, nfsdl_list);
        LIST_REMOVE(dp, nfsdl_hash);
        FREE((caddr_t)dp, M_NFSCLDELEG);
-       newnfsstats.cldelegates--;
+       nfsstatsv1.cldelegates--;
        nfscl_delegcnt--;
 }
 
@@ -1621,18 +1621,18 @@ nfscl_expireclient(struct nfsclclient *c
                            LIST_REMOVE(op, nfso_list);
                            op->nfso_own = towp;
                            LIST_INSERT_HEAD(&towp->nfsow_open, op, nfso_list);
-                           newnfsstats.cllocalopens--;
-                           newnfsstats.clopens++;
+                           nfsstatsv1.cllocalopens--;
+                           nfsstatsv1.clopens++;
                        }
                    } else {
                        /* Just add the openowner to the client list */
                        LIST_REMOVE(owp, nfsow_list);
                        owp->nfsow_clp = clp;
                        LIST_INSERT_HEAD(&clp->nfsc_owner, owp, nfsow_list);
-                       newnfsstats.cllocalopenowners--;
-                       newnfsstats.clopenowners++;
-                       newnfsstats.cllocalopens--;
-                       newnfsstats.clopens++;
+                       nfsstatsv1.cllocalopenowners--;
+                       nfsstatsv1.clopenowners++;
+                       nfsstatsv1.cllocalopens--;
+                       nfsstatsv1.clopens++;
                    }
                }
                owp = nowp;
@@ -2282,9 +2282,9 @@ nfscl_insertlock(struct nfscllockowner *
        else
                LIST_INSERT_AFTER(insert_lop, new_lop, nfslo_list);
        if (local)
-               newnfsstats.cllocallocks++;
+               nfsstatsv1.cllocallocks++;
        else
-               newnfsstats.cllocks++;
+               nfsstatsv1.cllocks++;
 }
 
 /*
@@ -2571,7 +2571,7 @@ tryagain:
                                    LIST_REMOVE(dp, nfsdl_hash);
                                    TAILQ_INSERT_HEAD(&dh, dp, nfsdl_list);
                                    nfscl_delegcnt--;
-                                   newnfsstats.cldelegates--;
+                                   nfsstatsv1.cldelegates--;
                                }
                                NFSLOCKCLSTATE();
                        }
@@ -2612,7 +2612,7 @@ tryagain:
                            LIST_REMOVE(dp, nfsdl_hash);
                            TAILQ_INSERT_HEAD(&dh, dp, nfsdl_list);
                            nfscl_delegcnt--;
-                           newnfsstats.cldelegates--;
+                           nfsstatsv1.cldelegates--;
                        }
                    }
                    dp = ndp;
@@ -3215,8 +3215,8 @@ nfscl_docb(struct nfsrv_descript *nd, NF
                    break;
                }
                nd->nd_procnum = op;
-               if (op < NFSV4OP_CBNOPS)
-                       newnfsstats.cbrpccnt[nd->nd_procnum]++;
+               if (op < NFSV41_CBNOPS)
+                       nfsstatsv1.cbrpccnt[nd->nd_procnum]++;
                switch (op) {
                case NFSV4OP_CBGETATTR:
                        NFSCL_DEBUG(4, "cbgetattr\n");

Modified: stable/11/sys/fs/nfsclient/nfs_clsubs.c
==============================================================================
--- stable/11/sys/fs/nfsclient/nfs_clsubs.c     Mon Oct  3 00:02:32 2016        
(r306608)
+++ stable/11/sys/fs/nfsclient/nfs_clsubs.c     Mon Oct  3 00:10:14 2016        
(r306609)
@@ -83,7 +83,7 @@ extern enum nfsiod_state ncl_iodwant[NFS
 extern struct nfsmount *ncl_iodmount[NFS_MAXASYNCDAEMON];
 extern int ncl_numasync;
 extern unsigned int ncl_iodmax;
-extern struct nfsstats newnfsstats;
+extern struct nfsstatsv1 nfsstatsv1;
 
 struct task    ncl_nfsiodnew_task;
 
@@ -219,12 +219,12 @@ ncl_getattrcache(struct vnode *vp, struc
 
        if ((time_second - np->n_attrstamp) >= timeo &&
            (mustflush != 0 || np->n_attrstamp == 0)) {
-               newnfsstats.attrcache_misses++;
+               nfsstatsv1.attrcache_misses++;
                mtx_unlock(&np->n_mtx);
                KDTRACE_NFS_ATTRCACHE_GET_MISS(vp);
                return( ENOENT);
        }
-       newnfsstats.attrcache_hits++;
+       nfsstatsv1.attrcache_hits++;
        if (vap->va_size != np->n_size) {
                if (vap->va_type == VREG) {
                        if (np->n_flag & NMODIFIED) {

Modified: stable/11/sys/fs/nfsclient/nfs_clvfsops.c
==============================================================================
--- stable/11/sys/fs/nfsclient/nfs_clvfsops.c   Mon Oct  3 00:02:32 2016        
(r306608)
+++ stable/11/sys/fs/nfsclient/nfs_clvfsops.c   Mon Oct  3 00:10:14 2016        
(r306609)
@@ -78,7 +78,6 @@ FEATURE(nfscl, "NFSv4 client");
 
 extern int nfscl_ticks;
 extern struct timeval nfsboottime;
-extern struct nfsstats newnfsstats;
 extern int nfsrv_useacl;
 extern int nfscl_debuglevel;
 extern enum nfsiod_state ncl_iodwant[NFS_MAXASYNCDAEMON];

Modified: stable/11/sys/fs/nfsclient/nfs_clvnops.c
==============================================================================
--- stable/11/sys/fs/nfsclient/nfs_clvnops.c    Mon Oct  3 00:02:32 2016        
(r306608)
+++ stable/11/sys/fs/nfsclient/nfs_clvnops.c    Mon Oct  3 00:10:14 2016        
(r306609)
@@ -100,7 +100,7 @@ uint32_t    nfscl_accesscache_load_done_id;
 #define        TRUE    1
 #define        FALSE   0
 
-extern struct nfsstats newnfsstats;
+extern struct nfsstatsv1 nfsstatsv1;
 extern int nfsrv_useacl;
 extern int nfscl_debuglevel;
 MALLOC_DECLARE(M_NEWNFSREQ);
@@ -258,14 +258,6 @@ int newnfs_directio_allow_mmap = 1;
 SYSCTL_INT(_vfs_nfs, OID_AUTO, nfs_directio_allow_mmap, CTLFLAG_RW,
           &newnfs_directio_allow_mmap, 0, "Enable mmaped IO on file with 
O_DIRECT opens");
 
-#if 0
-SYSCTL_INT(_vfs_nfs, OID_AUTO, access_cache_hits, CTLFLAG_RD,
-          &newnfsstats.accesscache_hits, 0, "NFS ACCESS cache hit count");
-
-SYSCTL_INT(_vfs_nfs, OID_AUTO, access_cache_misses, CTLFLAG_RD,
-          &newnfsstats.accesscache_misses, 0, "NFS ACCESS cache miss count");
-#endif
-
 #define        NFSACCESS_ALL (NFSACCESS_READ | NFSACCESS_MODIFY                
\
                         | NFSACCESS_EXTEND | NFSACCESS_EXECUTE \
                         | NFSACCESS_DELETE | NFSACCESS_LOOKUP)
@@ -418,7 +410,7 @@ nfs_access(struct vop_access_args *ap)
                            if (time_second < (np->n_accesscache[i].stamp
                                + nfsaccess_cache_timeout) &&
                                (np->n_accesscache[i].mode & mode) == mode) {
-                               NFSINCRGLOBAL(newnfsstats.accesscache_hits);
+                               NFSINCRGLOBAL(nfsstatsv1.accesscache_hits);
                                gotahit = 1;
                            }
                            break;
@@ -437,7 +429,7 @@ nfs_access(struct vop_access_args *ap)
                        /*
                         * Either a no, or a don't know.  Go to the wire.
                         */
-                       NFSINCRGLOBAL(newnfsstats.accesscache_misses);
+                       NFSINCRGLOBAL(nfsstatsv1.accesscache_misses);
                        error = nfs34_access_otw(vp, wmode, ap->a_td,
                            ap->a_cred, &rmode);
                        if (!error &&
@@ -857,7 +849,7 @@ nfs_getattr(struct vop_getattr_args *ap)
 
        if (NFS_ISV34(vp) && nfs_prime_access_cache &&
            nfsaccess_cache_timeout > 0) {
-               NFSINCRGLOBAL(newnfsstats.accesscache_misses);
+               NFSINCRGLOBAL(nfsstatsv1.accesscache_misses);
                nfs34_access_otw(vp, NFSACCESS_ALL, td, ap->a_cred, NULL);
                if (ncl_getattrcache(vp, ap->a_vap) == 0) {
                        nfscl_deleggetmodtime(vp, &ap->a_vap->va_mtime);
@@ -1114,7 +1106,7 @@ nfs_lookup(struct vop_lookup_args *ap)
                    ((u_int)(ticks - ncticks) < (nmp->nm_nametimeo * hz) &&
                    VOP_GETATTR(newvp, &vattr, cnp->cn_cred) == 0 &&
                    timespeccmp(&vattr.va_ctime, &nctime, ==))) {
-                       NFSINCRGLOBAL(newnfsstats.lookupcache_hits);
+                       NFSINCRGLOBAL(nfsstatsv1.lookupcache_hits);
                        if (cnp->cn_nameiop != LOOKUP &&
                            (flags & ISLASTCN))
                                cnp->cn_flags |= SAVENAME;
@@ -1141,7 +1133,7 @@ nfs_lookup(struct vop_lookup_args *ap)
                if ((u_int)(ticks - ncticks) < (nmp->nm_negnametimeo * hz) &&
                    VOP_GETATTR(dvp, &vattr, cnp->cn_cred) == 0 &&
                    timespeccmp(&vattr.va_mtime, &nctime, ==)) {
-                       NFSINCRGLOBAL(newnfsstats.lookupcache_hits);
+                       NFSINCRGLOBAL(nfsstatsv1.lookupcache_hits);
                        return (ENOENT);
                }
                cache_purge_negative(dvp);
@@ -1149,7 +1141,7 @@ nfs_lookup(struct vop_lookup_args *ap)
 
        error = 0;
        newvp = NULLVP;
-       NFSINCRGLOBAL(newnfsstats.lookupcache_misses);
+       NFSINCRGLOBAL(nfsstatsv1.lookupcache_misses);
        error = nfsrpc_lookup(dvp, cnp->cn_nameptr, cnp->cn_namelen,
            cnp->cn_cred, td, &dnfsva, &nfsva, &nfhp, &attrflag, &dattrflag,
            NULL);
@@ -2227,7 +2219,7 @@ nfs_readdir(struct vop_readdir_args *ap)
                        if ((NFS_ISV4(vp) && np->n_change == vattr.va_filerev) 
||
                            !NFS_TIMESPEC_COMPARE(&np->n_mtime, 
&vattr.va_mtime)) {
                                mtx_unlock(&np->n_mtx);
-                               NFSINCRGLOBAL(newnfsstats.direofcache_hits);
+                               NFSINCRGLOBAL(nfsstatsv1.direofcache_hits);
                                if (ap->a_eofflag != NULL)
                                        *ap->a_eofflag = 1;
                                return (0);
@@ -2254,7 +2246,7 @@ nfs_readdir(struct vop_readdir_args *ap)
        error = ncl_bioread(vp, uio, 0, ap->a_cred);
 
        if (!error && uio->uio_resid == tresid) {
-               NFSINCRGLOBAL(newnfsstats.direofcache_misses);
+               NFSINCRGLOBAL(nfsstatsv1.direofcache_misses);
                if (ap->a_eofflag != NULL)
                        *ap->a_eofflag = 1;
        }

Modified: stable/11/sys/fs/nfsserver/nfs_nfsdcache.c
==============================================================================
--- stable/11/sys/fs/nfsserver/nfs_nfsdcache.c  Mon Oct  3 00:02:32 2016        
(r306608)
+++ stable/11/sys/fs/nfsserver/nfs_nfsdcache.c  Mon Oct  3 00:10:14 2016        
(r306609)
@@ -159,7 +159,7 @@ __FBSDID("$FreeBSD$");
 #ifndef APPLEKEXT
 #include <fs/nfs/nfsport.h>
 
-extern struct nfsstats newnfsstats;
+extern struct nfsstatsv1 nfsstatsv1;
 extern struct mtx nfsrc_udpmtx;
 extern struct nfsrchash_bucket nfsrchash_table[NFSRVCACHE_HASHSIZE];
 extern struct nfsrchash_bucket nfsrcahash_table[NFSRVCACHE_HASHSIZE];
@@ -318,8 +318,8 @@ nfsrvd_initcache(void)
        TAILQ_INIT(&nfsrvudplru);
        nfsrc_tcpsavedreplies = 0;
        nfsrc_udpcachesize = 0;
-       newnfsstats.srvcache_tcppeak = 0;
-       newnfsstats.srvcache_size = 0;
+       nfsstatsv1.srvcache_tcppeak = 0;
+       nfsstatsv1.srvcache_size = 0;
 }
 
 /*
@@ -395,14 +395,14 @@ loop:
                        TAILQ_REMOVE(&nfsrvudplru, rp, rc_lru);
                        TAILQ_INSERT_TAIL(&nfsrvudplru, rp, rc_lru);
                        if (rp->rc_flag & RC_INPROG) {
-                               newnfsstats.srvcache_inproghits++;
+                               nfsstatsv1.srvcache_inproghits++;
                                mtx_unlock(mutex);
                                ret = RC_DROPIT;
                        } else if (rp->rc_flag & RC_REPSTATUS) {
                                /*
                                 * V2 only.
                                 */
-                               newnfsstats.srvcache_nonidemdonehits++;
+                               nfsstatsv1.srvcache_nonidemdonehits++;
                                mtx_unlock(mutex);
                                nfsrvd_rephead(nd);
                                *(nd->nd_errp) = rp->rc_status;
@@ -410,7 +410,7 @@ loop:
                                rp->rc_timestamp = NFSD_MONOSEC +
                                        NFSRVCACHE_UDPTIMEOUT;
                        } else if (rp->rc_flag & RC_REPMBUF) {
-                               newnfsstats.srvcache_nonidemdonehits++;
+                               nfsstatsv1.srvcache_nonidemdonehits++;
                                mtx_unlock(mutex);
                                nd->nd_mreq = m_copym(rp->rc_reply, 0,
                                        M_COPYALL, M_WAITOK);
@@ -425,8 +425,8 @@ loop:
                        goto out;
                }
        }
-       newnfsstats.srvcache_misses++;
-       atomic_add_int(&newnfsstats.srvcache_size, 1);
+       nfsstatsv1.srvcache_misses++;
+       atomic_add_int(&nfsstatsv1.srvcache_size, 1);
        nfsrc_udpcachesize++;
 
        newrp->rc_flag |= RC_INPROG;
@@ -480,7 +480,7 @@ nfsrvd_updatecache(struct nfsrv_descript
         * Reply from cache is a special case returned by nfsrv_checkseqid().
         */
        if (nd->nd_repstat == NFSERR_REPLYFROMCACHE) {
-               newnfsstats.srvcache_nonidemdonehits++;
+               nfsstatsv1.srvcache_nonidemdonehits++;
                mtx_unlock(mutex);
                nd->nd_repstat = 0;
                if (nd->nd_mreq)
@@ -519,8 +519,8 @@ nfsrvd_updatecache(struct nfsrv_descript
                        if (!(rp->rc_flag & RC_UDP)) {
                            atomic_add_int(&nfsrc_tcpsavedreplies, 1);
                            if (nfsrc_tcpsavedreplies >
-                               newnfsstats.srvcache_tcppeak)
-                               newnfsstats.srvcache_tcppeak =
+                               nfsstatsv1.srvcache_tcppeak)
+                               nfsstatsv1.srvcache_tcppeak =
                                    nfsrc_tcpsavedreplies;
                        }
                        mtx_unlock(mutex);
@@ -678,7 +678,7 @@ tryagain:
                        panic("nfs tcp cache0");
                rp->rc_flag |= RC_LOCKED;
                if (rp->rc_flag & RC_INPROG) {
-                       newnfsstats.srvcache_inproghits++;
+                       nfsstatsv1.srvcache_inproghits++;
                        mtx_unlock(mutex);
                        if (newrp->rc_sockref == rp->rc_sockref)
                                nfsrc_marksametcpconn(rp->rc_sockref);
@@ -687,7 +687,7 @@ tryagain:
                        /*
                         * V2 only.
                         */
-                       newnfsstats.srvcache_nonidemdonehits++;
+                       nfsstatsv1.srvcache_nonidemdonehits++;
                        mtx_unlock(mutex);
                        if (newrp->rc_sockref == rp->rc_sockref)
                                nfsrc_marksametcpconn(rp->rc_sockref);
@@ -696,7 +696,7 @@ tryagain:
                        *(nd->nd_errp) = rp->rc_status;
                        rp->rc_timestamp = NFSD_MONOSEC + nfsrc_tcptimeout;
                } else if (rp->rc_flag & RC_REPMBUF) {
-                       newnfsstats.srvcache_nonidemdonehits++;
+                       nfsstatsv1.srvcache_nonidemdonehits++;
                        mtx_unlock(mutex);
                        if (newrp->rc_sockref == rp->rc_sockref)
                                nfsrc_marksametcpconn(rp->rc_sockref);
@@ -711,8 +711,8 @@ tryagain:
                free((caddr_t)newrp, M_NFSRVCACHE);
                goto out;
        }
-       newnfsstats.srvcache_misses++;
-       atomic_add_int(&newnfsstats.srvcache_size, 1);
+       nfsstatsv1.srvcache_misses++;
+       atomic_add_int(&nfsstatsv1.srvcache_size, 1);
 
        /*
         * For TCP, multiple entries for a key are allowed, so don't
@@ -801,7 +801,7 @@ nfsrc_freecache(struct nfsrvcache *rp)
                        atomic_add_int(&nfsrc_tcpsavedreplies, -1);
        }
        FREE((caddr_t)rp, M_NFSRVCACHE);
-       atomic_add_int(&newnfsstats.srvcache_size, -1);
+       atomic_add_int(&nfsstatsv1.srvcache_size, -1);
 }

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to