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,168 ****
  }
  
  srv_deleg_policy_t
  nfs4_get_deleg_policy()
  {
!         nfs4_srv_t *nsrv4 = zone_getspecific(rfs4_zone_key, curzone);
          return (nsrv4->nfs4_deleg_policy);
  }
  
  
  /*
--- 158,168 ----
  }
  
  srv_deleg_policy_t
  nfs4_get_deleg_policy()
  {
!         nfs4_srv_t *nsrv4 = nfs4_get_srv();
          return (nsrv4->nfs4_deleg_policy);
  }
  
  
  /*
*** 1268,1278 ****
          int no_delegation;
  
          ASSERT(rfs4_dbe_islocked(sp->rs_dbe));
          ASSERT(rfs4_dbe_islocked(fp->rf_dbe));
  
!         nsrv4 = zone_getspecific(rfs4_zone_key, curzone);
  
          /* Is the server even providing delegations? */
          if (nsrv4->nfs4_deleg_policy == SRV_NEVER_DELEGATE || dreq == DELEG_NONE)
                  return (NULL);
  
--- 1268,1278 ----
          int no_delegation;
  
          ASSERT(rfs4_dbe_islocked(sp->rs_dbe));
          ASSERT(rfs4_dbe_islocked(fp->rf_dbe));
  
!         nsrv4 = nfs4_get_srv();
  
          /* Is the server even providing delegations? */
          if (nsrv4->nfs4_deleg_policy == SRV_NEVER_DELEGATE || dreq == DELEG_NONE)
                  return (NULL);
  
*** 1447,1457 ****
  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);
  
          /* Is delegation enabled? */
          if (nsrv4->nfs4_deleg_policy == SRV_NEVER_DELEGATE)
                  return (FALSE);
  
--- 1447,1457 ----
  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 = nfs4_get_srv();
  
          /* Is delegation enabled? */
          if (nsrv4->nfs4_deleg_policy == SRV_NEVER_DELEGATE)
                  return (FALSE);
  
*** 1520,1530 ****
          nfs4_srv_t *nsrv4;
          rfs4_file_t *fp;
          bool_t create = FALSE;
          bool_t rc = FALSE;
  
!         nsrv4 = zone_getspecific(rfs4_zone_key, curzone);
          rfs4_hold_deleg_policy(nsrv4);
  
          /* Is delegation enabled? */
          if (nsrv4->nfs4_deleg_policy != SRV_NEVER_DELEGATE) {
                  fp = rfs4_findfile(vp, NULL, &create);
--- 1520,1530 ----
          nfs4_srv_t *nsrv4;
          rfs4_file_t *fp;
          bool_t create = FALSE;
          bool_t rc = FALSE;
  
!         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,1556 ****
   * 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);
  
          if (nsrv4->nfs4_deleg_policy == SRV_NEVER_DELEGATE)
                  return;
          rfs4_dbe_lock(fp->rf_dbe);
          ASSERT(fp->rf_dinfo.rd_hold_grant > 0);
--- 1546,1556 ----
   * or a rename is in progress.
   */
  void
  rfs4_clear_dont_grant(rfs4_file_t *fp)
  {
!         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,1896 ****
  void
  rfs4_disable_delegation(void)
  {
          nfs4_srv_t *nsrv4;
  
!         nsrv4 = zone_getspecific(rfs4_zone_key, curzone);
          mutex_enter(&nsrv4->deleg_lock);
          rfs4_deleg_disabled++;
          mutex_exit(&nsrv4->deleg_lock);
  }
  
--- 1886,1896 ----
  void
  rfs4_disable_delegation(void)
  {
          nfs4_srv_t *nsrv4;
  
!         nsrv4 = nfs4_get_srv();
          mutex_enter(&nsrv4->deleg_lock);
          rfs4_deleg_disabled++;
          mutex_exit(&nsrv4->deleg_lock);
  }
  
*** 1897,1907 ****
  void
  rfs4_enable_delegation(void)
  {
          nfs4_srv_t *nsrv4;
  
!         nsrv4 = zone_getspecific(rfs4_zone_key, curzone);
          mutex_enter(&nsrv4->deleg_lock);
          ASSERT(rfs4_deleg_disabled > 0);
          rfs4_deleg_disabled--;
          mutex_exit(&nsrv4->deleg_lock);
  }
--- 1897,1907 ----
  void
  rfs4_enable_delegation(void)
  {
          nfs4_srv_t *nsrv4;
  
!         nsrv4 = nfs4_get_srv();
          mutex_enter(&nsrv4->deleg_lock);
          ASSERT(rfs4_deleg_disabled > 0);
          rfs4_deleg_disabled--;
          mutex_exit(&nsrv4->deleg_lock);
  }