]> git.sur5r.net Git - openldap/commitdiff
Cleanup db_lock/unlock parameters
authorHoward Chu <hyc@openldap.org>
Sun, 31 Dec 2006 23:37:06 +0000 (23:37 +0000)
committerHoward Chu <hyc@openldap.org>
Sun, 31 Dec 2006 23:37:06 +0000 (23:37 +0000)
servers/slapd/back-bdb/add.c
servers/slapd/back-bdb/bind.c
servers/slapd/back-bdb/cache.c
servers/slapd/back-bdb/compare.c
servers/slapd/back-bdb/delete.c
servers/slapd/back-bdb/id2entry.c
servers/slapd/back-bdb/modify.c
servers/slapd/back-bdb/proto-bdb.h
servers/slapd/back-bdb/referral.c
servers/slapd/back-bdb/search.c

index 274c8f40df0d74ddc56db2da53039a630eabf239..4c4d838a1e8244b64d7ea380c991945e0326ce16 100644 (file)
@@ -136,7 +136,7 @@ retry:      /* transaction retry */
                if( p ) {
                        /* free parent and reader lock */
                        if ( p != (Entry *)&slap_entry_root ) {
-                               bdb_unlocked_cache_return_entry_r( &bdb->bi_cache, p );
+                               bdb_unlocked_cache_return_entry_r( bdb, p );
                        }
                        p = NULL;
                }
@@ -218,7 +218,7 @@ retry:      /* transaction retry */
                rs->sr_ref = is_entry_referral( p )
                        ? get_entry_referrals( op, p )
                        : NULL;
-               bdb_unlocked_cache_return_entry_r( &bdb->bi_cache, p );
+               bdb_unlocked_cache_return_entry_r( bdb, p );
                p = NULL;
                Debug( LDAP_DEBUG_TRACE,
                        LDAP_XSTRING(bdb_add) ": parent "
@@ -273,7 +273,7 @@ retry:      /* transaction retry */
                        rs->sr_matched = ber_strdup_x( p->e_name.bv_val,
                                op->o_tmpmemctx );
                        rs->sr_ref = get_entry_referrals( op, p );
-                       bdb_unlocked_cache_return_entry_r( &bdb->bi_cache, p );
+                       bdb_unlocked_cache_return_entry_r( bdb, p );
                        p = NULL;
                        Debug( LDAP_DEBUG_TRACE,
                                LDAP_XSTRING(bdb_add) ": parent is referral\n",
@@ -292,7 +292,7 @@ retry:      /* transaction retry */
 
        /* free parent and reader lock */
        if ( p != (Entry *)&slap_entry_root ) {
-               bdb_unlocked_cache_return_entry_r( &bdb->bi_cache, p );
+               bdb_unlocked_cache_return_entry_r( bdb, p );
        }
        p = NULL;
 
@@ -471,7 +471,7 @@ return_results:
                 * Possibly a callback may have mucked with it, although
                 * in general callbacks should treat the entry as read-only.
                 */
-               bdb_cache_return_entry_r( bdb->bi_dbenv, &bi->bi_cache, oe, &lock );
+               bdb_cache_return_entry_r( bdb, oe, &lock );
                if ( op->ora_e == oe )
                        op->ora_e = NULL;
 
index ef72666535b75a47de487bdc30968a08d836bee9..58cc7ccf33b4406e15730bfaf626823645847d5f 100644 (file)
@@ -88,8 +88,7 @@ dn2entry_retry:
        e = ei->bei_e;
        if ( rs->sr_err == DB_NOTFOUND ) {
                if( e != NULL ) {
-                       bdb_cache_return_entry_r( bdb->bi_dbenv,
-                               &bdb->bi_cache, e, &lock );
+                       bdb_cache_return_entry_r( bdb, e, &lock );
                        e = NULL;
                }
 
@@ -196,7 +195,7 @@ dn2entry_retry:
 done:
        /* free entry and reader lock */
        if( e != NULL ) {
-               bdb_cache_return_entry_r( bdb->bi_dbenv, &bdb->bi_cache, e, &lock );
+               bdb_cache_return_entry_r( bdb, e, &lock );
        }
 
        LOCK_ID_FREE(bdb->bi_dbenv, locker);
index 86acd1316fb121c3786611f89add02aab3d16b1d..160de89ae19e97ce7b86889bf43011c540c1c3ef 100644 (file)
@@ -120,7 +120,7 @@ bdb_cache_lru_link( Cache *cache, EntryInfo *ei )
 /* Atomically release and reacquire a lock */
 int
 bdb_cache_entry_db_relock(
-       DB_ENV *env,
+       struct bdb_info *bdb,
        u_int32_t locker,
        EntryInfo *ei,
        int rw,
@@ -145,7 +145,7 @@ bdb_cache_entry_db_relock(
        list[1].lock = *lock;
        list[1].mode = rw ? DB_LOCK_WRITE : DB_LOCK_READ;
        list[1].obj = &lockobj;
-       rc = env->lock_vec(env, locker, tryOnly ? DB_LOCK_NOWAIT : 0,
+       rc = bdb->bi_dbenv->lock_vec(bdb->bi_dbenv, locker, tryOnly ? DB_LOCK_NOWAIT : 0,
                list, 2, NULL );
 
        if (rc && !tryOnly) {
@@ -160,7 +160,7 @@ bdb_cache_entry_db_relock(
 }
 
 static int
-bdb_cache_entry_db_lock( DB_ENV *env, u_int32_t locker, EntryInfo *ei,
+bdb_cache_entry_db_lock( struct bdb_info *bdb, u_int32_t locker, EntryInfo *ei,
        int rw, int tryOnly, DB_LOCK *lock )
 {
 #ifdef NO_DB_LOCK
@@ -180,7 +180,7 @@ bdb_cache_entry_db_lock( DB_ENV *env, u_int32_t locker, EntryInfo *ei,
        lockobj.data = &ei->bei_id;
        lockobj.size = sizeof(ei->bei_id) + 1;
 
-       rc = LOCK_GET(env, locker, tryOnly ? DB_LOCK_NOWAIT : 0,
+       rc = LOCK_GET(bdb->bi_dbenv, locker, tryOnly ? DB_LOCK_NOWAIT : 0,
                                        &lockobj, db_rw, lock);
        if (rc && !tryOnly) {
                Debug( LDAP_DEBUG_TRACE,
@@ -192,7 +192,7 @@ bdb_cache_entry_db_lock( DB_ENV *env, u_int32_t locker, EntryInfo *ei,
 }
 
 int
-bdb_cache_entry_db_unlock ( DB_ENV *env, DB_LOCK *lock )
+bdb_cache_entry_db_unlock ( struct bdb_info *bdb, DB_LOCK *lock )
 {
 #ifdef NO_DB_LOCK
        return 0;
@@ -201,7 +201,7 @@ bdb_cache_entry_db_unlock ( DB_ENV *env, DB_LOCK *lock )
 
        if ( !lock || lock->mode == DB_LOCK_NG ) return 0;
 
-       rc = LOCK_PUT ( env, lock );
+       rc = LOCK_PUT ( bdb->bi_dbenv, lock );
        return rc;
 #endif
 }
@@ -759,16 +759,16 @@ load1:
                                bdb_cache_entryinfo_unlock( *eip );
                                islocked = 0;
                        }
-                       rc = bdb_cache_entry_db_lock( bdb->bi_dbenv, locker, *eip, 0, 0, lock );
+                       rc = bdb_cache_entry_db_lock( bdb, locker, *eip, 0, 0, lock );
                        if ( (*eip)->bei_state & CACHE_ENTRY_DELETED ) {
                                rc = DB_NOTFOUND;
-                               bdb_cache_entry_db_unlock( bdb->bi_dbenv, lock );
+                               bdb_cache_entry_db_unlock( bdb, lock );
                        } else if ( rc == 0 ) {
                                if ( load ) {
                                        /* Give up original read lock, obtain write lock
                                         */
                                    if ( rc == 0 ) {
-                                               rc = bdb_cache_entry_db_relock( bdb->bi_dbenv, locker,
+                                               rc = bdb_cache_entry_db_relock( bdb, locker,
                                                        *eip, 1, 0, lock );
                                        }
                                        if ( rc == 0 && !ep) {
@@ -790,18 +790,17 @@ load1:
                                        bdb_cache_entryinfo_unlock( *eip );
                                        if ( rc == 0 ) {
                                                /* If we succeeded, downgrade back to a readlock. */
-                                               rc = bdb_cache_entry_db_relock( bdb->bi_dbenv, locker,
+                                               rc = bdb_cache_entry_db_relock( bdb, locker,
                                                        *eip, 0, 0, lock );
                                        } else {
                                                /* Otherwise, release the lock. */
-                                               bdb_cache_entry_db_unlock( bdb->bi_dbenv, lock );
+                                               bdb_cache_entry_db_unlock( bdb, lock );
                                        }
                                } else if ( !(*eip)->bei_e ) {
                                        /* Some other thread is trying to load the entry,
-                                        * give it a chance to finish.
+                                        * wait for it to finish.
                                         */
-                                       bdb_cache_entry_db_unlock( bdb->bi_dbenv, lock );
-                                       ldap_pvt_thread_yield();
+                                       bdb_cache_entry_db_unlock( bdb, lock );
                                        bdb_cache_entryinfo_lock( *eip );
                                        islocked = 1;
                                        goto load1;
@@ -811,12 +810,12 @@ load1:
                                         */
                                        rc = bdb_fix_dn( (*eip)->bei_e, 1 );
                                        if ( rc ) {
-                                               bdb_cache_entry_db_relock( bdb->bi_dbenv,
+                                               bdb_cache_entry_db_relock( bdb,
                                                        locker, *eip, 1, 0, lock );
                                                /* check again in case other modifier did it already */
                                                if ( bdb_fix_dn( (*eip)->bei_e, 1 ) )
                                                        rc = bdb_fix_dn( (*eip)->bei_e, 2 );
-                                               bdb_cache_entry_db_relock( bdb->bi_dbenv,
+                                               bdb_cache_entry_db_relock( bdb,
                                                        locker, *eip, 0, 0, lock );
                                        }
 #endif
@@ -904,7 +903,7 @@ bdb_cache_add(
        /* Lock this entry so that bdb_add can run to completion.
         * It can only fail if BDB has run out of lock resources.
         */
-       rc = bdb_cache_entry_db_lock( bdb->bi_dbenv, locker, &ei, 0, 0, lock );
+       rc = bdb_cache_entry_db_lock( bdb, locker, &ei, 0, 0, lock );
        if ( rc ) {
                bdb_cache_entryinfo_unlock( eip );
                return rc;
@@ -954,16 +953,16 @@ bdb_cache_add(
 
 int
 bdb_cache_modify(
+       struct bdb_info *bdb,
        Entry *e,
        Attribute *newAttrs,
-       DB_ENV *env,
        u_int32_t locker,
        DB_LOCK *lock )
 {
        EntryInfo *ei = BEI(e);
        int rc;
        /* Get write lock on data */
-       rc = bdb_cache_entry_db_relock( env, locker, ei, 1, 0, lock );
+       rc = bdb_cache_entry_db_relock( bdb, locker, ei, 1, 0, lock );
 
        /* If we've done repeated mods on a cached entry, then e_attrs
         * is no longer contiguous with the entry, and must be freed.
@@ -997,7 +996,7 @@ bdb_cache_modrdn(
 #endif
 
        /* Get write lock on data */
-       rc =  bdb_cache_entry_db_relock( bdb->bi_dbenv, locker, ei, 1, 0, lock );
+       rc =  bdb_cache_entry_db_relock( bdb, locker, ei, 1, 0, lock );
        if ( rc ) return rc;
 
        /* If we've done repeated mods on a cached entry, then e_attrs
@@ -1080,9 +1079,8 @@ bdb_cache_modrdn(
  */
 int
 bdb_cache_delete(
-    Cache      *cache,
+       struct bdb_info *bdb,
     Entry              *e,
-    DB_ENV     *env,
     u_int32_t  locker,
     DB_LOCK    *lock )
 {
@@ -1098,7 +1096,7 @@ bdb_cache_delete(
        bdb_cache_entryinfo_lock( ei );
 
        /* Get write lock on the data */
-       rc = bdb_cache_entry_db_relock( env, locker, ei, 1, 0, lock );
+       rc = bdb_cache_entry_db_relock( bdb, locker, ei, 1, 0, lock );
        if ( rc ) {
                /* couldn't lock, undo and give up */
                ei->bei_state ^= CACHE_ENTRY_DELETED;
@@ -1110,12 +1108,12 @@ bdb_cache_delete(
                e->e_id, 0, 0 );
 
        /* set lru mutex */
-       ldap_pvt_thread_mutex_lock( &cache->lru_head_mutex );
+       ldap_pvt_thread_mutex_lock( &bdb->bi_cache.lru_head_mutex );
 
-       rc = bdb_cache_delete_internal( cache, e->e_private, 1 );
+       rc = bdb_cache_delete_internal( &bdb->bi_cache, e->e_private, 1 );
 
        /* free lru mutex */
-       ldap_pvt_thread_mutex_unlock( &cache->lru_head_mutex );
+       ldap_pvt_thread_mutex_unlock( &bdb->bi_cache.lru_head_mutex );
 
        /* Leave entry info locked */
 
index 3e88beff28caed6e7055657a640ff3516c0a17bd..259365c5775783d823ee722a40ebc0d8055f8648 100644 (file)
@@ -80,7 +80,7 @@ dn2entry_retry:
                                rs->sr_err = LDAP_REFERRAL;
                        }
 
-                       bdb_cache_return_entry_r( bdb->bi_dbenv, &bdb->bi_cache, e, &lock );
+                       bdb_cache_return_entry_r( bdb, e, &lock );
                        e = NULL;
 
                } else {
@@ -182,8 +182,7 @@ return_results:
 done:
        /* free entry */
        if ( e != NULL ) {
-               bdb_cache_return_entry_r( bdb->bi_dbenv, &bdb->bi_cache,
-                               e, &lock );
+               bdb_cache_return_entry_r( bdb, e, &lock );
        }
 
        LOCK_ID_FREE ( bdb->bi_dbenv, locker );
index 32627ce5b9cbc50ce9dc82b3c6c824c45f25a56a..b39306c4ed60a38aceb99bb2563395eaa064bc27 100644 (file)
@@ -517,8 +517,7 @@ retry:      /* transaction retry */
                        goto return_results;
                }
        } else {
-               rc = bdb_cache_delete( &bdb->bi_cache, e, bdb->bi_dbenv,
-                       locker, &lock );
+               rc = bdb_cache_delete( bdb, e, locker, &lock );
                switch( rc ) {
                case DB_LOCK_DEADLOCK:
                case DB_LOCK_NOTGRANTED:
index 8e670b955db863f0348082f4caac50999e597a34..5d1d6f5aadc5b1e2030a9617d642bca4d4c9e484 100644 (file)
@@ -260,14 +260,13 @@ int bdb_entry_release(
 
                /* lock is freed with txn */
                if ( !boi || boi->boi_txn ) {
-                       bdb_unlocked_cache_return_entry_rw( &bdb->bi_cache, e, rw );
+                       bdb_unlocked_cache_return_entry_rw( bdb, e, rw );
                } else {
                        struct bdb_lock_info *bli, *prev;
                        for ( prev=(struct bdb_lock_info *)&boi->boi_locks,
                                bli = boi->boi_locks; bli; prev=bli, bli=bli->bli_next ) {
                                if ( bli->bli_id == e->e_id ) {
-                                       bdb_cache_return_entry_rw( bdb->bi_dbenv, &bdb->bi_cache,
-                                               e, rw, &bli->bli_lock );
+                                       bdb_cache_return_entry_rw( bdb, e, rw, &bli->bli_lock );
                                        prev->bli_next = bli->bli_next;
                                        op->o_tmpfree( bli, op->o_tmpmemctx );
                                        break;
@@ -411,7 +410,7 @@ dn2entry_retry:
 return_results:
        if( rc != LDAP_SUCCESS ) {
                /* free entry */
-               bdb_cache_return_entry_rw(bdb->bi_dbenv, &bdb->bi_cache, e, rw, &lock);
+               bdb_cache_return_entry_rw(bdb, e, rw, &lock);
 
        } else {
                if ( slapMode == SLAP_SERVER_MODE ) {
@@ -438,7 +437,7 @@ return_results:
                        }
                } else {
                        *ent = entry_dup( e );
-                       bdb_cache_return_entry_rw(bdb->bi_dbenv, &bdb->bi_cache, e, rw, &lock);
+                       bdb_cache_return_entry_rw(bdb, e, rw, &lock);
                }
        }
 
index 89c3bf5f5f96115e74ef5ab9786994e6975d06ba..9ef342c3066d1042f61db67258d6a2e357925478 100644 (file)
@@ -600,7 +600,7 @@ retry:      /* transaction retry */
                        attrs_free( dummy.e_attrs );
 
                } else {
-                       rc = bdb_cache_modify( e, dummy.e_attrs, bdb->bi_dbenv, locker, &lock );
+                       rc = bdb_cache_modify( bdb, e, dummy.e_attrs, locker, &lock );
                        switch( rc ) {
                        case DB_LOCK_DEADLOCK:
                        case DB_LOCK_NOTGRANTED:
index 98d840717d6648b438203b4ac635fb5033212a43..0771df0e4c7bc56a4ab3fd458ac6e95d112d0472 100644 (file)
@@ -454,20 +454,20 @@ int bdb_monitor_db_destroy( BackendDB *be );
  * and we can trim out all of this stuff.
  */
 #if 0
-void bdb_cache_return_entry_rw( DB_ENV *env, Cache *cache, Entry *e,
+void bdb_cache_return_entry_rw( struct bdb_info *bdb, Entry *e,
        int rw, DB_LOCK *lock );
 #else
-#define bdb_cache_return_entry_rw( env, cache, e, rw, lock ) \
-       bdb_cache_entry_db_unlock( env, lock )
-#define        bdb_cache_return_entry( env, lock ) \
-       bdb_cache_entry_db_unlock( env, lock )
+#define bdb_cache_return_entry_rw( bdb, e, rw, lock ) \
+       bdb_cache_entry_db_unlock( bdb, lock )
+#define        bdb_cache_return_entry( bdb, lock ) \
+       bdb_cache_entry_db_unlock( bdb, lock )
 #endif
-#define bdb_cache_return_entry_r(env, c, e, l) \
-       bdb_cache_return_entry_rw((env), (c), (e), 0, (l))
-#define bdb_cache_return_entry_w(env, c, e, l) \
-       bdb_cache_return_entry_rw((env), (c), (e), 1, (l))
+#define bdb_cache_return_entry_r(bdb, e, l) \
+       bdb_cache_return_entry_rw((bdb), (e), 0, (l))
+#define bdb_cache_return_entry_w(bdb, e, l) \
+       bdb_cache_return_entry_rw((bdb), (e), 1, (l))
 #if 0
-void bdb_unlocked_cache_return_entry_rw( Cache *cache, Entry *e, int rw );
+void bdb_unlocked_cache_return_entry_rw( struct bdb_info *bdb, Entry *e, int rw );
 #else
 #define        bdb_unlocked_cache_return_entry_rw( a, b, c )   ((void)0)
 #endif
@@ -512,9 +512,9 @@ int bdb_cache_modrdn(
        DB_LOCK *lock
 );
 int bdb_cache_modify(
+       struct bdb_info *bdb,
        Entry *e,
        Attribute *newAttrs,
-       DB_ENV *env,
        u_int32_t locker,
        DB_LOCK *lock
 );
@@ -546,9 +546,8 @@ bdb_cache_find_parent(
        EntryInfo **res
 );
 int bdb_cache_delete(
-       Cache   *cache,
+       struct bdb_info *bdb,
        Entry   *e,
-       DB_ENV  *env,
        u_int32_t locker,
        DB_LOCK *lock
 );
@@ -557,12 +556,6 @@ void bdb_cache_delete_cleanup(
        EntryInfo *ei
 );
 void bdb_cache_release_all( Cache *cache );
-void bdb_cache_delete_entry(
-       struct bdb_info *bdb,
-       EntryInfo *ei,
-       u_int32_t locker,
-       DB_LOCK *lock
-);
 
 #ifdef BDB_HIER
 int hdb_cache_load(
@@ -574,7 +567,7 @@ int hdb_cache_load(
 
 #define bdb_cache_entry_db_relock              BDB_SYMBOL(cache_entry_db_relock)
 int bdb_cache_entry_db_relock(
-       DB_ENV *env,
+       struct bdb_info *bdb,
        u_int32_t locker,
        EntryInfo *ei,
        int rw,
@@ -582,7 +575,7 @@ int bdb_cache_entry_db_relock(
        DB_LOCK *lock );
 
 int bdb_cache_entry_db_unlock(
-       DB_ENV *env,
+       struct bdb_info *bdb,
        DB_LOCK *lock );
 
 #ifdef BDB_REUSE_LOCKERS
index 168da4677d54275fcad90ddae900b930be368ef7..c3001710c02089f993cbba237ae8df0ad7dcd378 100644 (file)
@@ -102,7 +102,7 @@ dn2entry_retry:
                                }
                        }
 
-                       bdb_cache_return_entry_r (bdb->bi_dbenv, &bdb->bi_cache, e, &lock);
+                       bdb_cache_return_entry_r (bdb, e, &lock);
                        e = NULL;
                } else if ( !be_issuffix( op->o_bd, &op->o_req_ndn ) && default_referral != NULL ) {
                        rc = LDAP_OTHER;
@@ -156,7 +156,7 @@ dn2entry_retry:
                ber_bvarray_free( refs );
        }
 
-       bdb_cache_return_entry_r(bdb->bi_dbenv, &bdb->bi_cache, e, &lock);
+       bdb_cache_return_entry_r(bdb, e, &lock);
        LOCK_ID_FREE ( bdb->bi_dbenv, locker );
        return rc;
 }
index 519b65dd6b786d0db3971b9ae36a71d3db838f8e..b650f7a75915cbe8e11ae5fec7b1fae54a17ecd9 100644 (file)
@@ -119,8 +119,7 @@ static Entry * deref_base (
                /* Free the previous entry, continue to work with the
                 * one we just retrieved.
                 */
-               bdb_cache_return_entry_r( bdb->bi_dbenv, &bdb->bi_cache,
-                       *matched, lock);
+               bdb_cache_return_entry_r( bdb, *matched, lock);
                *lock = lockr;
 
                /* We found a regular entry. Return this to the caller. The
@@ -212,7 +211,7 @@ static int search_aliases(
                if (first) {
                        first = 0;
                } else {
-                       bdb_cache_return_entry_r (bdb->bi_dbenv, &bdb->bi_cache, e, &locka);
+                       bdb_cache_return_entry_r (bdb, e, &locka);
                }
                BDB_IDL_CPY(subscop2, subscop);
                rs->sr_err = bdb_idl_intersection(curscop, subscop);
@@ -238,8 +237,7 @@ retry1:
                         * turned into a range that spans IDs indiscriminately
                         */
                        if (!is_entry_alias(a)) {
-                               bdb_cache_return_entry_r (bdb->bi_dbenv, &bdb->bi_cache,
-                                       a, &lockr);
+                               bdb_cache_return_entry_r (bdb, a, &lockr);
                                continue;
                        }
 
@@ -257,15 +255,13 @@ retry1:
                                        bdb_idl_insert(newsubs, a->e_id);
                                        bdb_idl_insert(scopes, a->e_id);
                                }
-                               bdb_cache_return_entry_r( bdb->bi_dbenv, &bdb->bi_cache,
-                                       a, &lockr);
+                               bdb_cache_return_entry_r( bdb, a, &lockr);
 
                        } else if (matched) {
                                /* Alias could not be dereferenced, or it deref'd to
                                 * an ID we've already seen. Ignore it.
                                 */
-                               bdb_cache_return_entry_r( bdb->bi_dbenv, &bdb->bi_cache,
-                                       matched, &lockr );
+                               bdb_cache_return_entry_r( bdb, matched, &lockr );
                                rs->sr_text = NULL;
                        }
                }
@@ -405,8 +401,7 @@ dn2entry_retry:
                        if ( e ) {
                                build_new_dn( &op->o_req_ndn, &e->e_nname, &stub,
                                        op->o_tmpmemctx );
-                               bdb_cache_return_entry_r (bdb->bi_dbenv, &bdb->bi_cache,
-                                       e, &lock);
+                               bdb_cache_return_entry_r (bdb, e, &lock);
                                matched = NULL;
                                goto dn2entry_retry;
                        }
@@ -444,8 +439,7 @@ dn2entry_retry:
 #ifdef SLAP_ZONE_ALLOC
                        slap_zn_runlock(bdb->bi_cache.c_zctx, matched);
 #endif
-                       bdb_cache_return_entry_r (bdb->bi_dbenv, &bdb->bi_cache,
-                               matched, &lock);
+                       bdb_cache_return_entry_r (bdb, matched, &lock);
                        matched = NULL;
 
                        if ( erefs ) {
@@ -493,7 +487,7 @@ dn2entry_retry:
                slap_zn_runlock(bdb->bi_cache.c_zctx, e);
 #endif
                if ( e != &e_root ) {
-                       bdb_cache_return_entry_r(bdb->bi_dbenv, &bdb->bi_cache, e, &lock);
+                       bdb_cache_return_entry_r(bdb, e, &lock);
                }
                send_ldap_result( op, rs );
                return rs->sr_err;
@@ -512,7 +506,7 @@ dn2entry_retry:
 #ifdef SLAP_ZONE_ALLOC
                slap_zn_runlock(bdb->bi_cache.c_zctx, e);
 #endif
-               bdb_cache_return_entry_r( bdb->bi_dbenv, &bdb->bi_cache, e, &lock );
+               bdb_cache_return_entry_r( bdb, e, &lock );
                e = NULL;
 
                if ( erefs ) {
@@ -550,7 +544,7 @@ dn2entry_retry:
                slap_zn_runlock(bdb->bi_cache.c_zctx, e);
 #endif
                if ( e != &e_root ) {
-                       bdb_cache_return_entry_r(bdb->bi_dbenv, &bdb->bi_cache, e, &lock);
+                       bdb_cache_return_entry_r(bdb, e, &lock);
                }
                send_ldap_result( op, rs );
                return 1;
@@ -573,7 +567,7 @@ dn2entry_retry:
        slap_zn_runlock(bdb->bi_cache.c_zctx, e);
 #endif
        if ( e != &e_root ) {
-               bdb_cache_return_entry_r(bdb->bi_dbenv, &bdb->bi_cache, e, &lock);
+               bdb_cache_return_entry_r(bdb, e, &lock);
        }
        e = NULL;
 
@@ -852,8 +846,7 @@ fetch_entry_retry:
 #ifdef SLAP_ZONE_ALLOC
                                        slap_zn_runlock(bdb->bi_cache.c_zctx, e);
 #endif
-                                       bdb_cache_return_entry_r( bdb->bi_dbenv,
-                                                       &bdb->bi_cache, e, &lock );
+                                       bdb_cache_return_entry_r( bdb, e, &lock );
                                        e = NULL;
                                        send_paged_response( op, rs, &lastid, tentries );
                                        goto done;
@@ -880,8 +873,7 @@ fetch_entry_retry:
 #ifdef SLAP_ZONE_ALLOC
                                        slap_zn_runlock(bdb->bi_cache.c_zctx, e);
 #endif
-                                       bdb_cache_return_entry_r(bdb->bi_dbenv,
-                                               &bdb->bi_cache, e, &lock);
+                                       bdb_cache_return_entry_r(bdb, e, &lock);
                                        e = NULL;
                                        rs->sr_entry = NULL;
                                        if ( rs->sr_err == LDAP_SIZELIMIT_EXCEEDED ) {
@@ -909,8 +901,7 @@ loop_continue:
 #ifdef SLAP_ZONE_ALLOC
                        slap_zn_runlock(bdb->bi_cache.c_zctx, e);
 #endif
-                       bdb_cache_return_entry_r( bdb->bi_dbenv,
-                               &bdb->bi_cache, e , &lock );
+                       bdb_cache_return_entry_r( bdb, e , &lock );
                        e = NULL;
                        rs->sr_entry = NULL;
                }