From: Howard Chu Date: Sun, 26 Aug 2007 14:37:12 +0000 (+0000) Subject: revert prev commit, no gain X-Git-Tag: OPENLDAP_REL_ENG_2_4_MP~75 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=8367f0cfe460a0310404eb2fc02a6460b8464701;p=openldap revert prev commit, no gain --- diff --git a/servers/slapd/back-bdb/cache.c b/servers/slapd/back-bdb/cache.c index 9854a5656e..c6d48112ce 100644 --- a/servers/slapd/back-bdb/cache.c +++ b/servers/slapd/back-bdb/cache.c @@ -843,7 +843,7 @@ load1: bdb_cache_entryinfo_unlock( *eip ); islocked = 0; } - rc = bdb_cache_entry_db_lock( bdb, locker, *eip, 0, 0, lock ); + rc = bdb_cache_entry_db_lock( bdb, locker, *eip, load, 0, lock ); if ( (*eip)->bei_state & CACHE_ENTRY_DELETED ) { rc = DB_NOTFOUND; bdb_cache_entry_db_unlock( bdb, lock ); @@ -864,7 +864,11 @@ load1: ep = NULL; bdb_cache_lru_link( bdb, *eip ); } - if ( rc ) { + if ( rc == 0 ) { + /* If we succeeded, downgrade back to a readlock. */ + rc = bdb_cache_entry_db_relock( bdb, locker, + *eip, 0, 0, lock ); + } else { /* Otherwise, release the lock. */ bdb_cache_entry_db_unlock( bdb, lock ); }