diff --git a/libraries/libmdb/mdb.c b/libraries/libmdb/mdb.c
index 320b1eabd8e573a44108c18f3e2c74f17aaf27af..fd7f7fa1952b103ddea80b69cc02b93fafd2d298 100644
--- a/libraries/libmdb/mdb.c
+++ b/libraries/libmdb/mdb.c
@@ -200,6 +200,13 @@
 #ifndef MDB_DSYNC
 # define MDB_DSYNC	O_DSYNC
 #endif
+#endif
+
+/** Function for flushing the data of a file. Define this to fsync
+ *	if fdatasync() is not supported.
+ */
+#ifndef MDB_FDATASYNC
+# define MDB_FDATASYNC	fdatasync
 #endif
 
 	/** A page number in the database.
@@ -1283,7 +1290,7 @@ mdb_env_sync(MDB_env *env, int force)
 {
 	int rc = 0;
 	if (force || !F_ISSET(env->me_flags, MDB_NOSYNC)) {
-		if (fdatasync(env->me_fd))
+		if (MDB_FDATASYNC(env->me_fd))
 			rc = ErrCode();
 	}
 	return rc;