Print this page
Go ahead and destroy the NFSv4 database tables

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/nfs/nfs4_state.c
          +++ new/usr/src/uts/common/fs/nfs/nfs4_state.c
↓ open down ↓ 1509 lines elided ↑ open up ↑
1510 1510          nsrv4->seen_first_compound = 0;
1511 1511  
1512 1512          dbp = nsrv4->nfs4_server_state;
1513 1513          nsrv4->nfs4_server_state = NULL;
1514 1514  
1515 1515          rw_destroy(&nsrv4->rfs4_findclient_lock);
1516 1516  
1517 1517          /* First stop all of the reaper threads in the database */
1518 1518          rfs4_database_shutdown(dbp);
1519 1519          /*
1520      -         * XXX workaround
1521      -         * Skip destrying the state database yet just in case there
1522      -         * are unfinished operations depending on it.
     1520 +         * WARNING: There may be consumers of the rfs4 database still
     1521 +         * active as we destroy these.  IF that's the case, consider putting
     1522 +         * some of their _zone_fini()-like functions into the zsd key as
     1523 +         * ~~SHUTDOWN~~ functions instead of ~~DESTROY~~ functions.  We can
     1524 +         * maintain some ordering guarantees better that way.
1523 1525           */
1524 1526          /* Now destroy/release the database tables */
1525      -        /* rfs4_database_destroy(dbp); */
     1527 +        rfs4_database_destroy(dbp);
1526 1528  
1527 1529          /* Reset the cache timers for next time */
1528 1530          nsrv4->rfs4_client_cache_time = 0;
1529 1531          nsrv4->rfs4_openowner_cache_time = 0;
1530 1532          nsrv4->rfs4_state_cache_time = 0;
1531 1533          nsrv4->rfs4_lo_state_cache_time = 0;
1532 1534          nsrv4->rfs4_lockowner_cache_time = 0;
1533 1535          nsrv4->rfs4_file_cache_time = 0;
1534 1536          nsrv4->rfs4_deleg_state_cache_time = 0;
1535 1537  
↓ open down ↓ 2595 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX