mirror of
https://gitflic.ru/project/erthink/libmdbx.git
synced 2025-02-23 15:55:44 +00:00
mdbx: проверяем выравнивание размера БД на юнит выделения памяти, а не на размер страницы.
Теоретически до этого коммита могла быть некоторая неувязка: - при открытии БД с размером страницы 4K на Windows (где размер секции кратен 64K) в режиме read-only, - после того как БД использовалась на POSIX (где размер отображения кратен размеру системной страницы). Ранее ошибка могла возвращаться со стороны системы (например INVALID_PARAMETER) и по ней крайне сложно было понять в чем дело. Теперь же будет логирование ошибки и возврат MDBX_WANNA_RECOVERY.
This commit is contained in:
parent
66c747e4a9
commit
9b31c517e6
@ -660,8 +660,9 @@ __cold int dxb_setup(MDBX_env *env, const int lck_rc, const mdbx_mode_t mode_bit
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (env->flags & MDBX_RDONLY) {
|
if (env->flags & MDBX_RDONLY) {
|
||||||
if (filesize_before & (globals.sys_pagesize - 1)) {
|
if (filesize_before & (globals.sys_allocation_granularity - 1)) {
|
||||||
ERROR("%s", "filesize should be rounded-up to system page");
|
ERROR("filesize should be rounded-up to system allocation granularity %u",
|
||||||
|
globals.sys_allocation_granularity);
|
||||||
return MDBX_WANNA_RECOVERY;
|
return MDBX_WANNA_RECOVERY;
|
||||||
}
|
}
|
||||||
WARNING("%s", "ignore filesize mismatch in readonly-mode");
|
WARNING("%s", "ignore filesize mismatch in readonly-mode");
|
||||||
|
Loading…
Reference in New Issue
Block a user