Print this page
nfssrv: nfsstat reports zeroed data in zone


 100 
 101         rpcvers_t               nfs_versmin;
 102         rpcvers_t               nfs_versmax;
 103 
 104         /* NFS server locks and state */
 105         nfs_server_running_t    nfs_server_upordown;
 106         kmutex_t                nfs_server_upordown_lock;
 107         kcondvar_t              nfs_server_upordown_cv;
 108 
 109         /* RDMA wait variables */
 110         kcondvar_t              rdma_wait_cv;
 111         kmutex_t                rdma_wait_mutex;
 112 
 113         zoneid_t                nfs_zoneid;
 114         /* Per-zone data structures private to each module */
 115         struct nfs_export       *nfs_export;    /* nfs_export.c */
 116         struct nfs_srv          *nfs_srv;       /* nfs_srv.c */
 117         struct nfs3_srv         *nfs3_srv;      /* nfs3_srv.c */
 118         struct nfs4_srv         *nfs4_srv;      /* nfs4_srv.c */
 119         struct nfsauth_globals  *nfs_auth;      /* nfs_auth.c */





 120 } nfs_globals_t;
 121 
 122 /*
 123  * Default delegation setting for the server ==> "on"
 124  */
 125 #define NFS_SERVER_DELEGATION_DEFAULT   (TRUE)
 126 
 127 /* Maximum size of data portion of a remote request */
 128 #define NFS_MAXDATA     8192
 129 #define NFS_MAXNAMLEN   255
 130 #define NFS_MAXPATHLEN  1024
 131 
 132 /*
 133  * Rpc retransmission parameters
 134  */
 135 #define NFS_TIMEO       11      /* initial timeout for clts in 10th of a sec */
 136 #define NFS_RETRIES     5       /* times to retry request */
 137 #define NFS_COTS_TIMEO  600     /* initial timeout for cots in 10th of a sec */
 138 
 139 /*


 913 extern void     rfs_rddirfree(struct nfsrddirres *);
 914 extern void     rfs_statfs(fhandle_t *, struct nfsstatfs *, struct exportinfo *,
 915     struct svc_req *, cred_t *, bool_t);
 916 extern void     *rfs_statfs_getfh(fhandle_t *);
 917 extern void     rfs_srvrinit(void);
 918 extern void     rfs_srvrfini(void);
 919 extern void     rfs_srv_zone_init(nfs_globals_t *);
 920 extern void     rfs_srv_zone_fini(nfs_globals_t *);
 921 
 922 /*
 923  * flags to define path types during Multi Component Lookups
 924  * using the public filehandle
 925  */
 926 #define URLPATH         0x01    /* Universal Resource Locator path */
 927 #define NATIVEPATH      0x02    /* Native path, i.e., via mount protocol */
 928 #define SECURITY_QUERY  0x04    /* Security query */
 929 
 930 /* index for svstat_ptr */
 931 enum nfs_svccounts {NFS_CALLS, NFS_BADCALLS, NFS_REFERRALS, NFS_REFERLINKS};
 932 


 933 /*      function defs for NFS kernel */
 934 extern int      nfs_waitfor_purge_complete(vnode_t *);
 935 extern int      nfs_validate_caches(vnode_t *, cred_t *);
 936 extern void     nfs_purge_caches(vnode_t *, int, cred_t *);
 937 extern void     nfs_purge_rddir_cache(vnode_t *);
 938 extern void     nfs_attrcache(vnode_t *, struct nfsfattr *, hrtime_t);
 939 extern int      nfs_cache_fattr(vnode_t *, struct nfsfattr *, vattr_t *,
 940     hrtime_t, cred_t *);
 941 extern void     nfs_attr_cache(vnode_t *, vattr_t *, hrtime_t, cred_t *);
 942 extern void     nfs_attrcache_va(vnode_t *, struct vattr *);
 943 extern int      nfs_getattr_otw(vnode_t *, struct vattr *, cred_t *);
 944 extern int      nfsgetattr(vnode_t *, struct vattr *, cred_t *);
 945 extern int      nattr_to_vattr(vnode_t *, struct nfsfattr *, struct vattr *);
 946 extern void     nfs_async_manager(struct vfs *);
 947 extern void     nfs_async_manager_stop(struct vfs *);
 948 extern void     nfs_async_stop(struct vfs *);
 949 extern int      nfs_async_stop_sig(struct vfs *);
 950 extern int      nfs_clntinit(void);
 951 extern void     nfs_clntfini(void);
 952 extern int      nfstsize(void);


 996     struct knetconfig *, cred_t *);
 997 extern boolean_t nfs_has_ctty(void);
 998 extern nfs_globals_t *nfs_srv_getzg(void);
 999 extern void     nfs_srv_stop_all(void);
1000 extern void     nfs_srv_quiesce_all(void);
1001 extern int      rfs4_dss_setpaths(char *, size_t);
1002 extern int      nfs_setmod_check(page_t *);
1003 
1004 extern time_t   rfs4_lease_time;
1005 extern time_t   rfs4_grace_period;
1006 extern nvlist_t *rfs4_dss_paths, *rfs4_dss_oldpaths;
1007 
1008 extern kstat_named_t    *global_svstat_ptr[];
1009 
1010 extern zone_key_t       nfssrv_zone_key;
1011 extern list_t           nfssrv_globals_list;
1012 extern krwlock_t        nfssrv_globals_rwl;
1013 
1014 extern krwlock_t        rroklock;
1015 extern vtype_t          nf_to_vt[];
1016 extern kstat_named_t    *rfsproccnt_v2_ptr;
1017 extern kmutex_t         nfs_minor_lock;
1018 extern int              nfs_major;
1019 extern int              nfs_minor;
1020 extern vfsops_t         *nfs_vfsops;
1021 extern struct vnodeops  *nfs_vnodeops;
1022 extern const struct fs_operation_def nfs_vnodeops_template[];
1023 extern int              nfsfstyp;
1024 extern void             (*nfs_srv_quiesce_func)(void);
1025 extern int              (*nfs_srv_dss_func)(char *, size_t);
1026 
1027 /*
1028  * Per-zone stats as consumed by nfsstat(1m)
1029  */
1030 struct nfs_version_stats {
1031         kstat_named_t   *aclreqcnt_ptr;         /* nfs_acl:0:aclreqcnt_v? */
1032         kstat_named_t   *aclproccnt_ptr;        /* nfs_acl:0:aclproccnt_v? */
1033         kstat_named_t   *rfsreqcnt_ptr;         /* nfs:0:rfsreqcnt_v? */
1034         kstat_named_t   *rfsproccnt_ptr;        /* nfs:0:rfsproccnt_v? */
1035 };
1036 
1037 /*
1038  * A bit of asymmetry: nfs:0:nfs_client isn't part of this structure.
1039  */
1040 struct nfs_stats {
1041         kstat_named_t           *nfs_stats_svstat_ptr[NFS_VERSMAX + 1];
1042         struct nfs_version_stats        nfs_stats_v2;
1043         struct nfs_version_stats        nfs_stats_v3;
1044         struct nfs_version_stats        nfs_stats_v4;
1045 };
1046 
1047 /*
1048  * Key used to retrieve counters.
1049  */
1050 extern zone_key_t nfsstat_zone_key;
1051 
1052 /*
1053  * Zone callback functions.
1054  */
1055 extern void     *nfsstat_zone_init(zoneid_t);
1056 extern void     nfsstat_zone_fini(zoneid_t, void *);
1057 



1058 #endif  /* _KERNEL */
1059 
1060 /*
1061  * Version 3 declarations and definitions.
1062  */
1063 
1064 #define NFS3_FHSIZE 64
1065 #define NFS3_COOKIEVERFSIZE 8
1066 #define NFS3_CREATEVERFSIZE 8
1067 #define NFS3_WRITEVERFSIZE 8
1068 
1069 typedef char *filename3;
1070 
1071 typedef char *nfspath3;
1072 
1073 #define nfs3nametoolong ((char *)-1)
1074 
1075 typedef uint64 fileid3;
1076 
1077 typedef uint64 cookie3;


2321 extern uint_t   nfs3_tsize(struct knetconfig *);
2322 extern uint_t   rfs3_tsize(struct svc_req *);
2323 extern int      vattr_to_sattr3(struct vattr *, sattr3 *);
2324 extern void     setdiropargs3(diropargs3 *, char *, vnode_t *);
2325 extern enum nfsstat3 puterrno3(int);
2326 extern int      geterrno3(enum nfsstat3);
2327 extern int      nfs3init(int, char *);
2328 extern void     nfs3fini(void);
2329 extern int      nfs3_vfsinit(void);
2330 extern void     nfs3_vfsfini(void);
2331 extern void     vattr_to_post_op_attr(struct vattr *, post_op_attr *);
2332 extern void     mblk_to_iov(mblk_t *, int, struct iovec *);
2333 extern int      rfs_publicfh_mclookup(char *, vnode_t *, cred_t *, vnode_t **,
2334     struct exportinfo **, struct sec_ol *);
2335 extern int      rfs_pathname(char *, vnode_t **, vnode_t **, vnode_t *,
2336     cred_t *, int);
2337 extern int      rfs_cross_mnt(vnode_t **, struct exportinfo **);
2338 extern int      rfs_climb_crossmnt(vnode_t **, struct exportinfo **, cred_t *);
2339 
2340 extern vtype_t          nf3_to_vt[];
2341 extern kstat_named_t    *rfsproccnt_v3_ptr;
2342 extern vfsops_t         *nfs3_vfsops;
2343 extern struct vnodeops  *nfs3_vnodeops;
2344 extern const struct fs_operation_def nfs3_vnodeops_template[];
2345 
2346 /*
2347  * Some servers do not properly update the attributes of the
2348  * directory when changes are made.  To allow interoperability
2349  * with these broken servers, the nfs_disable_rddir_cache
2350  * parameter can be used to disable readdir response caching.
2351  */
2352 extern int              nfs_disable_rddir_cache;
2353 
2354 /*
2355  * External functions called by the v2/v3 code into the v4 code
2356  */
2357 extern void     nfs4_clnt_init(void);
2358 extern void     nfs4_clnt_fini(void);
2359 
2360 /*
2361  * Does NFS4 server have a vnode delegated?  TRUE if so, FALSE if not.




 100 
 101         rpcvers_t               nfs_versmin;
 102         rpcvers_t               nfs_versmax;
 103 
 104         /* NFS server locks and state */
 105         nfs_server_running_t    nfs_server_upordown;
 106         kmutex_t                nfs_server_upordown_lock;
 107         kcondvar_t              nfs_server_upordown_cv;
 108 
 109         /* RDMA wait variables */
 110         kcondvar_t              rdma_wait_cv;
 111         kmutex_t                rdma_wait_mutex;
 112 
 113         zoneid_t                nfs_zoneid;
 114         /* Per-zone data structures private to each module */
 115         struct nfs_export       *nfs_export;    /* nfs_export.c */
 116         struct nfs_srv          *nfs_srv;       /* nfs_srv.c */
 117         struct nfs3_srv         *nfs3_srv;      /* nfs3_srv.c */
 118         struct nfs4_srv         *nfs4_srv;      /* nfs4_srv.c */
 119         struct nfsauth_globals  *nfs_auth;      /* nfs_auth.c */
 120 
 121         /* statistic: nfs_stat.c, etc. */
 122         kstat_named_t           *svstat[NFS_VERSMAX + 1];
 123         kstat_named_t           *rfsproccnt[NFS_VERSMAX + 1];
 124         kstat_named_t           *aclproccnt[NFS_VERSMAX + 1];
 125 } nfs_globals_t;
 126 
 127 /*
 128  * Default delegation setting for the server ==> "on"
 129  */
 130 #define NFS_SERVER_DELEGATION_DEFAULT   (TRUE)
 131 
 132 /* Maximum size of data portion of a remote request */
 133 #define NFS_MAXDATA     8192
 134 #define NFS_MAXNAMLEN   255
 135 #define NFS_MAXPATHLEN  1024
 136 
 137 /*
 138  * Rpc retransmission parameters
 139  */
 140 #define NFS_TIMEO       11      /* initial timeout for clts in 10th of a sec */
 141 #define NFS_RETRIES     5       /* times to retry request */
 142 #define NFS_COTS_TIMEO  600     /* initial timeout for cots in 10th of a sec */
 143 
 144 /*


 918 extern void     rfs_rddirfree(struct nfsrddirres *);
 919 extern void     rfs_statfs(fhandle_t *, struct nfsstatfs *, struct exportinfo *,
 920     struct svc_req *, cred_t *, bool_t);
 921 extern void     *rfs_statfs_getfh(fhandle_t *);
 922 extern void     rfs_srvrinit(void);
 923 extern void     rfs_srvrfini(void);
 924 extern void     rfs_srv_zone_init(nfs_globals_t *);
 925 extern void     rfs_srv_zone_fini(nfs_globals_t *);
 926 
 927 /*
 928  * flags to define path types during Multi Component Lookups
 929  * using the public filehandle
 930  */
 931 #define URLPATH         0x01    /* Universal Resource Locator path */
 932 #define NATIVEPATH      0x02    /* Native path, i.e., via mount protocol */
 933 #define SECURITY_QUERY  0x04    /* Security query */
 934 
 935 /* index for svstat_ptr */
 936 enum nfs_svccounts {NFS_CALLS, NFS_BADCALLS, NFS_REFERRALS, NFS_REFERLINKS};
 937 
 938 #define NFS_V2  NFS_VERSION
 939 
 940 /*      function defs for NFS kernel */
 941 extern int      nfs_waitfor_purge_complete(vnode_t *);
 942 extern int      nfs_validate_caches(vnode_t *, cred_t *);
 943 extern void     nfs_purge_caches(vnode_t *, int, cred_t *);
 944 extern void     nfs_purge_rddir_cache(vnode_t *);
 945 extern void     nfs_attrcache(vnode_t *, struct nfsfattr *, hrtime_t);
 946 extern int      nfs_cache_fattr(vnode_t *, struct nfsfattr *, vattr_t *,
 947     hrtime_t, cred_t *);
 948 extern void     nfs_attr_cache(vnode_t *, vattr_t *, hrtime_t, cred_t *);
 949 extern void     nfs_attrcache_va(vnode_t *, struct vattr *);
 950 extern int      nfs_getattr_otw(vnode_t *, struct vattr *, cred_t *);
 951 extern int      nfsgetattr(vnode_t *, struct vattr *, cred_t *);
 952 extern int      nattr_to_vattr(vnode_t *, struct nfsfattr *, struct vattr *);
 953 extern void     nfs_async_manager(struct vfs *);
 954 extern void     nfs_async_manager_stop(struct vfs *);
 955 extern void     nfs_async_stop(struct vfs *);
 956 extern int      nfs_async_stop_sig(struct vfs *);
 957 extern int      nfs_clntinit(void);
 958 extern void     nfs_clntfini(void);
 959 extern int      nfstsize(void);


1003     struct knetconfig *, cred_t *);
1004 extern boolean_t nfs_has_ctty(void);
1005 extern nfs_globals_t *nfs_srv_getzg(void);
1006 extern void     nfs_srv_stop_all(void);
1007 extern void     nfs_srv_quiesce_all(void);
1008 extern int      rfs4_dss_setpaths(char *, size_t);
1009 extern int      nfs_setmod_check(page_t *);
1010 
1011 extern time_t   rfs4_lease_time;
1012 extern time_t   rfs4_grace_period;
1013 extern nvlist_t *rfs4_dss_paths, *rfs4_dss_oldpaths;
1014 
1015 extern kstat_named_t    *global_svstat_ptr[];
1016 
1017 extern zone_key_t       nfssrv_zone_key;
1018 extern list_t           nfssrv_globals_list;
1019 extern krwlock_t        nfssrv_globals_rwl;
1020 
1021 extern krwlock_t        rroklock;
1022 extern vtype_t          nf_to_vt[];

1023 extern kmutex_t         nfs_minor_lock;
1024 extern int              nfs_major;
1025 extern int              nfs_minor;
1026 extern vfsops_t         *nfs_vfsops;
1027 extern struct vnodeops  *nfs_vnodeops;
1028 extern const struct fs_operation_def nfs_vnodeops_template[];
1029 extern int              nfsfstyp;
1030 extern void             (*nfs_srv_quiesce_func)(void);
1031 extern int              (*nfs_srv_dss_func)(char *, size_t);
1032 
1033 /*
1034  * Per-zone stats as consumed by nfsstat(1m)
1035  */
1036 struct nfs_version_stats {
1037         kstat_named_t   *aclreqcnt_ptr;         /* nfs_acl:0:aclreqcnt_v? */

1038         kstat_named_t   *rfsreqcnt_ptr;         /* nfs:0:rfsreqcnt_v? */

1039 };
1040 
1041 /*
1042  * A bit of asymmetry: nfs:0:nfs_client isn't part of this structure.
1043  */
1044 struct nfs_stats {

1045         struct nfs_version_stats        nfs_stats_v2;
1046         struct nfs_version_stats        nfs_stats_v3;
1047         struct nfs_version_stats        nfs_stats_v4;
1048 };
1049 
1050 /*
1051  * Key used to retrieve counters.
1052  */
1053 extern zone_key_t nfsstat_zone_key;
1054 
1055 /*
1056  * Zone callback functions.
1057  */
1058 extern void     *nfsstat_zone_init(zoneid_t);
1059 extern void     nfsstat_zone_fini(zoneid_t, void *);
1060 
1061 extern void rfs_stat_zone_init(nfs_globals_t *);
1062 extern void rfs_stat_zone_fini(nfs_globals_t *);
1063 
1064 #endif  /* _KERNEL */
1065 
1066 /*
1067  * Version 3 declarations and definitions.
1068  */
1069 
1070 #define NFS3_FHSIZE 64
1071 #define NFS3_COOKIEVERFSIZE 8
1072 #define NFS3_CREATEVERFSIZE 8
1073 #define NFS3_WRITEVERFSIZE 8
1074 
1075 typedef char *filename3;
1076 
1077 typedef char *nfspath3;
1078 
1079 #define nfs3nametoolong ((char *)-1)
1080 
1081 typedef uint64 fileid3;
1082 
1083 typedef uint64 cookie3;


2327 extern uint_t   nfs3_tsize(struct knetconfig *);
2328 extern uint_t   rfs3_tsize(struct svc_req *);
2329 extern int      vattr_to_sattr3(struct vattr *, sattr3 *);
2330 extern void     setdiropargs3(diropargs3 *, char *, vnode_t *);
2331 extern enum nfsstat3 puterrno3(int);
2332 extern int      geterrno3(enum nfsstat3);
2333 extern int      nfs3init(int, char *);
2334 extern void     nfs3fini(void);
2335 extern int      nfs3_vfsinit(void);
2336 extern void     nfs3_vfsfini(void);
2337 extern void     vattr_to_post_op_attr(struct vattr *, post_op_attr *);
2338 extern void     mblk_to_iov(mblk_t *, int, struct iovec *);
2339 extern int      rfs_publicfh_mclookup(char *, vnode_t *, cred_t *, vnode_t **,
2340     struct exportinfo **, struct sec_ol *);
2341 extern int      rfs_pathname(char *, vnode_t **, vnode_t **, vnode_t *,
2342     cred_t *, int);
2343 extern int      rfs_cross_mnt(vnode_t **, struct exportinfo **);
2344 extern int      rfs_climb_crossmnt(vnode_t **, struct exportinfo **, cred_t *);
2345 
2346 extern vtype_t          nf3_to_vt[];

2347 extern vfsops_t         *nfs3_vfsops;
2348 extern struct vnodeops  *nfs3_vnodeops;
2349 extern const struct fs_operation_def nfs3_vnodeops_template[];
2350 
2351 /*
2352  * Some servers do not properly update the attributes of the
2353  * directory when changes are made.  To allow interoperability
2354  * with these broken servers, the nfs_disable_rddir_cache
2355  * parameter can be used to disable readdir response caching.
2356  */
2357 extern int              nfs_disable_rddir_cache;
2358 
2359 /*
2360  * External functions called by the v2/v3 code into the v4 code
2361  */
2362 extern void     nfs4_clnt_init(void);
2363 extern void     nfs4_clnt_fini(void);
2364 
2365 /*
2366  * Does NFS4 server have a vnode delegated?  TRUE if so, FALSE if not.