cx->rc = cx->db->cursor( cx->db, NULL, &cx->dbc,
                        cx->bdb->bi_db_opflags );
-               if ( cx->rc ) return cx->rc;
+               if ( cx->rc )
+                       goto done_one;
 
                cx->data.data = &cx->dbuf;
                cx->data.ulen = sizeof(ID);
                cx->rc = cx->dbc->c_get( cx->dbc, &cx->key, &cx->data, DB_SET );
                if ( cx->rc ) {
                        cx->dbc->c_close( cx->dbc );
-                       return cx->rc;
+                       goto done_one;
                }
 
                /* If the on-disk count is zero we've never checked it.
                        }
                }
                cx->rc = cx->dbc->c_close( cx->dbc );
+done_one:
+               bdb_cache_entryinfo_lock( cx->ei );
+               cx->ei->bei_state ^= CACHE_ENTRY_ONELEVEL;
+               bdb_cache_entryinfo_unlock( cx->ei );
+               if ( cx->rc )
+                       return cx->rc;
+
        } else {
                /* The in-memory cache is in sync with the on-disk data.
                 * do we have any kids?