From 9b31c517e65ebbd758f5cc810f563112ce268093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= Date: Thu, 20 Feb 2025 23:04:56 +0300 Subject: [PATCH] =?UTF-8?q?mdbx:=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=8F=D0=B5=D0=BC=20=D0=B2=D1=8B=D1=80=D0=B0=D0=B2=D0=BD=D0=B8?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=80=D0=B0=D0=B7=D0=BC=D0=B5?= =?UTF-8?q?=D1=80=D0=B0=20=D0=91=D0=94=20=D0=BD=D0=B0=20=D1=8E=D0=BD=D0=B8?= =?UTF-8?q?=D1=82=20=D0=B2=D1=8B=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=BF=D0=B0=D0=BC=D1=8F=D1=82=D0=B8,=20=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B5=20=D0=BD=D0=B0=20=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=80=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Теоретически до этого коммита могла быть некоторая неувязка: - при открытии БД с размером страницы 4K на Windows (где размер секции кратен 64K) в режиме read-only, - после того как БД использовалась на POSIX (где размер отображения кратен размеру системной страницы). Ранее ошибка могла возвращаться со стороны системы (например INVALID_PARAMETER) и по ней крайне сложно было понять в чем дело. Теперь же будет логирование ошибки и возврат MDBX_WANNA_RECOVERY. --- src/dxb.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/dxb.c b/src/dxb.c index fc453b1c..f55e4b76 100644 --- a/src/dxb.c +++ b/src/dxb.c @@ -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");