Print this page
Fix NFS design problems re. multiple zone keys
Make NFS server zone-specific data all have the same lifetime
Fix rfs4_clean_state_exi
Fix exi_cache_reclaim
Fix mistakes in zone keys work
More fixes re. exi_zoneid and exi_tree
(danmcd -> Keep some ASSERT()s around for readability.)
        
@@ -549,11 +549,11 @@
         struct zone             *exi_zone;
 #ifdef VOLATILE_FH_TEST
         uint32_t                exi_volatile_id;
         struct ex_vol_rename    *exi_vol_rename;
         kmutex_t                exi_vol_rename_lock;
-#endif /* VOLATILE_FH_TEST */
+#endif /* VOLATILE_FH_TEST -- keep last! */
 };
 #define exi_zoneid exi_zone->zone_id
 
 typedef struct exportinfo exportinfo_t;
 typedef struct exportdata exportdata_t;
@@ -631,10 +631,14 @@
     struct svc_req *, int, int, cred_t *);
 extern int      nfsauth_cache_clnt_compar(const void *, const void *);
 extern int      nfs_fhbcmp(char *, char *, int);
 extern void     nfs_exportinit(void);
 extern void     nfs_exportfini(void);
+extern void     nfs_export_zone_init(nfs_globals_t *);
+extern void     nfs_export_zone_fini(nfs_globals_t *);
+extern void     nfs_export_zone_shutdown(nfs_globals_t *);
+extern int      nfs_export_get_rootfh(nfs_globals_t *);
 extern int      chk_clnt_sec(struct exportinfo *, struct svc_req *);
 extern int      makefh(fhandle_t *, struct vnode *, struct exportinfo *);
 extern int      makefh_ol(fhandle_t *, struct exportinfo *, uint_t);
 extern int      makefh3(nfs_fh3 *, struct vnode *, struct exportinfo *);
 extern int      makefh3_ol(nfs_fh3 *, struct exportinfo *, uint_t);
@@ -657,10 +661,12 @@
 
 typedef struct nfs_export {
         /* Root of nfs pseudo namespace */
         treenode_t *ns_root;
 
+        nfs_globals_t           *ne_globals;    /* "up" pointer */
+
         struct exportinfo *exptable_path_hash[PKP_HASH_SIZE];
         struct exportinfo *exptable[EXPTABLESIZE];
 
         /*
          * Read/Write lock that protects the exportinfo list.  This lock
@@ -696,10 +702,11 @@
 extern int      vop_fid_pseudo(vnode_t *, fid_t *);
 extern int      nfs4_vget_pseudo(struct exportinfo *, vnode_t **, fid_t *);
 extern bool_t   nfs_visible_change(struct exportinfo *, vnode_t *,
                     timespec_t *);
 extern void     tree_update_change(nfs_export_t *, treenode_t *, timespec_t *);
+extern void     rfs4_clean_state_exi(nfs_export_t *, struct exportinfo *);
 
 /*
  * Functions that handle the NFSv4 server namespace security flavors
  * information.
  */