mirror of
https://github.com/isar/libmdbx.git
synced 2025-02-23 02:08:13 +08: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 (filesize_before & (globals.sys_pagesize - 1)) {
|
||||
ERROR("%s", "filesize should be rounded-up to system page");
|
||||
if (filesize_before & (globals.sys_allocation_granularity - 1)) {
|
||||
ERROR("filesize should be rounded-up to system allocation granularity %u",
|
||||
globals.sys_allocation_granularity);
|
||||
return MDBX_WANNA_RECOVERY;
|
||||
}
|
||||
WARNING("%s", "ignore filesize mismatch in readonly-mode");
|
||||
|
Loading…
x
Reference in New Issue
Block a user