mirror of
https://github.com/isar/libmdbx.git
synced 2025-08-19 07:37:09 +08:00
mdbx: enabling older Linux kernels starting from 3.16
This commit is contained in:
@@ -208,10 +208,19 @@ __cold int mdbx_env_create(MDBX_env **penv) {
|
||||
}
|
||||
|
||||
#if defined(__linux__) || defined(__gnu_linux__)
|
||||
if (unlikely(globals.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", globals.linux_kernel_version >> 24,
|
||||
if (unlikely(globals.linux_kernel_version < 0x03100000)) {
|
||||
/* 2025-08-05: Ядро 3.16 выпущено 11 лет назад и было самым долго поддерживаемым из 3.x до июля 2020.
|
||||
* Три года назад (в 2022) здесь была заблокирована работа на ядрах меньше 4.x, как устаревших и для которых
|
||||
* крайне затруднительно обеспечить какое-либо тестирование. Теперь же я решил изменить решение и разрешить
|
||||
* работу на старых ядрах начиная с 3.16, логика тут такая:
|
||||
* - поведение старых ядер уже точно не будет меняться,
|
||||
* а в текущем коде libmdbx есть всё необходимое для работы начиная с 3.16;
|
||||
* - есть широко-используемые проекты (Isar), которым требуется поддержка старых ядер;
|
||||
* - сейчас тестирование для 4.x также затруднено, как и для 3.16, уже не приносит какого-либо облегчения
|
||||
* с тестированием и мне приходится полагаться на гарантии совместимости API ядра и glibc/musl;
|
||||
* - использование возможностей из новых ядер всё равно требует проверок/ветвлений;
|
||||
* = поэтому сейчас нет причин отказываться от работы на 3.16 поддерживая ядра 4.0 */
|
||||
ERROR("too old linux kernel %u.%u.%u.%u, the >= 3.16 is required", globals.linux_kernel_version >> 24,
|
||||
(globals.linux_kernel_version >> 16) & 255, (globals.linux_kernel_version >> 8) & 255,
|
||||
globals.linux_kernel_version & 255);
|
||||
return LOG_IFERR(MDBX_INCOMPATIBLE);
|
||||
|
Reference in New Issue
Block a user