]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/init.c
use slab memory for proxyauthz
[openldap] / servers / slapd / back-bdb / init.c
index 12eebe2327e543d3eeb289bdaa9eabc5d744342a..eff1b5db620375bf5c7791fa3c0187ca1d9fc391 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2000-2005 The OpenLDAP Foundation.
+ * Copyright 2000-2006 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -69,7 +69,8 @@ bdb_db_init( BackendDB *be )
 #ifdef BDB_HIER
        ldap_pvt_thread_mutex_init( &bdb->bi_modrdns_mutex );
 #endif
-       ldap_pvt_thread_mutex_init( &bdb->bi_cache.lru_mutex );
+       ldap_pvt_thread_mutex_init( &bdb->bi_cache.lru_head_mutex );
+       ldap_pvt_thread_mutex_init( &bdb->bi_cache.lru_tail_mutex );
        ldap_pvt_thread_mutex_init( &bdb->bi_cache.c_dntree.bei_kids_mutex );
        ldap_pvt_thread_rdwr_init ( &bdb->bi_cache.c_rwlock );
        ldap_pvt_thread_rdwr_init( &bdb->bi_idl_tree_rwlock );
@@ -564,13 +565,14 @@ bdb_db_close( BackendDB *be )
                bdb->bi_idl_lru_head = bdb->bi_idl_lru_tail = NULL;
        }
 
-       if ( !( slapMode & SLAP_TOOL_QUICK ) && bdb->bi_dbenv ) {
-               XLOCK_ID_FREE(bdb->bi_dbenv, bdb->bi_cache.c_locker);
-               bdb->bi_cache.c_locker = 0;
-       }
-
        /* close db environment */
        if( bdb->bi_dbenv ) {
+               /* Free cache locker if we enabled locking */
+               if ( !( slapMode & SLAP_TOOL_QUICK )) {
+                       XLOCK_ID_FREE(bdb->bi_dbenv, bdb->bi_cache.c_locker);
+                       bdb->bi_cache.c_locker = 0;
+               }
+
                /* force a checkpoint, but not if we were ReadOnly,
                 * and not in Quick mode since there are no transactions there.
                 */
@@ -614,7 +616,8 @@ bdb_db_destroy( BackendDB *be )
        bdb_attr_index_destroy( bdb );
 
        ldap_pvt_thread_rdwr_destroy ( &bdb->bi_cache.c_rwlock );
-       ldap_pvt_thread_mutex_destroy( &bdb->bi_cache.lru_mutex );
+       ldap_pvt_thread_mutex_destroy( &bdb->bi_cache.lru_head_mutex );
+       ldap_pvt_thread_mutex_destroy( &bdb->bi_cache.lru_tail_mutex );
        ldap_pvt_thread_mutex_destroy( &bdb->bi_cache.c_dntree.bei_kids_mutex );
 #ifdef BDB_HIER
        ldap_pvt_thread_mutex_destroy( &bdb->bi_modrdns_mutex );