mdbx: include meta-pages into a coredump.

This commit is contained in:
Leo Yuriev 2017-05-31 18:58:55 +03:00
parent 95ebdb7065
commit 52f52de2d5
2 changed files with 6 additions and 7 deletions

View File

@ -24,7 +24,7 @@
- [x] Добавить поле типа контрольной суммы. - [x] Добавить поле типа контрольной суммы.
- [x] Добавить поле/флаг размера pgno_t. - [x] Добавить поле/флаг размера pgno_t.
- [x] Поменять сигнатуры. - [x] Поменять сигнатуры.
- [ ] Добавить мета-страницы в coredump, проверить lck - [x] Добавить мета-страницы в coredump, проверить lck
- [ ] Сделать список для txnid_t, кода sizeof(txnid_t) > sizeof(pgno_t) и вернуть размер pgno_t - [ ] Сделать список для txnid_t, кода sizeof(txnid_t) > sizeof(pgno_t) и вернуть размер pgno_t
- [ ] Избавиться от умножения на размер страницы (заменить на сдвиг). - [ ] Избавиться от умножения на размер страницы (заменить на сдвиг).
- [ ] Устранение всех предупреждений (в том числе под Windows). - [ ] Устранение всех предупреждений (в том числе под Windows).

View File

@ -3858,9 +3858,12 @@ static int __cold mdbx_env_map(MDBX_env *env, void *addr, size_t usedsize) {
(void)madvise(env->me_map, env->me_mapsize, MADV_NOHUGEPAGE); (void)madvise(env->me_map, env->me_mapsize, MADV_NOHUGEPAGE);
#endif #endif
#ifdef MADV_DONTDUMP #if defined(MADV_DODUMP) && defined(MADV_DONTDUMP)
const size_t meta_length = env->me_psize * NUM_METAS;
(void)madvise(env->me_map, env->me_psize * NUM_METAS, MADV_DODUMP);
if (!(flags & MDBX_PAGEPERTURB)) if (!(flags & MDBX_PAGEPERTURB))
(void)madvise(env->me_map, env->me_mapsize, MADV_DONTDUMP); (void)madvise(env->me_map + meta_length, env->me_mapsize - meta_length,
MADV_DONTDUMP);
#endif #endif
#ifdef MADV_REMOVE #ifdef MADV_REMOVE
@ -4202,10 +4205,6 @@ static int __cold mdbx_setup_lck(MDBX_env *env, char *lck_pathname, int mode) {
assert(addr != nullptr); assert(addr != nullptr);
env->me_lck = addr; env->me_lck = addr;
#ifdef MADV_NOHUGEPAGE
(void)madvise(env->me_lck, size, MADV_NOHUGEPAGE);
#endif
#ifdef MADV_DODUMP #ifdef MADV_DODUMP
(void)madvise(env->me_lck, size, MADV_DODUMP); (void)madvise(env->me_lck, size, MADV_DODUMP);
#endif #endif