__sync_synchronize() needs an #ifdef around it. #ifdef __GNUC__, or something more general?
Not sure what to do for the #else. We could mostly avoid using mm_txnid when the lockfile is initialized and use mti_txnid instead (e.g. in pick_meta). And penalize MDB_NOLOCK with some sync call in the #else.