openldap-commit2de...@openldap.org writes: > Allow reading freelist while working on it > > The circular dependency issues appear to have been resolved. > Still, need to watch closely, maybe revert this change if > problems arise.
IIRC this could get page-hungry when I tried that with a fragented DB, and with large changes which needed overflow pages and used them up for non-freelist items. One of those big LDIFs at ada, I think. Something like: Commit wants a big enough range for an overflow page for mt_free_pgs, maybe finds and allocates one, but the freelist changes eat too many freelist items and will need a bigger page one later. It doesn't free the useless overflow page it already allocated. Repeat. Anyway, I think this change needs code to give pages back to me_pghead, or revert to an earlier {me_pglast, me_pghead}, or something like that. Or maybe someday clean up nested txns, support them with WRITEMAP, and use those for the freelist loop since they support reverting a change. -- Hallvard