Howard Chu writes:
Using variably positioned meta pages seems like something we would try to cut down on seek overhead, but looking closer it doesn't appear that it can do that.
Could some commits choose where the next commit's MDB_meta should go? Maybe peel a page off the freelist on behalf of the next commit. Then the current commit's MDB_meta includes a reference to that page and a check bit which is equal to some bit in the chosen page's MDB_meta. Instead of updating the file header, next commit toggles that bit in its own MDB_meta to show that it is in use.
mdb_page_alloc() cannot reuse free pages younger than the current chain. mdb_env_pick_meta() must walk this chain of forward references, so such a chain should be short.