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