236 Commits

Author SHA1 Message Date
Leo Yuriev
fb9d7a4471 mdbx: refine freelist_list() to avoid coverity warnings.
Change-Id: I38eee44e4ca926e7d11ef5e3f7f3ce2e92f71259
2017-07-26 17:36:32 +03:00
Leonid Yuriev
a78edd314e mdbx: more fix MSVC '/Wall' warnings.
Change-Id: I359a3056d6bb5db762fe6b6b8a89e8ed066f8a87
2017-07-26 16:02:49 +03:00
Leo Yuriev
88ca23caa5 mdbx: misc refines (minor).
Change-Id: Ia58e2d75e320bbd47dd352e082cf6f41afde075f
2017-07-26 12:43:54 +03:00
Leo Yuriev
1f7f3af16c mdbx: minor refine mdbx_mmap().
Change-Id: Ic5026b6412ca93a00faeb8306975d896d85b475d
2017-07-26 12:43:54 +03:00
Leo Yuriev
f57931f614 mdbx: apply only substantial geo-changes and pre-shink while opening database.
Change-Id: If62ac64cc820ed0201cecf4b89ea3096029abb0a
2017-07-26 12:43:54 +03:00
Leo Yuriev
1dab822324 mdbx: growth/shrink datafile with alignment.
Change-Id: I46deb885654d2bb1d164009159c9364567ab88a9
2017-07-26 12:43:52 +03:00
Leo Yuriev
4f06a38a50 mdbx: use saturated pgno_add() to avoid overflows.
Change-Id: I70000a86a69c9b3399d0a2c345d57ca1908f2881
2017-07-26 12:41:52 +03:00
Leo Yuriev
a9927e7214 mdbx: refine page_alloc().
Change-Id: I9932847ef244132df9d909b41a1760a3e89288ac
2017-07-26 12:30:50 +03:00
Leo Yuriev
3d53f2ff2a mdbx: refine mdbx_reclaiming_detent() for MDBX_UTTERLY_NOSYNC.
Change-Id: I7847f2b375f3792927a55c90bb26d3220e71b576
2017-07-26 12:28:27 +03:00
Leo Yuriev
94af9e02b0 mdbx: fix mdbx_env_close_ex() for MDBX_RDONLY.
Change-Id: I5ff79a93e026d4b40412294956dd222081a1b821
2017-07-26 12:27:34 +03:00
Leo Yuriev
ab8fa36033 mdbx: refine mdbx_meta_ot() and dependents.
Change-Id: I449d501f0c3710fdb906e01931e10300ab3b7c9d
2017-07-26 12:26:02 +03:00
Leo Yuriev
0b07749fba mdbx: major fix - madvise(MADV_REMOVE) only for exclusive mode.
Change-Id: I6799df7b85eaf32a1c46f251ca64a4df4ff092b2
2017-07-26 12:09:57 +03:00
Leo Yuriev
9e473ab6f2 mdbx: remove obsolete mlock().
Change-Id: I23df282d545eac9dd7bf9df1bd71dedbccc45cfd
2017-07-26 12:09:57 +03:00
Leo Yuriev
4fa4129add mdbx: cleanup freelist_save().
Change-Id: I552e6d7edac61e66b8954f6b58485d6b07194ab5
2017-07-26 12:09:57 +03:00
Leo Yuriev
1babb0a4f7 mdbx: don't put loose pages into befree in lifo mode.
Change-Id: Ibb409e3447e42f1b9f38ed0a33ecb7715fa54d31
2017-07-26 12:09:57 +03:00
Leo Yuriev
ad48fd54fb mdbx: minor refine freelist_save().
Change-Id: Ifed9b8d363d45d24c44c1b0a803dad34aada96d3
2017-07-26 12:09:57 +03:00
Leo Yuriev
3ba5bebec4 mdbx: refine mdbx_txl_alloc().
Change-Id: I624a92c8a845ab563f13619b3638227d012a780b
2017-07-26 12:09:57 +03:00
Leo Yuriev
d5a8bcebbf mdbx: preserve current meta-extra fields/flags.
Change-Id: Id458a85178839bd196435891633c4dd1f3a51d45
2017-07-23 21:33:17 +03:00
Leo Yuriev
58f7674fa5 mdbx: fix mdbx_set_attr().
Change-Id: I6628a0629a17f99f39098b8ccb76259cd65dd353
2017-07-23 21:07:08 +03:00
Leo Yuriev
b4e0344de7 mdbx: check for oldest-aware corruption by writer in txn_renew().
Change-Id: I1a49e4264feb93dc84963db426b11f467f31fcf6
2017-07-23 21:07:08 +03:00
Leo Yuriev
ddc5b9f34f mdbx: start find_oldest() from steady-point.
Change-Id: Icc102f98f86e557e1ccba9cd74255c3da9225d41
2017-07-23 18:39:31 +03:00
Leo Yuriev
242baf761f mdbx: fix/rework shrinking, add MDBX_SHRINK_ALLOWED.
Change-Id: I014440850aa4be927843aa2a6a268794a4da9b2a
2017-07-21 13:55:21 +03:00
Leo Yuriev
599711a007 mdbx: fix/avoid meta-update from setup_dxb() in read-only mode.
Change-Id: I60359f92aba31bb5a22e9a39ea4658d2393e957d
2017-07-21 13:54:06 +03:00
Leonid Yuriev
c8a5df650b mdbx: fix/rework exclusive-locking for Windows.
Change-Id: I1b129a10ed7523024481480647317f1643f2ea70
2017-07-19 14:13:31 +03:00
Leo Yuriev
17e8429a29 mdbx: rework mmap-functions for osal.
- add 'length' and 'current' fields to mmap-object;
 - drop mdbx_mremap();
 - do remap on-demand inside mdbx_mresize();
 - add mdbx_mapresize() which re-creates Valgrind's region.
 - call resize on txn-begin.

Change-Id: I82780f92c4947804e3f14fb7cb71ee655382f9bb
2017-07-19 14:13:31 +03:00
Leo Yuriev
4d1df6ea11 mdbx: rework rollback on dxb-setup to avoid troubles under Windows. 2017-07-12 03:31:20 +03:00
Leo Yuriev
455de97d36 mdbx: rework using of mdbx_mmap_t and mdbx_msync(). 2017-07-12 03:31:20 +03:00
Leo Yuriev
6f00854034 mdbx: take LTO_ENABLED in account for AddressSanitizer default options.
Change-Id: I691eae23ca2cb60c6e2a9260ab41e3c80c8aaeb8
2017-07-07 00:45:52 +03:00
Leo Yuriev
0047ce4bd6 mdbx: add default AddressSanitizer options.
Change-Id: I99b7aee5010f1d43008b2a61efe3fb9bb023ab31
2017-07-07 00:02:56 +03:00
Leo Yuriev
84b4883f00 mdbx: fix returning MDBX-errors after the merge.
Change-Id: Id49b7f341749709cdee476c88c1066e76b6937c1
2017-07-05 19:38:39 +03:00
Leo Yuriev
14484a6f32 mdbx: fix minor defects (coverity).
Change-Id: I1a5b0788a87ab2a138b342140648642fd5855ae3
2017-07-04 13:21:16 +03:00
Leo Yuriev
beda690227 mdbx: fix resource-leak in mdbx_env_open_ex() in case of error (coverity).
Change-Id: I9e808e2de4a64d05205a79c9d90feacc87ec930d
2017-07-04 13:21:16 +03:00
Leo Yuriev
93d92db43d mdbx: fix mischecking in mdbx_reader_check0() (coverity).
Change-Id: I2e3aaba1426c3b152a39b90f6d171380948da0a7
2017-07-04 13:21:16 +03:00
Leo Yuriev
bf8507f3ec mdbx: fix mdbx_env_info() to avoid null-deref in lck-free mode (coverity).
Change-Id: Ica8fe6c7f5a18af3a4d7d38ce8a1a092d5f1b2f7
2017-07-04 11:45:48 +03:00
Leo Yuriev
aec35300c4 mdbx: fix new API function after the merge.
Change-Id: Ic929444ceb137ccaa2ab4fe82b4f93a3cb5a92aa
2017-07-04 10:46:46 +03:00
Leo Yuriev
b34e92d308 mdbx: cleanup/reformat after the merge.
Change-Id: I3e0fe8f1292a6387e8d3ff8b904170f05d8e1770
2017-07-04 10:35:32 +03:00
Leo Yuriev
594834bc9c mdbx: Merge branch 'nexenta' into devel.
Change-Id: I7a00f98e088f21ebc91a3861309b697f01e1fa66
2017-07-04 09:22:09 +03:00
Leo Yuriev
78ae12aa10 mdbx: fix MSVC 'padding' warnings, minor refine fields ordering. 2017-07-03 11:41:24 +03:00
Leo Yuriev
1d702aa94f mdbx: more warning control for MSVC. 2017-07-03 06:45:41 +03:00
Leonid Yuriev
3e6a672286 mdbx: fix MSVC warnings, add uint16-range-asserts.
Change-Id: Ie67a728035eeae250efbf962270b5c17c974db23
2017-07-03 04:41:00 +03:00
Leo Yuriev
2ed74ee78f mdbx: fix MSVC size_t/uint64_t warnings (minor).
Change-Id: I580eea87e9c557c61b1ff0b66feaafce139d2c45
2017-06-30 07:25:56 +03:00
Leo Yuriev
186d2ee065 mdbx: add 'mti_reader_finished_flag' for speedup find_oldesd().
Change-Id: I4a2c8b80efad0cfc12918969125d258043cbffba
2017-06-30 00:43:11 +03:00
Leo Yuriev
acfa096aba mdbx: more for lockless/readonly mode (testing needed).
Change-Id: I28f46f5a373212ebb5df780f4d2b5e216d8cdae2
2017-06-30 00:43:11 +03:00
Leo Yuriev
9a2fff91f3 mdbx: dynamic mapsize/geometry and API (mostly done).
Change-Id: Ifb768ff3207cae1755c53c211a3ae552c6455e12
2017-06-21 01:42:41 +03:00
Leo Yuriev
45defdc170 mdbx: refine err returning (MDBX_EPERM, etc).
Change-Id: Iaa21a0e6632be47d6ef2a3676ba5e1381fc03b4d
2017-06-21 01:42:27 +03:00
Leo Yuriev
151d4540de mdbx: refine internal constant (use UINT32_C, etc minors).
Change-Id: I0f994ee75b5aa1494fcc8ca42a46120865676e25
2017-06-21 01:39:53 +03:00
Leo Yuriev
edc936dc28 mdbx: rework mdbx_oomkick() and speedup mdbx_find_oldest().
Change-Id: Icc2c450e7f10efe1b4ab8705e6a659cece256dc1
2017-06-16 05:27:01 +03:00
Leo Yuriev
81661ff952 mdbx: add shared cache for oldest reader's txnid.
Change-Id: I48cbc778b873445dffa8ecef1fc3633e0193131f
2017-06-16 05:21:49 +03:00
Leo Yuriev
c01aeb5c68 mdbx: refine meta_txnid().
Change-Id: I4d78b2ebed8850c90dc762405ba939be7385c9a3
2017-06-16 05:21:49 +03:00
Leo Yuriev
ae71c2aa36 mdbx: simplify find-oldest inside mdbx_page_alloc().
Change-Id: I88dfc8ee268eba2452bffd3c4e6cfd066bcd8b04
2017-06-16 05:21:27 +03:00
Leo Yuriev
760f7d1331 mdbx: fix nasty 'inverted if-condition' inside mdbx_reader_check0().
Fix c2087f186ef5ae021bb1b9f6f8111e7b7eccffc1
2017-06-15 15:05:14 +03:00
Leo Yuriev
ddc3787936 mdbx: fix MDBX_RESULT_TRUE handling inside mdbx_mutex_failed()...mdbx_oomkick(). 2017-06-15 14:56:25 +03:00
Leo Yuriev
71e2fe3df0 mdbx: add MDBX_DBG_DUMP for mdbx_setup_debug().
So, meta-pages and lck-section now will be included into a coredump.
2017-06-15 13:45:16 +03:00
Leo Yuriev
0ef41bef2b mdbx: fix mdbx_txn_straggler() for write-txn. 2017-06-13 19:27:52 +03:00
Leo Yuriev
6f53dd0719 mdbx: add mdbx_dbi_flags_ex(). 2017-06-09 16:44:34 +03:00
Leo Yuriev
204904df7c mdbx: disallow begin txn if env not yet opened. 2017-06-06 20:28:00 +03:00
Leo Yuriev
fbce45cb98 mdbx: allow calling mdbx_env_sync() inside transaction. 2017-06-06 20:28:00 +03:00
Leo Yuriev
1d15ae4b13 mdbx: zeroing MDBX_page.mp_validator for Valgrind/AddressSanitizer. 2017-06-06 17:47:46 +03:00
Leo Yuriev
465459dc58 mdbx: add MDBX_txn.mt_owner and MDBX_THREAD_MISMATCH. 2017-06-06 17:11:29 +03:00
Leo Yuriev
3bf3a08f96 mdbx: fix write-txn thread cleanup. 2017-06-06 17:09:49 +03:00
Leonid Yuriev
318646794e mdbx: partial fix MSVC level-4 warnings. 2017-06-06 04:15:08 +03:00
Leonid Yuriev
bfa6dea784 mdbx: fix size_t/unsigned/int warnings.
Change-Id: Ic5a8684aed232b8b732d6e7a87a6757f3f7afcec
2017-06-06 04:15:08 +03:00
Leonid Yuriev
7e85ad82f1 mdbx: refine read_header(), add MDBX_TOO_LARGE.
Change-Id: I25b9bb2e3817993d627b2b784dfa496d9ba7e7b0
2017-06-06 04:15:08 +03:00
Leo Yuriev
61d7ea283f mdbx: size_t for sync_threshold and mapsize. 2017-06-06 04:15:08 +03:00
Leo Yuriev
802c10f13f mdbx: log2shift instead of multiplication by pagesize.
Change-Id: I72c4c7699a409795459b466ff74c388b15b13687
2017-06-06 04:15:08 +03:00
Leo Yuriev
59c22ab036 mdbx: use 32-bit pgno_t (page numbers).
Change-Id: Ie9f3528e12b7be27765c0225edde26e4d8282692
2017-06-06 04:15:08 +03:00
Leo Yuriev
1343b46466 mdbx: add txnid-list functions. 2017-06-06 04:15:08 +03:00
Leo Yuriev
52f52de2d5 mdbx: include meta-pages into a coredump. 2017-06-06 04:15:08 +03:00
Leo Yuriev
95ebdb7065 mdbx: MAX_PAGESIZE always 64K. 2017-06-06 04:15:08 +03:00
Leo Yuriev
61a3766e23 mdbx: update DB format and signatures.
Change-Id: I9c4b187e8ebc3df63fef15ae98872e27d56a01ab
2017-06-06 04:15:08 +03:00
Lorenz Bauer
d99b2a4b16 mdbx: use F_SETNOSIGPIPE to SIGPIPE husing on a OS X. 2017-06-06 04:15:08 +03:00
Leo Yuriev
98a8fbdc7a mdbx: restore SIGPIPE hushing in the db-copy-thread. 2017-06-06 04:15:08 +03:00
Leo Yuriev
009618560f mdbx: refine mdbx_is_dirty(). 2017-05-30 15:32:05 +03:00
Leo Yuriev
a36b065cd9 mdbx: logging MDBX_PROBLEM reasons. 2017-05-29 20:17:02 +03:00
Leo Yuriev
11e8727483 mdbx: fix missing braces. 2017-05-29 20:16:09 +03:00
Leo Yuriev
70fe982c3a mdbx: fix MDBX_WANNA_RECOVERY description. 2017-05-29 19:38:43 +03:00
Leo Yuriev
d91785f635 mdbx: disable unnecessary assertion in mdbx_is_dirty(). 2017-05-29 19:38:43 +03:00
Leo Yuriev
0f676db491 mdbx: add locking while open/close/drop dbi-handles (avoid dbi-related races).
This avoid races and collisions between threads when opening,
closing and deleting DBI-handles.

unfortunately, this does not resolve collision in the case an one thread
closing the DBI-handle while the another thread performs transaction.

Change-Id: I48c3ffb11a8f83739fae1712db3476645f573e09
2017-05-29 19:38:43 +03:00
Leo Yuriev
bd5d092a2b mdbx: check system pagesize (paranoia).
Change-Id: I596c686a996f7d1521789f22900022c4da629e1b
2017-05-28 18:55:18 +03:00
Leo Yuriev
fca74ab80c mdbx: refine meta-commit in WRITEMAP mode.
Change-Id: Ieb53bf6144a104fc88b0b07b4abdde20f4b01978
2017-05-28 18:35:58 +03:00
Leo Yuriev
2347282b4f mdbx: add assertions for reclaiming-edge.
Change-Id: I87e11f69423b4e7841c4f8ec6b5ecfdff9e96b0d
2017-05-28 17:06:04 +03:00
Leo Yuriev
236ddda1ae mdbx: more assertions for mdbx_txn_renew0().
Change-Id: I3c179d105c3e6388c08b2c371ada4d457af50bed
2017-05-28 17:06:04 +03:00
Leo Yuriev
2ea97ae281 mdbx: refine find_oldest() and meta_head(). 2017-05-28 17:06:04 +03:00
Leo Yuriev
91bc3129d5 mdbx: refine mdbx_page_search().
Change-Id: I9c87ae2ffe317538813ebec971ad093936f4c504
2017-05-28 17:06:04 +03:00
Leo Yuriev
f945e8a062 mdbx: fix cache-aligned size for MDBX_reader.
Change-Id: I1e48dd279106daa629fbcd427ec841828799c8f6
2017-05-28 17:06:04 +03:00
Leo Yuriev
bb5e1b43af mdbx: relax mdbx_is_dirrty() assertion for map-range. 2017-05-28 17:06:04 +03:00
Leo Yuriev
17c8057684 mdbx: fix gcc 'uninitialized' warning with -Og. 2017-05-28 17:06:04 +03:00
Leo Yuriev
77f0e5e38e mdbx: drop unused debug features. 2017-05-28 17:06:04 +03:00
Leo Yuriev
60fed8bbca mdbx: fix first-rdonly-blocker bug. 2017-05-28 17:06:04 +03:00
Leo Yuriev
76f459c08e mdbx: two-phase txnid to avoid bottom-top DMA updates. 2017-05-28 17:06:04 +03:00
Leo Yuriev
bd70135db1 mdbx: re-read and check meta-pages in mdbx_read_header() for consistency. 2017-05-28 17:02:19 +03:00
Leo Yuriev
93c5a84bcd mdbx: more checks mdbx_read_header() for metapage's content. 2017-05-28 17:02:19 +03:00
Leo Yuriev
4293840055 mdbx: fix meta-invalidate race in MDBX_WRITEMAP mode (when target == head). 2017-05-28 17:02:19 +03:00
Leo Yuriev
f4d3b76f81 mdbx: minor refine and rename mdbx_sync_locked().
Change-Id: Iab650b091006e5646d9d22316d19aa58a517684b
2017-05-28 17:02:19 +03:00
Leo Yuriev
c02a3ac687 mdbx: ignore meta-pages with wrong pagesize. 2017-05-28 17:02:19 +03:00
Leo Yuriev
0e49b1b2b4 mdbx: update 'mapsize' while opening with txn-increment. 2017-05-28 17:02:19 +03:00
Leo Yuriev
5d836d2b03 mdbx: clarify steady/fluid/weak names of a head. 2017-05-28 17:02:19 +03:00
Leo Yuriev
47cc45dec4 mdbx: don't check present durability mode for MDBX_RDONLY. 2017-05-28 17:02:19 +03:00
Leo Yuriev
700f3e9c2a mdbx: more checks for meta-params. 2017-05-28 17:02:19 +03:00
Leo Yuriev
9eeb00f448 mdbx: trinity of meta-pages. 2017-05-28 17:02:19 +03:00