]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#10296 lmdb: fix fdatasync on MacOS
authorkero <renault.cle@gmail.com>
Thu, 9 Jan 2025 14:56:00 +0000 (14:56 +0000)
committerHoward Chu <hyc@openldap.org>
Tue, 28 Jan 2025 17:28:15 +0000 (17:28 +0000)
Patch from kero, with corrections by hyc

libraries/liblmdb/mdb.c

index 668f9660f26fa6f35a2f9c424bde4c2138af165c..25307144eddc2c5884f7853508cbcc13d00a40fa 100644 (file)
@@ -128,7 +128,11 @@ typedef SSIZE_T    ssize_t;
 # define MDB_USE_ROBUST        1
 #elif defined(__APPLE__) || defined (BSD) || defined(__FreeBSD_kernel__)
 # define MDB_USE_POSIX_SEM     1
-# define MDB_FDATASYNC         fsync
+# if defined(__APPLE__)
+#  define MDB_FDATASYNC                fcntl(fd, F_FULLSYNC)
+# else
+#  define MDB_FDATASYNC                fsync
+# endif
 #elif defined(ANDROID)
 # define MDB_FDATASYNC         fsync
 #endif
@@ -2573,7 +2577,7 @@ mdb_env_sync(MDB_env *env, int force)
                                ? MS_ASYNC : MS_SYNC;
                        if (MDB_MSYNC(env->me_map, env->me_mapsize, flags))
                                rc = ErrCode();
-#ifdef _WIN32
+#if defined(_WIN32) || defined(__APPLE__)
                        else if (flags == MS_SYNC && MDB_FDATASYNC(env->me_fd))
                                rc = ErrCode();
 #endif