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.
mdb.RE/0.9
Hallvard Furuseth 8 years ago
parent 56b81e6d57
commit 9036e261c4
  1. 11
      libraries/liblmdb/mdb.c

@ -9394,17 +9394,12 @@ mdb_env_copy2(MDB_env *env, const char *path, unsigned int flags)
} }
if (env->me_psize >= env->me_os_psize) { 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 */ /* Set O_DIRECT if the file system supports it */
if ((rc = fcntl(newfd, F_GETFL)) != -1) if ((rc = fcntl(newfd, F_GETFL)) != -1)
(void) fcntl(newfd, F_SETFL, rc | O_DIRECT); (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 #endif
} }

Loading…
Cancel
Save