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

@@ -158,11 +158,11 @@
 }
 
 srv_deleg_policy_t
 nfs4_get_deleg_policy()
 {
-        nfs4_srv_t *nsrv4 = zone_getspecific(rfs4_zone_key, curzone);
+        nfs4_srv_t *nsrv4 = nfs4_get_srv();
         return (nsrv4->nfs4_deleg_policy);
 }
 
 
 /*

@@ -1268,11 +1268,11 @@
         int no_delegation;
 
         ASSERT(rfs4_dbe_islocked(sp->rs_dbe));
         ASSERT(rfs4_dbe_islocked(fp->rf_dbe));
 
-        nsrv4 = zone_getspecific(rfs4_zone_key, curzone);
+        nsrv4 = nfs4_get_srv();
 
         /* Is the server even providing delegations? */
         if (nsrv4->nfs4_deleg_policy == SRV_NEVER_DELEGATE || dreq == DELEG_NONE)
                 return (NULL);
 

@@ -1447,11 +1447,11 @@
 rfs4_check_delegated_byfp(int mode, rfs4_file_t *fp,
     bool_t trunc, bool_t do_delay, bool_t is_rm, clientid4 *cp)
 {
         rfs4_deleg_state_t *dsp;
 
-        nfs4_srv_t *nsrv4 = zone_getspecific(rfs4_zone_key, curzone);
+        nfs4_srv_t *nsrv4 = nfs4_get_srv();
 
         /* Is delegation enabled? */
         if (nsrv4->nfs4_deleg_policy == SRV_NEVER_DELEGATE)
                 return (FALSE);
 

@@ -1520,11 +1520,11 @@
         nfs4_srv_t *nsrv4;
         rfs4_file_t *fp;
         bool_t create = FALSE;
         bool_t rc = FALSE;
 
-        nsrv4 = zone_getspecific(rfs4_zone_key, curzone);
+        nsrv4 = nfs4_get_srv();
         rfs4_hold_deleg_policy(nsrv4);
 
         /* Is delegation enabled? */
         if (nsrv4->nfs4_deleg_policy != SRV_NEVER_DELEGATE) {
                 fp = rfs4_findfile(vp, NULL, &create);

@@ -1546,11 +1546,11 @@
  * or a rename is in progress.
  */
 void
 rfs4_clear_dont_grant(rfs4_file_t *fp)
 {
-        nfs4_srv_t *nsrv4 = zone_getspecific(rfs4_zone_key, curzone);
+        nfs4_srv_t *nsrv4 = nfs4_get_srv();
 
         if (nsrv4->nfs4_deleg_policy == SRV_NEVER_DELEGATE)
                 return;
         rfs4_dbe_lock(fp->rf_dbe);
         ASSERT(fp->rf_dinfo.rd_hold_grant > 0);

@@ -1886,11 +1886,11 @@
 void
 rfs4_disable_delegation(void)
 {
         nfs4_srv_t *nsrv4;
 
-        nsrv4 = zone_getspecific(rfs4_zone_key, curzone);
+        nsrv4 = nfs4_get_srv();
         mutex_enter(&nsrv4->deleg_lock);
         rfs4_deleg_disabled++;
         mutex_exit(&nsrv4->deleg_lock);
 }
 

@@ -1897,11 +1897,11 @@
 void
 rfs4_enable_delegation(void)
 {
         nfs4_srv_t *nsrv4;
 
-        nsrv4 = zone_getspecific(rfs4_zone_key, curzone);
+        nsrv4 = nfs4_get_srv();
         mutex_enter(&nsrv4->deleg_lock);
         ASSERT(rfs4_deleg_disabled > 0);
         rfs4_deleg_disabled--;
         mutex_exit(&nsrv4->deleg_lock);
 }