mirror of
https://github.com/isar/libmdbx.git
synced 2026-01-16 15:52:21 +08:00
mdbx: новые настройки clang-format (косметика).
This commit is contained in:
60
src/lck.c
60
src/lck.c
@@ -15,14 +15,12 @@ __cold static int lck_setup_locked(MDBX_env *env) {
|
||||
if (env->lck_mmap.fd == INVALID_HANDLE_VALUE) {
|
||||
env->lck = lckless_stub(env);
|
||||
env->max_readers = UINT_MAX;
|
||||
DEBUG("lck-setup:%s%s%s", " lck-less",
|
||||
(env->flags & MDBX_RDONLY) ? " readonly" : "",
|
||||
DEBUG("lck-setup:%s%s%s", " lck-less", (env->flags & MDBX_RDONLY) ? " readonly" : "",
|
||||
(lck_seize_rc == MDBX_RESULT_TRUE) ? " exclusive" : " cooperative");
|
||||
return lck_seize_rc;
|
||||
}
|
||||
|
||||
DEBUG("lck-setup:%s%s%s", " with-lck",
|
||||
(env->flags & MDBX_RDONLY) ? " readonly" : "",
|
||||
DEBUG("lck-setup:%s%s%s", " with-lck", (env->flags & MDBX_RDONLY) ? " readonly" : "",
|
||||
(lck_seize_rc == MDBX_RESULT_TRUE) ? " exclusive" : " cooperative");
|
||||
|
||||
MDBX_env *inprocess_neighbor = nullptr;
|
||||
@@ -30,8 +28,7 @@ __cold static int lck_setup_locked(MDBX_env *env) {
|
||||
if (unlikely(MDBX_IS_ERROR(err)))
|
||||
return err;
|
||||
if (inprocess_neighbor) {
|
||||
if ((globals.runtime_flags & MDBX_DBG_LEGACY_MULTIOPEN) == 0 ||
|
||||
(inprocess_neighbor->flags & MDBX_EXCLUSIVE) != 0)
|
||||
if ((globals.runtime_flags & MDBX_DBG_LEGACY_MULTIOPEN) == 0 || (inprocess_neighbor->flags & MDBX_EXCLUSIVE) != 0)
|
||||
return MDBX_BUSY;
|
||||
if (lck_seize_rc == MDBX_RESULT_TRUE) {
|
||||
err = lck_downgrade(env);
|
||||
@@ -47,52 +44,41 @@ __cold static int lck_setup_locked(MDBX_env *env) {
|
||||
return err;
|
||||
|
||||
if (lck_seize_rc == MDBX_RESULT_TRUE) {
|
||||
size =
|
||||
ceil_powerof2(env->max_readers * sizeof(reader_slot_t) + sizeof(lck_t),
|
||||
globals.sys_pagesize);
|
||||
size = ceil_powerof2(env->max_readers * sizeof(reader_slot_t) + sizeof(lck_t), globals.sys_pagesize);
|
||||
jitter4testing(false);
|
||||
} else {
|
||||
if (env->flags & MDBX_EXCLUSIVE)
|
||||
return MDBX_BUSY;
|
||||
if (size > INT_MAX || (size & (globals.sys_pagesize - 1)) != 0 ||
|
||||
size < globals.sys_pagesize) {
|
||||
if (size > INT_MAX || (size & (globals.sys_pagesize - 1)) != 0 || size < globals.sys_pagesize) {
|
||||
ERROR("lck-file has invalid size %" PRIu64 " bytes", size);
|
||||
return MDBX_PROBLEM;
|
||||
}
|
||||
}
|
||||
|
||||
const size_t maxreaders =
|
||||
((size_t)size - sizeof(lck_t)) / sizeof(reader_slot_t);
|
||||
const size_t maxreaders = ((size_t)size - sizeof(lck_t)) / sizeof(reader_slot_t);
|
||||
if (maxreaders < 4) {
|
||||
ERROR("lck-size too small (up to %" PRIuPTR " readers)", maxreaders);
|
||||
return MDBX_PROBLEM;
|
||||
}
|
||||
env->max_readers = (maxreaders <= MDBX_READERS_LIMIT)
|
||||
? (unsigned)maxreaders
|
||||
: (unsigned)MDBX_READERS_LIMIT;
|
||||
env->max_readers = (maxreaders <= MDBX_READERS_LIMIT) ? (unsigned)maxreaders : (unsigned)MDBX_READERS_LIMIT;
|
||||
|
||||
err = osal_mmap((env->flags & MDBX_EXCLUSIVE) | MDBX_WRITEMAP, &env->lck_mmap,
|
||||
(size_t)size, (size_t)size,
|
||||
lck_seize_rc ? MMAP_OPTION_TRUNCATE | MMAP_OPTION_SEMAPHORE
|
||||
: MMAP_OPTION_SEMAPHORE);
|
||||
err = osal_mmap((env->flags & MDBX_EXCLUSIVE) | MDBX_WRITEMAP, &env->lck_mmap, (size_t)size, (size_t)size,
|
||||
lck_seize_rc ? MMAP_OPTION_TRUNCATE | MMAP_OPTION_SEMAPHORE : MMAP_OPTION_SEMAPHORE);
|
||||
if (unlikely(err != MDBX_SUCCESS))
|
||||
return err;
|
||||
|
||||
#ifdef MADV_DODUMP
|
||||
err = madvise(env->lck_mmap.lck, size, MADV_DODUMP) ? ignore_enosys(errno)
|
||||
: MDBX_SUCCESS;
|
||||
err = madvise(env->lck_mmap.lck, size, MADV_DODUMP) ? ignore_enosys(errno) : MDBX_SUCCESS;
|
||||
if (unlikely(MDBX_IS_ERROR(err)))
|
||||
return err;
|
||||
#endif /* MADV_DODUMP */
|
||||
|
||||
#ifdef MADV_WILLNEED
|
||||
err = madvise(env->lck_mmap.lck, size, MADV_WILLNEED) ? ignore_enosys(errno)
|
||||
: MDBX_SUCCESS;
|
||||
err = madvise(env->lck_mmap.lck, size, MADV_WILLNEED) ? ignore_enosys(errno) : MDBX_SUCCESS;
|
||||
if (unlikely(MDBX_IS_ERROR(err)))
|
||||
return err;
|
||||
#elif defined(POSIX_MADV_WILLNEED)
|
||||
err = ignore_enosys(
|
||||
posix_madvise(env->lck_mmap.lck, size, POSIX_MADV_WILLNEED));
|
||||
err = ignore_enosys(posix_madvise(env->lck_mmap.lck, size, POSIX_MADV_WILLNEED));
|
||||
if (unlikely(MDBX_IS_ERROR(err)))
|
||||
return err;
|
||||
#endif /* MADV_WILLNEED */
|
||||
@@ -108,8 +94,7 @@ __cold static int lck_setup_locked(MDBX_env *env) {
|
||||
#if MDBX_ENABLE_PGOP_STAT
|
||||
lck->pgops.wops.weak = 1;
|
||||
#endif /* MDBX_ENABLE_PGOP_STAT */
|
||||
err = osal_msync(&env->lck_mmap, 0, (size_t)size,
|
||||
MDBX_SYNC_DATA | MDBX_SYNC_SIZE);
|
||||
err = osal_msync(&env->lck_mmap, 0, (size_t)size, MDBX_SYNC_DATA | MDBX_SYNC_SIZE);
|
||||
if (unlikely(err != MDBX_SUCCESS)) {
|
||||
ERROR("initial-%s for lck-file failed, err %d", "msync/fsync", err);
|
||||
eASSERT(env, MDBX_IS_ERROR(err));
|
||||
@@ -118,17 +103,14 @@ __cold static int lck_setup_locked(MDBX_env *env) {
|
||||
} else {
|
||||
if (lck->magic_and_version != MDBX_LOCK_MAGIC) {
|
||||
const bool invalid = (lck->magic_and_version >> 8) != MDBX_MAGIC;
|
||||
ERROR("lock region has %s",
|
||||
invalid
|
||||
? "invalid magic"
|
||||
: "incompatible version (only applications with nearly or the "
|
||||
"same versions of libmdbx can share the same database)");
|
||||
ERROR("lock region has %s", invalid ? "invalid magic"
|
||||
: "incompatible version (only applications with nearly or the "
|
||||
"same versions of libmdbx can share the same database)");
|
||||
return invalid ? MDBX_INVALID : MDBX_VERSION_MISMATCH;
|
||||
}
|
||||
if (lck->os_and_format != MDBX_LOCK_FORMAT) {
|
||||
ERROR("lock region has os/format signature 0x%" PRIx32
|
||||
", expected 0x%" PRIx32,
|
||||
lck->os_and_format, MDBX_LOCK_FORMAT);
|
||||
ERROR("lock region has os/format signature 0x%" PRIx32 ", expected 0x%" PRIx32, lck->os_and_format,
|
||||
MDBX_LOCK_FORMAT);
|
||||
return MDBX_VERSION_MISMATCH;
|
||||
}
|
||||
}
|
||||
@@ -148,8 +130,7 @@ __cold int lck_setup(MDBX_env *env, mdbx_mode_t mode) {
|
||||
eASSERT(env, env->lazy_fd != INVALID_HANDLE_VALUE);
|
||||
eASSERT(env, env->lck_mmap.fd == INVALID_HANDLE_VALUE);
|
||||
|
||||
int err = osal_openfile(MDBX_OPEN_LCK, env, env->pathname.lck,
|
||||
&env->lck_mmap.fd, mode);
|
||||
int err = osal_openfile(MDBX_OPEN_LCK, env, env->pathname.lck, &env->lck_mmap.fd, mode);
|
||||
if (err != MDBX_SUCCESS) {
|
||||
switch (err) {
|
||||
default:
|
||||
@@ -186,6 +167,5 @@ __cold int lck_setup(MDBX_env *env, mdbx_mode_t mode) {
|
||||
}
|
||||
|
||||
void mincore_clean_cache(const MDBX_env *const env) {
|
||||
memset(env->lck->mincore_cache.begin, -1,
|
||||
sizeof(env->lck->mincore_cache.begin));
|
||||
memset(env->lck->mincore_cache.begin, -1, sizeof(env->lck->mincore_cache.begin));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user