if ( slapMode == SLAP_SERVER_MODE ) {
                /* free entry and reader or writer lock */
                cache_return_entry_rw( &li->li_cache, e, rw ); 
+               /* only do_add calls here with a write lock.
+                * get_entry doesn't obtain the giant lock, because its
+                * caller has already obtained it.
+                */
                if( rw ) {
                        ldap_pvt_thread_rdwr_wunlock( &li->li_giant_rwlock );
-               } else {
+               }
+#if 0
+               else {
                        ldap_pvt_thread_rdwr_runlock( &li->li_giant_rwlock );
                }
+#endif
 
        } else {
                entry_free( e );
                oc ? oc->soc_cname.bv_val : "(null)", at_name, 0);
 #endif
 
+       /* don't grab the giant lock - our caller has already gotten it. */
+
        /* can we find entry */
        e = dn2entry_rw( be, ndn, NULL, rw );
        if (e == NULL) {