+ txn->mt_txnid, (void *) env, txn->mt_dbs[MAIN_DBI].md_root);
+
+ /* Update DB root pointers. Their pages have already been
+ * touched so this is all in-place and cannot fail.
+ */
+ {
+ MDB_val data;
+ data.mv_size = sizeof(MDB_db);
+
+ for (i = 2; i < env->me_numdbs; i++) {
+ if (env->me_dbs[env->me_db_toggle][i].md_root != txn->mt_dbs[i].md_root) {
+ data.mv_data = &txn->mt_dbs[i];
+ mdb_put(txn, i, &txn->mt_dbxs[i].md_name, &data, 0);
+ }
+ }
+ for (i = env->me_numdbs; i < txn->mt_numdbs; i++) {
+ data.mv_data = &txn->mt_dbs[i];
+ mdb_put(txn, i, &txn->mt_dbxs[i].md_name, &data, 0);
+ }
+ }