summaryrefslogtreecommitdiff
path: root/libraries
diff options
context:
space:
mode:
authorHallvard Furuseth <hallvard@openldap.org>2016-09-06 17:41:02 +0200
committerHallvard Furuseth <hallvard@openldap.org>2016-09-25 08:12:56 +0200
commitcdcf9da600a5ffce71b8dba212c33b3e72bdbb8c (patch)
tree512c98c98628d88101384091cc341abedb71cfb2 /libraries
parent26e226b2a8cdba4208eabca394537900c4eda3b3 (diff)
downloadlmdb-cdcf9da600a5ffce71b8dba212c33b3e72bdbb8c.tar.gz
lmdb-cdcf9da600a5ffce71b8dba212c33b3e72bdbb8c.tar.bz2
lmdb-cdcf9da600a5ffce71b8dba212c33b3e72bdbb8c.zip
ITS#7682 F_NOCACHE: Allow error, skip any O_DIRECT
We can run without F_NOCACHE if it fails. And we do not know what combining it with O_DIRECT means, if a system has both.
Diffstat (limited to 'libraries')
-rw-r--r--libraries/liblmdb/mdb.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c
index b0518a5..ecfd5ca 100644
--- a/libraries/liblmdb/mdb.c
+++ b/libraries/liblmdb/mdb.c
@@ -10169,18 +10169,13 @@ mdb_env_copy2(MDB_env *env, const char *path, unsigned int flags)
}
if (env->me_psize >= env->me_os_psize) {
-#ifdef O_DIRECT
+#ifdef F_NOCACHE /* __APPLE__ */
+ (void) fcntl(newfd, F_NOCACHE, 1);
+#elif defined O_DIRECT
/* Set O_DIRECT if the file system supports it */
if ((rc = fcntl(newfd, F_GETFL)) != -1)
(void) fcntl(newfd, F_SETFL, rc | O_DIRECT);
#endif
-#ifdef F_NOCACHE /* __APPLE__ */
- rc = fcntl(newfd, F_NOCACHE, 1);
- if (rc) {
- rc = ErrCode();
- goto leave;
- }
-#endif
}
rc = mdb_env_copyfd2(env, newfd, flags);