openldap-commit2devel(a)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