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. */