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.)

*** 53,64 **** */ uint32_t nfs4_drc_hash = 541; static void rfs4_resource_err(struct svc_req *req, COMPOUND4args *argsp); - extern zone_key_t rfs4_zone_key; - /* * Initialize a duplicate request cache. */ rfs4_drc_t * rfs4_init_drc(uint32_t drc_size, uint32_t drc_hash_size) --- 53,62 ----
*** 95,105 **** * Destroy a duplicate request cache. */ void rfs4_fini_drc(void) { ! nfs4_srv_t *nsrv4 = zone_getspecific(rfs4_zone_key, curzone); rfs4_drc_t *drc = nsrv4->nfs4_drc; rfs4_dupreq_t *drp, *drp_next; /* iterate over the dr_cache and free the enties */ for (drp = list_head(&(drc->dr_cache)); drp != NULL; drp = drp_next) { --- 93,103 ---- * Destroy a duplicate request cache. */ void rfs4_fini_drc(void) { ! nfs4_srv_t *nsrv4 = nfs4_get_srv(); rfs4_drc_t *drc = nsrv4->nfs4_drc; rfs4_dupreq_t *drp, *drp_next; /* iterate over the dr_cache and free the enties */ for (drp = list_head(&(drc->dr_cache)); drp != NULL; drp = drp_next) {
*** 385,395 **** int error = 0; int dis_flags = 0; int dr_stat = NFS4_NOT_DUP; rfs4_dupreq_t *drp = NULL; int rv; ! nfs4_srv_t *nsrv4 = zone_getspecific(rfs4_zone_key, curzone); rfs4_drc_t *nfs4_drc = nsrv4->nfs4_drc; ASSERT(disp); /* --- 383,393 ---- int error = 0; int dis_flags = 0; int dr_stat = NFS4_NOT_DUP; rfs4_dupreq_t *drp = NULL; int rv; ! nfs4_srv_t *nsrv4 = nfs4_get_srv(); rfs4_drc_t *nfs4_drc = nsrv4->nfs4_drc; ASSERT(disp); /*