Print this page
nfssrv: nfsstat reports zeroed data in zone

@@ -115,10 +115,15 @@
         struct nfs_export       *nfs_export;    /* nfs_export.c */
         struct nfs_srv          *nfs_srv;       /* nfs_srv.c */
         struct nfs3_srv         *nfs3_srv;      /* nfs3_srv.c */
         struct nfs4_srv         *nfs4_srv;      /* nfs4_srv.c */
         struct nfsauth_globals  *nfs_auth;      /* nfs_auth.c */
+
+        /* statistic: nfs_stat.c, etc. */
+        kstat_named_t           *svstat[NFS_VERSMAX + 1];
+        kstat_named_t           *rfsproccnt[NFS_VERSMAX + 1];
+        kstat_named_t           *aclproccnt[NFS_VERSMAX + 1];
 } nfs_globals_t;
 
 /*
  * Default delegation setting for the server ==> "on"
  */

@@ -928,10 +933,12 @@
 #define SECURITY_QUERY  0x04    /* Security query */
 
 /* index for svstat_ptr */
 enum nfs_svccounts {NFS_CALLS, NFS_BADCALLS, NFS_REFERRALS, NFS_REFERLINKS};
 
+#define NFS_V2  NFS_VERSION
+
 /*      function defs for NFS kernel */
 extern int      nfs_waitfor_purge_complete(vnode_t *);
 extern int      nfs_validate_caches(vnode_t *, cred_t *);
 extern void     nfs_purge_caches(vnode_t *, int, cred_t *);
 extern void     nfs_purge_rddir_cache(vnode_t *);

@@ -1011,11 +1018,10 @@
 extern list_t           nfssrv_globals_list;
 extern krwlock_t        nfssrv_globals_rwl;
 
 extern krwlock_t        rroklock;
 extern vtype_t          nf_to_vt[];
-extern kstat_named_t    *rfsproccnt_v2_ptr;
 extern kmutex_t         nfs_minor_lock;
 extern int              nfs_major;
 extern int              nfs_minor;
 extern vfsops_t         *nfs_vfsops;
 extern struct vnodeops  *nfs_vnodeops;

@@ -1027,20 +1033,17 @@
 /*
  * Per-zone stats as consumed by nfsstat(1m)
  */
 struct nfs_version_stats {
         kstat_named_t   *aclreqcnt_ptr;         /* nfs_acl:0:aclreqcnt_v? */
-        kstat_named_t   *aclproccnt_ptr;        /* nfs_acl:0:aclproccnt_v? */
         kstat_named_t   *rfsreqcnt_ptr;         /* nfs:0:rfsreqcnt_v? */
-        kstat_named_t   *rfsproccnt_ptr;        /* nfs:0:rfsproccnt_v? */
 };
 
 /*
  * A bit of asymmetry: nfs:0:nfs_client isn't part of this structure.
  */
 struct nfs_stats {
-        kstat_named_t           *nfs_stats_svstat_ptr[NFS_VERSMAX + 1];
         struct nfs_version_stats        nfs_stats_v2;
         struct nfs_version_stats        nfs_stats_v3;
         struct nfs_version_stats        nfs_stats_v4;
 };
 

@@ -1053,10 +1056,13 @@
  * Zone callback functions.
  */
 extern void     *nfsstat_zone_init(zoneid_t);
 extern void     nfsstat_zone_fini(zoneid_t, void *);
 
+extern void rfs_stat_zone_init(nfs_globals_t *);
+extern void rfs_stat_zone_fini(nfs_globals_t *);
+
 #endif  /* _KERNEL */
 
 /*
  * Version 3 declarations and definitions.
  */

@@ -2336,11 +2342,10 @@
     cred_t *, int);
 extern int      rfs_cross_mnt(vnode_t **, struct exportinfo **);
 extern int      rfs_climb_crossmnt(vnode_t **, struct exportinfo **, cred_t *);
 
 extern vtype_t          nf3_to_vt[];
-extern kstat_named_t    *rfsproccnt_v3_ptr;
 extern vfsops_t         *nfs3_vfsops;
 extern struct vnodeops  *nfs3_vnodeops;
 extern const struct fs_operation_def nfs3_vnodeops_template[];
 
 /*