mirror of
https://github.com/isar/libmdbx.git
synced 2024-10-30 11:29:19 +08:00
mdbx: require linux >= 4.0
This commit is contained in:
parent
cf8540d84e
commit
fe20de136c
11
src/core.c
11
src/core.c
@ -11499,6 +11499,17 @@ __cold int mdbx_env_create(MDBX_env **penv) {
|
|||||||
return MDBX_INCOMPATIBLE;
|
return MDBX_INCOMPATIBLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(__linux__) || defined(__gnu_linux__)
|
||||||
|
if (unlikely(linux_kernel_version < 0x04000000)) {
|
||||||
|
/* 2022-09-01: Прошло уже больше двух после окончания какой-либо поддержки
|
||||||
|
* самого "долгоиграющего" ядра 3.16.85 ветки 3.x */
|
||||||
|
ERROR("too old linux kernel %u.%u.%u.%u, the >= 4.0.0 is required",
|
||||||
|
linux_kernel_version >> 24, (linux_kernel_version >> 16) & 255,
|
||||||
|
(linux_kernel_version >> 8) & 255, linux_kernel_version & 255);
|
||||||
|
return MDBX_INCOMPATIBLE;
|
||||||
|
}
|
||||||
|
#endif /* Linux */
|
||||||
|
|
||||||
MDBX_env *env = osal_calloc(1, sizeof(MDBX_env));
|
MDBX_env *env = osal_calloc(1, sizeof(MDBX_env));
|
||||||
if (unlikely(!env))
|
if (unlikely(!env))
|
||||||
return MDBX_ENOMEM;
|
return MDBX_ENOMEM;
|
||||||
|
13
src/osal.c
13
src/osal.c
@ -937,9 +937,8 @@ MDBX_INTERNAL_FUNC int osal_fsync(mdbx_filehandle_t fd,
|
|||||||
break /* error */;
|
break /* error */;
|
||||||
#if defined(__linux__) || defined(__gnu_linux__)
|
#if defined(__linux__) || defined(__gnu_linux__)
|
||||||
case MDBX_SYNC_SIZE:
|
case MDBX_SYNC_SIZE:
|
||||||
if (linux_kernel_version >= 0x03060000)
|
assert(linux_kernel_version >= 0x03060000);
|
||||||
return MDBX_SUCCESS;
|
return MDBX_SUCCESS;
|
||||||
__fallthrough /* fall through */;
|
|
||||||
#endif /* Linux */
|
#endif /* Linux */
|
||||||
#endif /* _POSIX_SYNCHRONIZED_IO > 0 */
|
#endif /* _POSIX_SYNCHRONIZED_IO > 0 */
|
||||||
default:
|
default:
|
||||||
@ -1076,10 +1075,10 @@ MDBX_INTERNAL_FUNC int osal_msync(osal_mmap_t *map, size_t offset,
|
|||||||
return (int)GetLastError();
|
return (int)GetLastError();
|
||||||
#else
|
#else
|
||||||
#if defined(__linux__) || defined(__gnu_linux__)
|
#if defined(__linux__) || defined(__gnu_linux__)
|
||||||
if (mode_bits == MDBX_SYNC_NONE && linux_kernel_version > 0x02061300)
|
assert(linux_kernel_version > 0x02061300);
|
||||||
/* Since Linux 2.6.19, MS_ASYNC is in fact a no-op. The kernel properly
|
/* Since Linux 2.6.19, MS_ASYNC is in fact a no-op. The kernel properly
|
||||||
* tracks dirty pages and flushes them to storage as necessary. */
|
* tracks dirty pages and flushes them to storage as necessary. */
|
||||||
return MDBX_SUCCESS;
|
return MDBX_SUCCESS;
|
||||||
#endif /* Linux */
|
#endif /* Linux */
|
||||||
if (msync(ptr, length, (mode_bits & MDBX_SYNC_DATA) ? MS_SYNC : MS_ASYNC))
|
if (msync(ptr, length, (mode_bits & MDBX_SYNC_DATA) ? MS_SYNC : MS_ASYNC))
|
||||||
return errno;
|
return errno;
|
||||||
|
Loading…
Reference in New Issue
Block a user