[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: openldap.git branch mdb.master updated. 0ce6bb4be0034120c850917bc4f59b4d4efc1432

Come to think of it, the meta page can hold some freelist
info.  mdb_txn_commit() can hopefully decide at some point
that its current freelist is what gets written to the
freeDB. Further changes go to an amendment in the meta page.
"Stolen oldpages" info goes there, not in the freeDB.

Next write-transaction initializes oldpages and mt_free_pgs
from the meta page.  Those mt_free_pgs pages become reusable
one transaction later than they do today.

MDB_RDONLY txns will not copy MDB_meta.mm_dbs[FREE_DBI] and
can no longer read the freeDB.  Unless they get an MDB_STAT
flag for use by ./mdb_stat & co.  Seems a good place to move
the complexity since it happens rarely.  Maybe that'd create
a readonly txn with the structure of a write txn so the
freelist can be used and and mdb_stat0()ed.

Could use the opportunity to align mm_dbs[MAIN_DBI] with a
cache line.  Then the variable metadata a readonly txn
copies, will all come from one cache line.