mirror of
https://github.com/isar/libmdbx.git
synced 2025-08-23 09:04:26 +08:00
mdbx-windows: устранение регресса ERROR_SHARING_VIOLATION в режиме MDBX_EXCLUSIVE.
Спасибо maxc0d3r@protonmail.com за сообщение о проблеме.
This commit is contained in:
committed by
Леонид Юрьев (Leonid Yuriev)
parent
0159f97e94
commit
9e15bd9b29
@@ -14892,7 +14892,8 @@ __cold int mdbx_env_openW(MDBX_env *env, const wchar_t *pathname,
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
eASSERT(env, env->me_overlapped_fd == 0);
|
||||
bool ior_direct = false;
|
||||
if (!(flags & (MDBX_RDONLY | MDBX_SAFE_NOSYNC | MDBX_NOMETASYNC))) {
|
||||
if (!(flags &
|
||||
(MDBX_RDONLY | MDBX_SAFE_NOSYNC | MDBX_NOMETASYNC | MDBX_EXCLUSIVE))) {
|
||||
if (MDBX_AVOID_MSYNC && (flags & MDBX_WRITEMAP)) {
|
||||
/* Запрошен режим MDBX_SAFE_NOSYNC | MDBX_WRITEMAP при активной опции
|
||||
* MDBX_AVOID_MSYNC.
|
||||
@@ -14964,7 +14965,11 @@ __cold int mdbx_env_openW(MDBX_env *env, const wchar_t *pathname,
|
||||
osal_fseek(env->me_lfd, safe_parking_lot_offset);
|
||||
|
||||
eASSERT(env, env->me_dsync_fd == INVALID_HANDLE_VALUE);
|
||||
if (!(flags & (MDBX_RDONLY | MDBX_SAFE_NOSYNC | MDBX_DEPRECATED_MAPASYNC))) {
|
||||
if (!(flags & (MDBX_RDONLY | MDBX_SAFE_NOSYNC | MDBX_DEPRECATED_MAPASYNC
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
| MDBX_EXCLUSIVE
|
||||
#endif /* !Windows */
|
||||
))) {
|
||||
rc = osal_openfile(MDBX_OPEN_DXB_DSYNC, env, env_pathname.dxb,
|
||||
&env->me_dsync_fd, 0);
|
||||
if (MDBX_IS_ERROR(rc))
|
||||
|
@@ -1160,7 +1160,7 @@ MDBX_INTERNAL_FUNC void osal_ioring_destroy(osal_ioring_t *ior) {
|
||||
#else
|
||||
osal_free(ior->pool);
|
||||
#endif
|
||||
memset(ior, -1, sizeof(osal_ioring_t));
|
||||
memset(ior, 0, sizeof(osal_ioring_t));
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
Reference in New Issue
Block a user