Commit 9e5d759a authored by Quanah Gibson-Mount's avatar Quanah Gibson-Mount
Browse files

Merge remote-tracking branch 'origin/mdb.RE/0.9' into OPENLDAP_REL_ENG_2_4

parents 564f8d18 f681a076
LMDB 0.9 Change Log LMDB 0.9 Change Log
LMDB 0.9.26 Engineering
LMDB 0.9.25 Release (2020/01/30) LMDB 0.9.25 Release (2020/01/30)
ITS#9068 fix mdb_dump/load backslashes in printable content ITS#9068 fix mdb_dump/load backslashes in printable content
ITS#9118 add MAP_NOSYNC for FreeBSD ITS#9118 add MAP_NOSYNC for FreeBSD
......
...@@ -124,7 +124,10 @@ typedef SSIZE_T ssize_t; ...@@ -124,7 +124,10 @@ typedef SSIZE_T ssize_t;
#include <resolv.h> /* defines BYTE_ORDER on HPUX and Solaris */ #include <resolv.h> /* defines BYTE_ORDER on HPUX and Solaris */
#endif #endif
#if defined(__APPLE__) || defined (BSD) || defined(__FreeBSD_kernel__) #if defined(__FreeBSD__) && defined(__FreeBSD_version) && __FreeBSD_version >= 1100110
# define MDB_USE_POSIX_MUTEX 1
# define MDB_USE_ROBUST 1
#elif defined(__APPLE__) || defined (BSD) || defined(__FreeBSD_kernel__)
# define MDB_USE_POSIX_SEM 1 # define MDB_USE_POSIX_SEM 1
# define MDB_FDATASYNC fsync # define MDB_FDATASYNC fsync
#elif defined(ANDROID) #elif defined(ANDROID)
...@@ -1375,7 +1378,7 @@ static int mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, ...@@ -1375,7 +1378,7 @@ static int mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata,
static int mdb_env_read_header(MDB_env *env, MDB_meta *meta); static int mdb_env_read_header(MDB_env *env, MDB_meta *meta);
static MDB_meta *mdb_env_pick_meta(const MDB_env *env); static MDB_meta *mdb_env_pick_meta(const MDB_env *env);
static int mdb_env_write_meta(MDB_txn *txn); static int mdb_env_write_meta(MDB_txn *txn);
#ifdef MDB_USE_POSIX_MUTEX /* Drop unused excl arg */ #if defined(MDB_USE_POSIX_MUTEX) && !defined(MDB_ROBUST_SUPPORTED) /* Drop unused excl arg */
# define mdb_env_close0(env, excl) mdb_env_close1(env) # define mdb_env_close0(env, excl) mdb_env_close1(env)
#endif #endif
static void mdb_env_close0(MDB_env *env, int excl); static void mdb_env_close0(MDB_env *env, int excl);
...@@ -5133,6 +5136,17 @@ mdb_env_close0(MDB_env *env, int excl) ...@@ -5133,6 +5136,17 @@ mdb_env_close0(MDB_env *env, int excl)
sem_unlink(env->me_txns->mti_wmname); sem_unlink(env->me_txns->mti_wmname);
} }
} }
#elif defined(MDB_ROBUST_SUPPORTED)
/* If we have the filelock: If we are the
* only remaining user, clean up robust
* mutexes.
*/
if (excl == 0)
mdb_env_excl_lock(env, &excl);
if (excl > 0) {
pthread_mutex_destroy(env->me_txns->mti_rmutex);
pthread_mutex_destroy(env->me_txns->mti_wmutex);
}
#endif #endif
munmap((void *)env->me_txns, (env->me_maxreaders-1)*sizeof(MDB_reader)+sizeof(MDB_txninfo)); munmap((void *)env->me_txns, (env->me_maxreaders-1)*sizeof(MDB_reader)+sizeof(MDB_txninfo));
} }
...@@ -6785,7 +6799,7 @@ more: ...@@ -6785,7 +6799,7 @@ more:
offset *= 4; /* space for 4 more */ offset *= 4; /* space for 4 more */
break; break;
} }
/* FALLTHRU: Big enough MDB_DUPFIXED sub-page */ /* FALLTHRU */ /* Big enough MDB_DUPFIXED sub-page */
case MDB_CURRENT: case MDB_CURRENT:
fp->mp_flags |= P_DIRTY; fp->mp_flags |= P_DIRTY;
COPY_PGNO(fp->mp_pgno, mp->mp_pgno); COPY_PGNO(fp->mp_pgno, mp->mp_pgno);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment