From: Hallvard Furuseth Date: Thu, 27 Jul 2017 06:22:34 +0000 (+0200) Subject: Less hungry mdb_pages_xkeep() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=24f437df86d73d3c440928231fbec616db605c79;p=thirdparty%2Fopenldap.git Less hungry mdb_pages_xkeep() Skip pages that are dirty only in an ancestor txn --- diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index 7c0343447d..92b9fcde38 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -2297,11 +2297,11 @@ mdb_pages_xkeep(MDB_cursor *mc, unsigned pflags, int all) for (j=0; jmc_snum; j++) { mp = m3->mc_pg[j]; if ((mp->mp_flags & Mask) == pflags) - if (IS_DIRTY_NW(txn, mp)) + if (IS_WRITABLE(txn, mp)) mp->mp_flags ^= P_KEEP; } if (MC_OVPG(m3) && ((MC_OVPG(m3)->mp_flags & Mask) == pflags) && - IS_DIRTY_NW(txn, MC_OVPG(m3))) + IS_WRITABLE(txn, MC_OVPG(m3))) MC_OVPG(m3)->mp_flags ^= P_KEEP; mx = m3->mc_xcursor; /* Proceed to mx if it is at a sub-database */