]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9118 add MAP_NOSYNC for FreeBSD
authorHoward Chu <hyc@openldap.org>
Thu, 21 Nov 2019 20:44:37 +0000 (20:44 +0000)
committerHoward Chu <hyc@openldap.org>
Thu, 21 Nov 2019 20:44:37 +0000 (20:44 +0000)
libraries/liblmdb/mdb.c

index 692feaa38b24b22c84d28992251ae637619b34d7..67a739a5be47ae132b259a52a61f2eb36affd1d6 100644 (file)
@@ -4010,13 +4010,18 @@ mdb_env_map(MDB_env *env, void *addr)
        if (rc)
                return rc;
 #else
+       int mmap_flags = MAP_SHARED:
        int prot = PROT_READ;
+#ifdef MAP_NOSYNC      /* Used on FreeBSD */
+       if (flags & MDB_NOSYNC)
+               mmap_flags |= MAP_NOSYNC;
+#endif
        if (flags & MDB_WRITEMAP) {
                prot |= PROT_WRITE;
                if (ftruncate(env->me_fd, env->me_mapsize) < 0)
                        return ErrCode();
        }
-       env->me_map = mmap(addr, env->me_mapsize, prot, MAP_SHARED,
+       env->me_map = mmap(addr, env->me_mapsize, prot, mmap_flags,
                env->me_fd, 0);
        if (env->me_map == MAP_FAILED) {
                env->me_map = NULL;