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,559 ****
          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 */
  };
  #define exi_zoneid exi_zone->zone_id
  
  typedef struct exportinfo exportinfo_t;
  typedef struct exportdata exportdata_t;
--- 549,559 ----
          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 -- keep last! */
  };
  #define exi_zoneid exi_zone->zone_id
  
  typedef struct exportinfo exportinfo_t;
  typedef struct exportdata exportdata_t;
*** 631,640 ****
--- 631,644 ----
      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,666 ****
--- 661,672 ----
  
  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,705 ****
--- 702,712 ----
  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.
   */