Simpler mdb_env_write_meta()

mdb.RE/0.9
Hallvard Furuseth 9 years ago
parent bde5c231bc
commit de5b689308
  1. 19
      libraries/liblmdb/mdb.c

@ -3694,15 +3694,12 @@ mdb_env_write_meta(MDB_txn *txn)
if (!(flags & (MDB_NOMETASYNC|MDB_NOSYNC))) {
unsigned meta_size = env->me_psize;
rc = (env->me_flags & MDB_MAPASYNC) ? MS_ASYNC : MS_SYNC;
ptr = env->me_map;
if (toggle) {
ptr = (char *)mp - PAGEHDRSZ;
#ifndef _WIN32 /* POSIX msync() requires ptr = start of OS page */
if (meta_size < env->me_os_psize)
meta_size += meta_size;
else
r2 = (ptr - env->me_map) & (env->me_os_psize - 1);
ptr -= r2;
meta_size += r2;
#endif
ptr += meta_size;
}
if (MDB_MSYNC(ptr, meta_size, rc)) {
rc = ErrCode();
goto fail;
@ -3710,8 +3707,8 @@ mdb_env_write_meta(MDB_txn *txn)
}
goto done;
}
metab.mm_txnid = env->me_metas[toggle]->mm_txnid;
metab.mm_last_pg = env->me_metas[toggle]->mm_last_pg;
metab.mm_txnid = mp->mm_txnid;
metab.mm_last_pg = mp->mm_last_pg;
meta.mm_mapsize = mapsize;
meta.mm_dbs[FREE_DBI] = txn->mt_dbs[FREE_DBI];
@ -3722,9 +3719,7 @@ mdb_env_write_meta(MDB_txn *txn)
off = offsetof(MDB_meta, mm_mapsize);
ptr = (char *)&meta + off;
len = sizeof(MDB_meta) - off;
if (toggle)
off += env->me_psize;
off += PAGEHDRSZ;
off += (char *)mp - env->me_map;
/* Write to the SYNC fd */
mfd = (flags & (MDB_NOSYNC|MDB_NOMETASYNC)) ? env->me_fd : env->me_mfd;

Loading…
Cancel
Save