mirror of
https://github.com/isar/libmdbx.git
synced 2025-02-01 09:08:21 +08:00
mdbx: add MDBX_OSX_SPEED_OR_DURABILITY build-time #define for MacOS.
This commit is contained in:
parent
ccbf3a2bcf
commit
657d37c9e3
@ -23,6 +23,12 @@
|
||||
# undef NDEBUG
|
||||
#endif
|
||||
|
||||
#define MDBX_OSX_WANNA_DURABILITY 0 /* using fcntl(F_FULLFSYNC) with 5-10 times slowdown */
|
||||
#define MDBX_OSX_WANNA_SPEED 1 /* using fsync() with chance of data lost on power failure */
|
||||
#ifndef MDBX_OSX_SPEED_OR_DURABILITY
|
||||
#define MDBX_OSX_SPEED_OR_DURABILITY MDBX_OSX_WANNA_DURABILITY
|
||||
#endif
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
/* Should be defined before any includes */
|
||||
|
11
src/osal.c
11
src/osal.c
@ -668,7 +668,8 @@ int mdbx_filesync(mdbx_filehandle_t fd, enum mdbx_syncmode_bits mode_bits) {
|
||||
: GetLastError();
|
||||
#else
|
||||
|
||||
#ifdef __APPLE__
|
||||
#if defined(__APPLE__) && \
|
||||
MDBX_OSX_SPEED_OR_DURABILITY == MDBX_OSX_WANNA_DURABILITY
|
||||
if (mode_bits & MDBX_SYNC_IODQ)
|
||||
return likely(fcntl(fd, F_FULLFSYNC) != -1) ? MDBX_SUCCESS : errno;
|
||||
#endif /* MacOS */
|
||||
@ -788,7 +789,13 @@ int mdbx_msync(mdbx_mmap_t *map, size_t offset, size_t length, int async) {
|
||||
return GetLastError();
|
||||
#else
|
||||
const int mode = async ? MS_ASYNC : MS_SYNC;
|
||||
return (msync(ptr, length, mode) == 0) ? MDBX_SUCCESS : errno;
|
||||
int rc = (msync(ptr, length, mode) == 0) ? MDBX_SUCCESS : errno;
|
||||
#if defined(__APPLE__) && \
|
||||
MDBX_OSX_SPEED_OR_DURABILITY == MDBX_OSX_WANNA_DURABILITY
|
||||
if (rc == MDBX_SUCCESS && mode == MS_SYNC)
|
||||
rc = likely(fcntl(map->fd, F_FULLFSYNC) != -1) ? MDBX_SUCCESS : errno;
|
||||
#endif /* MacOS */
|
||||
return rc;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user