From c9c0549b4fc5998562f897142727e18a5657410d Mon Sep 17 00:00:00 2001 From: Leo Yuriev Date: Wed, 13 Jan 2016 18:02:47 +0300 Subject: [PATCH] mdbx: fix madvise() flags. Change-Id: If0ed3cd972fbc0caea486656ae05526aa2022574 --- mdb.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/mdb.c b/mdb.c index e2214db9..62a2a8fb 100644 --- a/mdb.c +++ b/mdb.c @@ -4731,13 +4731,23 @@ mdb_env_setup_locks(MDB_env *env, char *lpath, int mode, int *excl) return errno; env->me_txns = m; - if (madvise(env->me_txns, rsize, MADV_DONTFORK | MADV_WILLNEED)) - return errno; +#ifdef MADV_NOHUGEPAGE + (void) madvise(env->me_txns, rsize, MADV_NOHUGEPAGE); +#endif #ifdef MADV_DODUMP - madvise(env->me_txns, rsize, MADV_DODUMP); + (void) madvise(env->me_txns, rsize, MADV_DODUMP); #endif + if (madvise(env->me_txns, rsize, MADV_DONTFORK) < 0) + return errno; + + if (madvise(env->me_txns, rsize, MADV_WILLNEED) < 0) + return errno; + + if (madvise(env->me_txns, rsize, MADV_RANDOM) < 0) + return errno; + if (*excl > 0) { pthread_mutexattr_t mattr;