Author: rmacklem
Date: Wed May 18 01:14:27 2011
New Revision: 222044
URL: http://svn.freebsd.org/changeset/base/222044

Log:
  MFC: r221439
  Add kernel support for NFSSVC_ZEROCLTSTATS and NFSSVC_ZEROSRVSTATS
  so that they can be used by nfsstat(1) to implement the "-z" option
  for the new NFS subsystem.

Modified:
  stable/8/sys/fs/nfs/nfs_commonport.c
  stable/8/sys/nfs/nfssvc.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/fs/nfs/nfs_commonport.c
==============================================================================
--- stable/8/sys/fs/nfs/nfs_commonport.c        Tue May 17 22:36:16 2011        
(r222043)
+++ stable/8/sys/fs/nfs/nfs_commonport.c        Wed May 18 01:14:27 2011        
(r222044)
@@ -404,6 +404,64 @@ nfssvc_call(struct thread *p, struct nfs
        } else if (uap->flag & NFSSVC_GETSTATS) {
                error = copyout(&newnfsstats,
                    CAST_USER_ADDR_T(uap->argp), sizeof (newnfsstats));
+               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));
+                       }
+                       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.srvcache_size = 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));
+                       }
+               }
                return (error);
        } else if (uap->flag & NFSSVC_NFSUSERDPORT) {
                u_short sockport;

Modified: stable/8/sys/nfs/nfssvc.h
==============================================================================
--- stable/8/sys/nfs/nfssvc.h   Tue May 17 22:36:16 2011        (r222043)
+++ stable/8/sys/nfs/nfssvc.h   Wed May 18 01:14:27 2011        (r222044)
@@ -64,5 +64,7 @@
 #define        NFSSVC_CBADDSOCK        0x00200000
 #define        NFSSVC_GETSTATS         0x00400000
 #define        NFSSVC_BACKUPSTABLE     0x00800000
+#define        NFSSVC_ZEROCLTSTATS     0x01000000      /* modifier for 
GETSTATS */
+#define        NFSSVC_ZEROSRVSTATS     0x02000000      /* modifier for 
GETSTATS */
 
 #endif /* _NFS_NFSSVC_H */
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to