diff --git a/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx.c b/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx.c index e2ad816c698d..b77b223272e1 100644 --- a/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx.c +++ b/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx.c @@ -12,7 +12,7 @@ * . */ #define xMDBX_ALLOY 1 -#define MDBX_BUILD_SOURCERY cd9d526652f8327384fdca9e5942a61289a5580c33de34f8fd0773fc2835ff49_v0_12_9_50_g4f770999 +#define MDBX_BUILD_SOURCERY cd9d526652f8327384fdca9e5942a61289a5580c33de34f8fd0773fc2835ff49_v0_12_9_50_g4f770999_dirty #ifdef MDBX_CONFIG_H #include MDBX_CONFIG_H #endif @@ -9626,6 +9626,14 @@ __cold static void meta_troika_dump(const MDBX_env *env, /*----------------------------------------------------------------------------*/ +static __inline MDBX_CONST_FUNCTION MDBX_lockinfo * +lckless_stub(const MDBX_env *env) { + uintptr_t stub = (uintptr_t)&env->x_lckless_stub; + /* align to avoid false-positive alarm from UndefinedBehaviorSanitizer */ + stub = (stub + MDBX_CACHELINE_SIZE - 1) & ~(MDBX_CACHELINE_SIZE - 1); + return (MDBX_lockinfo *)stub; +} + /* Find oldest txnid still referenced. */ static txnid_t find_oldest_reader(MDBX_env *const env, const txnid_t steady) { const uint32_t nothing_changed = MDBX_STRING_TETRAD("None"); @@ -9633,7 +9641,7 @@ static txnid_t find_oldest_reader(MDBX_env *const env, const txnid_t steady) { MDBX_lockinfo *const lck = env->me_lck_mmap.lck; if (unlikely(lck == NULL /* exclusive without-lck mode */)) { - eASSERT(env, env->me_lck == (void *)&env->x_lckless_stub); + eASSERT(env, env->me_lck == lckless_stub(env)); env->me_lck->mti_readers_refresh_flag.weak = nothing_changed; return env->me_lck->mti_oldest_reader.weak = steady; } @@ -12931,8 +12939,7 @@ static int txn_renew(MDBX_txn *txn, const unsigned flags) { mo_AcquireRelease); } else { /* exclusive mode without lck */ - eASSERT(env, !env->me_lck_mmap.lck && - env->me_lck == (void *)&env->x_lckless_stub); + eASSERT(env, !env->me_lck_mmap.lck && env->me_lck == lckless_stub(env)); } jitter4testing(true); @@ -17151,14 +17158,6 @@ __cold static void setup_pagesize(MDBX_env *env, const size_t pagesize) { env->me_options.dp_initial = env->me_options.dp_limit; } -static __inline MDBX_CONST_FUNCTION MDBX_lockinfo * -lckless_stub(const MDBX_env *env) { - uintptr_t stub = (uintptr_t)&env->x_lckless_stub; - /* align to avoid false-positive alarm from UndefinedBehaviorSanitizer */ - stub = (stub + MDBX_CACHELINE_SIZE - 1) & ~(MDBX_CACHELINE_SIZE - 1); - return (MDBX_lockinfo *)stub; -} - __cold int mdbx_env_create(MDBX_env **penv) { if (unlikely(!penv)) return MDBX_EINVAL; @@ -19267,6 +19266,7 @@ __cold int mdbx_env_openW(MDBX_env *env, const wchar_t *pathname, if (rc == MDBX_RESULT_TRUE) { env->me_incore = true; NOTICE("%s", "in-core database"); + rc = MDBX_SUCCESS; } else if (unlikely(rc != MDBX_SUCCESS)) { ERROR("check_fs_incore(), err %d", rc); goto bailout; @@ -31656,8 +31656,8 @@ MDBX_INTERNAL_FUNC int osal_check_fs_rdonly(mdbx_filehandle_t handle, #else struct statvfs info; if (err != MDBX_ENOFILE) { - if (statvfs(pathname, &info) == 0 && (info.f_flag & ST_RDONLY) == 0) - return err; + if (statvfs(pathname, &info) == 0) + return (info.f_flag & ST_RDONLY) ? MDBX_SUCCESS : err; if (errno != MDBX_ENOFILE) return errno; } diff --git a/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx.c++ b/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx.c++ index 579f584709ac..4dd43dd50235 100644 --- a/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx.c++ +++ b/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx.c++ @@ -12,7 +12,7 @@ * . */ #define xMDBX_ALLOY 1 -#define MDBX_BUILD_SOURCERY cd9d526652f8327384fdca9e5942a61289a5580c33de34f8fd0773fc2835ff49_v0_12_9_50_g4f770999 +#define MDBX_BUILD_SOURCERY cd9d526652f8327384fdca9e5942a61289a5580c33de34f8fd0773fc2835ff49_v0_12_9_50_g4f770999_dirty #ifdef MDBX_CONFIG_H #include MDBX_CONFIG_H #endif diff --git a/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_chk.c b/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_chk.c index 274bd8203961..12bd77b1ecc9 100644 --- a/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_chk.c +++ b/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_chk.c @@ -34,7 +34,7 @@ * top-level directory of the distribution or, alternatively, at * . */ -#define MDBX_BUILD_SOURCERY cd9d526652f8327384fdca9e5942a61289a5580c33de34f8fd0773fc2835ff49_v0_12_9_50_g4f770999 +#define MDBX_BUILD_SOURCERY cd9d526652f8327384fdca9e5942a61289a5580c33de34f8fd0773fc2835ff49_v0_12_9_50_g4f770999_dirty #ifdef MDBX_CONFIG_H #include MDBX_CONFIG_H #endif diff --git a/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_copy.c b/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_copy.c index d7cb395c7c82..8bf9b5f1302d 100644 --- a/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_copy.c +++ b/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_copy.c @@ -34,7 +34,7 @@ * top-level directory of the distribution or, alternatively, at * . */ -#define MDBX_BUILD_SOURCERY cd9d526652f8327384fdca9e5942a61289a5580c33de34f8fd0773fc2835ff49_v0_12_9_50_g4f770999 +#define MDBX_BUILD_SOURCERY cd9d526652f8327384fdca9e5942a61289a5580c33de34f8fd0773fc2835ff49_v0_12_9_50_g4f770999_dirty #ifdef MDBX_CONFIG_H #include MDBX_CONFIG_H #endif diff --git a/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_drop.c b/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_drop.c index b53caa7cec1d..a1b22c66d86f 100644 --- a/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_drop.c +++ b/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_drop.c @@ -36,7 +36,7 @@ * top-level directory of the distribution or, alternatively, at * . */ -#define MDBX_BUILD_SOURCERY cd9d526652f8327384fdca9e5942a61289a5580c33de34f8fd0773fc2835ff49_v0_12_9_50_g4f770999 +#define MDBX_BUILD_SOURCERY cd9d526652f8327384fdca9e5942a61289a5580c33de34f8fd0773fc2835ff49_v0_12_9_50_g4f770999_dirty #ifdef MDBX_CONFIG_H #include MDBX_CONFIG_H #endif diff --git a/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_dump.c b/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_dump.c index 7990633de3a8..1084b8e274ca 100644 --- a/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_dump.c +++ b/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_dump.c @@ -34,7 +34,7 @@ * top-level directory of the distribution or, alternatively, at * . */ -#define MDBX_BUILD_SOURCERY cd9d526652f8327384fdca9e5942a61289a5580c33de34f8fd0773fc2835ff49_v0_12_9_50_g4f770999 +#define MDBX_BUILD_SOURCERY cd9d526652f8327384fdca9e5942a61289a5580c33de34f8fd0773fc2835ff49_v0_12_9_50_g4f770999_dirty #ifdef MDBX_CONFIG_H #include MDBX_CONFIG_H #endif diff --git a/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_load.c b/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_load.c index 06159bf75165..fed58cce1641 100644 --- a/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_load.c +++ b/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_load.c @@ -34,7 +34,7 @@ * top-level directory of the distribution or, alternatively, at * . */ -#define MDBX_BUILD_SOURCERY cd9d526652f8327384fdca9e5942a61289a5580c33de34f8fd0773fc2835ff49_v0_12_9_50_g4f770999 +#define MDBX_BUILD_SOURCERY cd9d526652f8327384fdca9e5942a61289a5580c33de34f8fd0773fc2835ff49_v0_12_9_50_g4f770999_dirty #ifdef MDBX_CONFIG_H #include MDBX_CONFIG_H #endif diff --git a/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_stat.c b/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_stat.c index 2243c3470b3d..d0938657e1bb 100644 --- a/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_stat.c +++ b/crates/storage/libmdbx-rs/mdbx-sys/libmdbx/mdbx_stat.c @@ -34,7 +34,7 @@ * top-level directory of the distribution or, alternatively, at * . */ -#define MDBX_BUILD_SOURCERY cd9d526652f8327384fdca9e5942a61289a5580c33de34f8fd0773fc2835ff49_v0_12_9_50_g4f770999 +#define MDBX_BUILD_SOURCERY cd9d526652f8327384fdca9e5942a61289a5580c33de34f8fd0773fc2835ff49_v0_12_9_50_g4f770999_dirty #ifdef MDBX_CONFIG_H #include MDBX_CONFIG_H #endif