]> git.sur5r.net Git - openldap/commit
Save freelist using proper mdb_cursor_put().
authorHallvard Furuseth <hallvard@openldap.org>
Thu, 11 Jul 2013 20:09:46 +0000 (22:09 +0200)
committerHoward Chu <hyc@symas.com>
Fri, 12 Jul 2013 20:17:04 +0000 (13:17 -0700)
commit6741f9c0ef7973aeebacc3e547db9fc07702a8c2
tree9ff625842fc27224d25351d3600b1b9fd8891db2
parent08373439a604b6ad852d7148aa0ec8f33774bbe4
Save freelist using proper mdb_cursor_put().

(Restructuring for upcoming mdb_page_spill work.)
mdb_freelist_save() can't just Get() the destination, since
mdb_page_spill() may have put the destination in the read-only map.

TODO: Can this new put() modify the freelist, which would break it? The
final iteration's put() can shorten the node, the rest uses MDB_CURRENT.

We could set P_KEEP on dirty freeDB leaves and ovpages, since they are
all about to be modified.  But the code in this commit must stay anyway,
if mdb should support dropping a 256G DB. I.e. too big for dirty_list.
libraries/liblmdb/mdb.c