ITS#7789 Fix resize vs MDB_NOMETASYNC, and a comment.

robust
Hallvard Furuseth 11 years ago committed by Hallvard Furuseth
parent bda6a60ad4
commit 02285aca58
  1. 2
      libraries/liblmdb/lmdb.h
  2. 8
      libraries/liblmdb/mdb.c

@ -411,7 +411,7 @@ typedef enum MDB_cursor_op {
#define MDB_CURSOR_FULL (-30787)
/** Page has not enough space - internal error */
#define MDB_PAGE_FULL (-30786)
/** Database contents grew beyond environment mapsize */
/** Environment mapsize was changed by another process */
#define MDB_MAP_RESIZED (-30785)
/** MDB_INCOMPATIBLE: Operation and DB incompatible, or DB flags changed */
#define MDB_INCOMPATIBLE (-30784)

@ -3323,7 +3323,6 @@ mdb_txn_commit(MDB_txn *txn)
#endif
if ((rc = mdb_page_flush(txn, 0)) ||
(rc = mdb_env_sync(env, 0)) ||
(rc = mdb_env_write_meta(txn)))
goto fail;
@ -3480,7 +3479,7 @@ mdb_env_init_meta(MDB_env *env, MDB_meta *meta)
static int
mdb_env_write_meta(MDB_txn *txn)
{
MDB_env *env;
MDB_env *env = txn->mt_env;
MDB_meta meta, metab, *mp;
off_t off;
int rc, len, toggle;
@ -3492,11 +3491,14 @@ mdb_env_write_meta(MDB_txn *txn)
int r2;
#endif
/* Sync data and previous metapage before writing a new metapage */
if ((rc = mdb_env_sync(env, 0)) != MDB_SUCCESS)
return rc;
toggle = txn->mt_txnid & 1;
DPRINTF(("writing meta page %d for root page %"Z"u",
toggle, txn->mt_dbs[MAIN_DBI].md_root));
env = txn->mt_env;
mp = env->me_metas[toggle];
if (env->me_flags & MDB_WRITEMAP) {

Loading…
Cancel
Save