Compare commits

..

8 Commits

Author SHA1 Message Date
Леонид Юрьев (Leonid Yuriev)
82a1c2d893 mdbx: update ChangeLog. 2025-11-10 22:05:01 +03:00
Leonid Yuriev
4899b155e3 mdbx: fix tls-dtor in case library unloading with an incomplete initialized env instance (backport). 2025-11-10 21:57:17 +03:00
Леонид Юрьев (Leonid Yuriev)
8cab3a522a mdbx: add workaround for ext4 fast-commit bug (backport). 2025-11-08 09:43:50 +03:00
Леонид Юрьев (Leonid Yuriev)
5e43fe33c1 mdbx-test: minor fix jitter test internals (backport). 2025-11-08 09:43:22 +03:00
Леонид Юрьев (Leonid Yuriev)
60ad6cf030 mdbx: update ChangeLog. 2025-10-31 23:44:07 +03:00
Леонид Юрьев (Leonid Yuriev)
4c20a61363 mdbx: workaroud/fix for unused function 'osal_yield' from modern clang. 2025-10-31 19:03:09 +03:00
Леонид Юрьев (Leonid Yuriev)
11052d8af0 mdbx: fix minor typos in the ChangeLog. 2025-10-31 17:29:53 +03:00
Леонид Юрьев (Leonid Yuriev)
cad99d7a09 mdbx: patch update for older versions of buildroot (backport). 2025-10-31 17:29:35 +03:00
6 changed files with 80 additions and 153 deletions

View File

@@ -10,6 +10,26 @@ Donations are welcome to ETH `0xD104d8f8B2dC312aaD74899F83EBf3EEBDC1EA3A`.
Всё будет хорошо! Всё будет хорошо!
## v0.13.10 в процессе накопления изменений
Поддерживающий выпуск стабильной ветки с исправлением обнаруженных ошибок и устранением недочётов.
Благодарности:
- [Erigon](https://erigon.tech/) за спонсорство.
Исправления:
- Устранение предупреждения "unused function 'osal_yield()'" от новых версий CLANG при сборке амальгамированного исходного кода и при компиляции в режиме одного объектного модуля.
- Для Linux добавлено предотвращение проявления ошибки в реализации fast_commit файловой системы Ext4.
- Устранено падение при выполнении Thread-Local-Storage конструкторов при выгрузке библиотеки и наличия экземпляров env, инициализация которых не была завершена.
--------------------------------------------------------------------------------
## v0.13.9 "ИС-2" (IS-2) от 2025-10-31 ## v0.13.9 "ИС-2" (IS-2) от 2025-10-31
Поддерживающий выпуск стабильной ветки с исправлением обнаруженных ошибок и устранением недочётов. Поддерживающий выпуск стабильной ветки с исправлением обнаруженных ошибок и устранением недочётов.
@@ -22,7 +42,7 @@ Donations are welcome to ETH `0xD104d8f8B2dC312aaD74899F83EBf3EEBDC1EA3A`.
Исправления: Исправления:
- Исправлена assert-проверка в пути сканирования битовой карты DBI-дексрипторов приводившая к редким падениям 32-битных отладочных сборок. - Исправлена assert-проверка в пути сканирования битовой карты DBI-дескрипторов приводившая к редким падениям 32-битных отладочных сборок.
- Переделан поиск утилит `lib.exe` и `dlltool.exe` при сборке посредством CMake на Windows. - Переделан поиск утилит `lib.exe` и `dlltool.exe` при сборке посредством CMake на Windows.
@@ -34,7 +54,7 @@ Donations are welcome to ETH `0xD104d8f8B2dC312aaD74899F83EBf3EEBDC1EA3A`.
- Удалено лишнее/ненужное использование макроса `MDBX_INTERNAL` оставшееся после рефакторинга. - Удалено лишнее/ненужное использование макроса `MDBX_INTERNAL` оставшееся после рефакторинга.
- Для Android добавлен обход (workaround) для уменьшения вероятности системной ошибки `EAGAIN` возникающей - Для Android добавлен обход (workaround) для уменьшения вероятности системной ошибки `EAGAIN` возникающей
из-за нехватки системных ресурсов и переходных процессов при закрытии и быстром повтороном открытии БД. из-за нехватки системных ресурсов и переходных процессов при закрытии и быстром повторном открытии БД.
Прочие доработки: Прочие доработки:

View File

@@ -1,13 +1,13 @@
From f2f1f6e76c1538d044b552d9e7ecedc3433e6cd9 Mon Sep 17 00:00:00 2001 From b2f1297dd2cd42cc0e04f1900fbf6da6c2694b7b 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?= 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?= <leo@yuriev.ru> =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= <leo@yuriev.ru>
Date: Sun, 3 Aug 2025 23:59:11 +0300 Date: Fri, 31 Oct 2025 16:58:31 +0300
Subject: [PATCH] package/libmdbx: new package (library/database). Subject: [PATCH] package/libmdbx: new package (library/database).
MIME-Version: 1.0 MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8 Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit Content-Transfer-Encoding: 8bit
This patch adds libmdbx: This patch adds libmdbx 0.13.9:
- libmdbx is one of the fastest compact embeddable key-value ACID database. - libmdbx is one of the fastest compact embeddable key-value ACID database.
- libmdbx has a specific set of properties and capabilities, - libmdbx has a specific set of properties and capabilities,
focused on creating unique lightweight solutions. focused on creating unique lightweight solutions.
@@ -15,158 +15,55 @@ This patch adds libmdbx:
in terms of reliability, features and performance. in terms of reliability, features and performance.
- more information at https://libmdbx.dqdkfa.ru - more information at https://libmdbx.dqdkfa.ru
The 0.13.7 "Дружба" (Friendship) is stable release of _libmdbx_ branch with new superior features. The 0.13.9 "ИС-2" (IS-2) is bugfix release of the stable branch.
For more information please see [ChangeLog](https://github.com/erthink/libmdbx/blob/stable/ChangeLog.md).
The complete ChangeLog: https://gitflic.ru/project/erthink/libmdbx/blob?file=ChangeLog.md
Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru> Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru>
--- ---
DEVELOPERS | 3 +++ package/libmdbx/Config.in | 4 +++-
package/Config.in | 1 + package/libmdbx/libmdbx.hash | 2 +-
package/libmdbx/Config.in | 45 ++++++++++++++++++++++++++++++++++++ package/libmdbx/libmdbx.mk | 2 +-
package/libmdbx/libmdbx.hash | 6 +++++ 3 files changed, 5 insertions(+), 3 deletions(-)
package/libmdbx/libmdbx.mk | 41 ++++++++++++++++++++++++++++++++
5 files changed, 96 insertions(+)
create mode 100644 package/libmdbx/Config.in
create mode 100644 package/libmdbx/libmdbx.hash
create mode 100644 package/libmdbx/libmdbx.mk
diff --git a/DEVELOPERS b/DEVELOPERS
index 9ab1e125f4..758ff6a2d5 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1482,6 +1482,9 @@ N: Leon Anavi <leon.anavi@konsulko.com>
F: board/olimex/a10_olinuxino
F: configs/olimex_a10_olinuxino_lime_defconfig
+N: Leonid Yuriev <leo@yuriev.ru>
+F: package/libmdbx/
+
N: Lionel Flandrin <lionel@svkt.org>
F: package/python-babel/
F: package/python-daemonize/
diff --git a/package/Config.in b/package/Config.in
index 016a99ed1a..a6f95bfaa9 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1372,6 +1372,7 @@ menu "Database"
source "package/kompexsqlite/Config.in"
source "package/leveldb/Config.in"
source "package/libgit2/Config.in"
+ source "package/libmdbx/Config.in"
source "package/libodb/Config.in"
source "package/libodb-boost/Config.in"
source "package/libodb-mysql/Config.in"
diff --git a/package/libmdbx/Config.in b/package/libmdbx/Config.in diff --git a/package/libmdbx/Config.in b/package/libmdbx/Config.in
new file mode 100644 index a9a4ac45c5..1640dbd9de 100644
index 0000000000..a9a4ac45c5 --- a/package/libmdbx/Config.in
--- /dev/null
+++ b/package/libmdbx/Config.in +++ b/package/libmdbx/Config.in
@@ -0,0 +1,45 @@ @@ -11,7 +11,9 @@ config BR2_PACKAGE_LIBMDBX
+config BR2_PACKAGE_LIBMDBX solutions.
+ bool "libmdbx"
+ depends on BR2_USE_MMU libmdbx surpasses the legendary LMDB in terms of
+ depends on BR2_TOOLCHAIN_HAS_SYNC_4 - reliability, features and performance.
+ depends on BR2_TOOLCHAIN_HAS_THREADS + reliability, features and performance. At the end of 2024
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 + libmdbx was chosen by all modern Ethereum frontiers/nodes
+ help + as a storage engine.
+ One of the fastest compact key-value ACID database
+ without WAL. libmdbx has a specific set of properties https://libmdbx.dqdkfa.ru
+ and capabilities, focused on creating unique lightweight
+ solutions.
+
+ libmdbx surpasses the legendary LMDB in terms of
+ reliability, features and performance.
+
+ https://libmdbx.dqdkfa.ru
+
+if BR2_PACKAGE_LIBMDBX
+
+config BR2_PACKAGE_LIBMDBX_TOOLS
+ bool "install tools"
+ help
+ Install libmdbx tools for checking, dump, restore
+ and show statistics of databases.
+
+config BR2_PACKAGE_LIBMDBX_CXX
+ bool "C++ API"
+ depends on BR2_INSTALL_LIBSTDCPP
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+ depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735
+ help
+ Enable modern C++11/14/17/20 API for libmdbx.
+
+comment "libmdbx C++ support needs a toolchain w/ C++11, gcc >= 4.8 w/o bug#64735"
+ depends on !BR2_INSTALL_LIBSTDCPP || \
+ !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \
+ BR2_TOOLCHAIN_HAS_GCC_BUG_64735
+
+endif
+
+comment "libmdbx needs MMU, a toolchain w/ threads, gcc >= 4.4 w/ 4-byte atomics"
+ depends on BR2_USE_MMU
+ depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+ !BR2_TOOLCHAIN_HAS_SYNC_4 || \
+ !BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
diff --git a/package/libmdbx/libmdbx.hash b/package/libmdbx/libmdbx.hash diff --git a/package/libmdbx/libmdbx.hash b/package/libmdbx/libmdbx.hash
new file mode 100644 index ae5266716b..4a4f302015 100644
index 0000000000..8c7efb184b --- a/package/libmdbx/libmdbx.hash
--- /dev/null
+++ b/package/libmdbx/libmdbx.hash +++ b/package/libmdbx/libmdbx.hash
@@ -0,0 +1,6 @@ @@ -1,5 +1,5 @@
+# Hashes from: https://libmdbx.dqdkfa.ru/release/SHA256SUMS # Hashes from: https://libmdbx.dqdkfa.ru/release/SHA256SUMS
+sha256 d00c1287ec6bbc366363ccdd3eea97bd470ccb5cc102d56b341f84a9fba7e8e9 libmdbx-amalgamated-0.13.7.tar.xz -sha256 57db987de6f7ccc66a66ae28a7bda9f9fbb48ac5fb9279bcca92fd5de13075d1 libmdbx-amalgamated-0.13.6.tar.xz
+ +sha256 63d2608c8f7c23185c0d27d817d42dd720e84973224ffc584c7f7b522f5f06fe libmdbx-amalgamated-0.13.9.tar.xz
+# Locally calculated
+sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 LICENSE # Locally calculated
+sha256 651f71b46c6bb0046d2122df7f9def9cb24f4dc28c5b11cef059f66565cda30f NOTICE sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 LICENSE
diff --git a/package/libmdbx/libmdbx.mk b/package/libmdbx/libmdbx.mk diff --git a/package/libmdbx/libmdbx.mk b/package/libmdbx/libmdbx.mk
new file mode 100644 index f461d98397..62817a98f8 100644
index 0000000000..bbb37f21a6 --- a/package/libmdbx/libmdbx.mk
--- /dev/null
+++ b/package/libmdbx/libmdbx.mk +++ b/package/libmdbx/libmdbx.mk
@@ -0,0 +1,41 @@ @@ -4,7 +4,7 @@
+################################################################################ #
+# ################################################################################
+# libmdbx
+# -LIBMDBX_VERSION = 0.13.6
+################################################################################ +LIBMDBX_VERSION = 0.13.9
+ LIBMDBX_SOURCE = libmdbx-amalgamated-$(LIBMDBX_VERSION).tar.xz
+LIBMDBX_VERSION = 0.13.7 LIBMDBX_SITE = https://libmdbx.dqdkfa.ru/release
+LIBMDBX_SOURCE = libmdbx-amalgamated-$(LIBMDBX_VERSION).tar.xz LIBMDBX_SUPPORTS_IN_SOURCE_BUILD = NO
+LIBMDBX_SITE = https://libmdbx.dqdkfa.ru/release
+LIBMDBX_SUPPORTS_IN_SOURCE_BUILD = NO
+LIBMDBX_LICENSE = Apache-2.0
+LIBMDBX_LICENSE_FILES = LICENSE NOTICE
+LIBMDBX_STRIP_COMPONENTS = 0
+LIBMDBX_INSTALL_STAGING = YES
+
+# Set CMAKE_BUILD_TYPE to Release to remove -Werror and avoid a build failure
+# with glibc < 2.12
+LIBMDBX_CONF_OPTS = \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DMDBX_INSTALL_MANPAGES=OFF \
+ -DBUILD_FOR_NATIVE_CPU=OFF \
+ -DMDBX_BUILD_CXX=$(if $(BR2_PACKAGE_LIBMDBX_CXX),ON,OFF) \
+ -DMDBX_BUILD_TOOLS=$(if $(BR2_PACKAGE_LIBMDBX_TOOLS),ON,OFF)
+
+ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y)
+LIBMDBX_CONF_OPTS += -DMDBX_INSTALL_STATIC=ON
+else
+LIBMDBX_CONF_OPTS += -DMDBX_INSTALL_STATIC=OFF
+endif
+
+ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y)
+LIBMDBX_CONF_OPTS += \
+ -DMDBX_BUILD_SHARED_LIBRARY=ON \
+ -DMDBX_LINK_TOOLS_NONSTATIC=ON
+else
+LIBMDBX_CONF_OPTS += \
+ -DMDBX_BUILD_SHARED_LIBRARY=OFF \
+ -DMDBX_LINK_TOOLS_NONSTATIC=OFF
+endif
+
+$(eval $(cmake-package))
-- --
2.50.1 2.51.2

View File

@@ -1646,6 +1646,16 @@ int osal_fsetsize(mdbx_filehandle_t fd, const uint64_t length) {
return MDBX_SUCCESS; return MDBX_SUCCESS;
#endif #endif
#if defined(__linux__) || defined(__gnu_linux__)
if (globals.linux_kernel_version < 0x05110000 && globals.linux_kernel_version >= 0x050a0000) {
struct statfs statfs_info;
if (fstatfs(fd, &statfs_info))
return errno;
if (statfs_info.f_type == 0xEF53 /* EXT4_SUPER_MAGIC */ && unlikely(fdatasync(fd)))
return errno;
}
#endif /* Linux */
return unlikely(ftruncate(fd, length)) ? errno : MDBX_SUCCESS; return unlikely(ftruncate(fd, length)) ? errno : MDBX_SUCCESS;
#endif /* !Windows */ #endif /* !Windows */

View File

@@ -171,7 +171,7 @@ typedef char pathchar_t;
#define MDBX_PRIsPATH "s" #define MDBX_PRIsPATH "s"
#endif #endif
static inline bool osal_yield(void) { MDBX_MAYBE_UNUSED static inline bool osal_yield(void) {
#if defined(_WIN32) || defined(_WIN64) #if defined(_WIN32) || defined(_WIN64)
return SleepEx(0, true) == WAIT_IO_COMPLETION; return SleepEx(0, true) == WAIT_IO_COMPLETION;
#else #else

View File

@@ -513,7 +513,9 @@ __cold void rthc_dtor(const uint32_t current_pid) {
MDBX_env *const env = rthc_table[i].env; MDBX_env *const env = rthc_table[i].env;
if (env->pid != current_pid) if (env->pid != current_pid)
continue; continue;
if (!(env->flags & ENV_TXKEY)) if (!env->lck_mmap.lck || env->lck_mmap.base == MAP_FAILED)
continue;
if (!(env->flags & ENV_TXKEY) || !env->lck_mmap.lck)
continue; continue;
env->flags -= ENV_TXKEY; env->flags -= ENV_TXKEY;
reader_slot_t *const begin = &env->lck_mmap.lck->rdt[0]; reader_slot_t *const begin = &env->lck_mmap.lck->rdt[0];

View File

@@ -22,9 +22,7 @@ void testcase_jitter::check_dbi_error(int expect, const char *stage) {
bool testcase_jitter::run() { bool testcase_jitter::run() {
int err; int err;
size_t upper_limit = config.params.size_upper; size_t upper_limit = (config.params.size_upper < 1) ? config.params.size_now * 2 : config.params.size_upper;
if (upper_limit < 1)
upper_limit = config.params.size_now * 2;
tablename_buf buffer; tablename_buf buffer;
const char *const tablename = db_tablename(buffer); const char *const tablename = db_tablename(buffer);