Commit Graph

842 Commits

Author SHA1 Message Date
Leonid Yuriev
f5d75a85b0 mdbx: minor refine setup_dxb() logging.
Change-Id: I985ded5fce6d829563591d9b5ddb5b172100e43d
2019-10-21 07:50:11 +03:00
Leonid Yuriev
081603e6bc mdbx: alter update-gc for intermediate refunding of pages.
Change-Id: I551e94ed897c04af09f59a3fd96c694ef243d3a5
2019-10-21 07:50:11 +03:00
Leonid Yuriev
4e386be914 mdbx: don't hold dbi-lock during tree deletion inside mdbx_drop().
Change-Id: I29824271ba09a4443196bc1207279a257a8e26c0
2019-10-21 07:50:11 +03:00
Leonid Yuriev
15ce797863 mdbx: refine/optimize mdbx_page_alloc().
Change-Id: Iebbb8a611a82a379cf23b683bb21c9b6626ea9a5
2019-10-21 07:50:11 +03:00
Leonid Yuriev
36477ef408 mdbx: minor refine/optimize mdbx_page_new().
Change-Id: Ie1b227cbeceec8b1fc64630b8d1c12210d98dc20
2019-10-21 07:50:11 +03:00
Leonid Yuriev
b11d655173 mdbx: refine/optimize update-gc (remove anything in our spill list from parent's dirty list).
Change-Id: I945bdbc1431bac39173121210e1a08787e027b0c
2019-10-21 07:50:11 +03:00
Leonid Yuriev
781a814864 mdbx: refine/optimize update-gc (filter-out list of dirty-pages from loose-pages).
Change-Id: I73caa11e8a6378c307eb2e0a8199d0428dc14e05
2019-10-21 07:50:11 +03:00
Leonid Yuriev
363841caf8 mdbx: rework/optimize pages refunding.
Change-Id: I9315ea9187eaff4572536ab9c895fb6995eebd94
2019-10-21 07:50:11 +03:00
Leonid Yuriev
7f0dd35702 mdbx: more checking in mdbx_dirtylist_check().
Change-Id: I4bf5b3ee03a816f34000586b760fd7b01994d3aa
2019-10-21 07:50:11 +03:00
Leonid Yuriev
5c54566c5c mdbx: rework/fix retire-to-parent-txn pages (fix LMDB bug).
Change-Id: I81c3d48f19b4c7e62d77cfecc167235374f66402
2019-10-21 07:50:11 +03:00
Leonid Yuriev
659933d0c9 mdbx: rework mdbx_page_flush(), providing flush_begin & flush_end.
Change-Id: Id7366d427d204b444ab76c880ad1c0757a7de94e
2019-10-21 07:50:11 +03:00
Leonid Yuriev
6a01955810 mdbx: rework atomic-ops & safe64_reset_compare() to avoid use libatomic on true-32-bit arches.
Change-Id: I27aa8dc9505a469e35a7fe06660e9944e4c1974c
2019-10-19 00:16:48 +03:00
Leonid Yuriev
a907109cce mdbx: fix MDBX_node for big-endian.
Change-Id: I436fc01e379908df07bcb829f0d9cf6999c8c133
2019-10-16 14:22:38 +03:00
Leonid Yuriev
0f3994d506 mdbx: fix/refine mdbx_is_dirty().
Change-Id: I70bb46b47e7c313fdfd0b130ee55b82dd75e92d2
2019-10-16 11:34:33 +03:00
Leonid Yuriev
b84bb4f805 mdbx: add MDBX_TXNID_STEP macro for debugging.
Change-Id: I4768c8b39f3317ec3a5da8627d736f2f28bf0d51
2019-10-15 23:53:00 +03:00
Leonid Yuriev
8467552f0b mdbx: fix internal audit.
Change-Id: I9b3360216bbfc1a1a6f6052aca78331b01dc80ec
2019-10-15 23:52:17 +03:00
Leonid Yuriev
5f8ecf0144 mdbx: fix Valgrind support.
Change-Id: I246bddb6536fa03e46d302dcdc6700007ffbe06c
2019-10-15 21:54:38 +03:00
Leonid Yuriev
a0e9c33e54 mdbx: rework page loosing/retirement.
Change-Id: I194bee1ba21f5bac53342924f00555620151a43d
2019-10-15 21:54:31 +03:00
Leonid Yuriev
ee77920a2e mdbx: refine loose-pages refunding.
Change-Id: I7b76476e8c0ac3d35c1de53edfc943a14389d167
2019-10-15 21:48:09 +03:00
Leonid Yuriev
06193f4267 mdbx: refine page-number-list checking.
Change-Id: I89524075b416eb8bc63b1e0910baf3a37d6589f4
2019-10-14 17:28:53 +03:00
Leonid Yuriev
137b19aac2 mdbx: workaround for Apple-LLVM bug.
Change-Id: Ib1b504240d71fe20cc306b81b175bbb63737bea0
2019-10-12 23:05:22 +03:00
Leonid Yuriev
3df5f60a70 mdbx: include <malloc_np.h> for FreeBSD & OpenBSD.
Change-Id: I4b9c29bf63a03c281017f50bbdfe3495740804af
2019-10-12 22:47:27 +03:00
Leonid Yuriev
bb922c208c mdbx: add mdbx_is_readahead_reasonable().
Change-Id: Iac090a9050d6b046b62b2c79cefbc70cc62c9144
2019-10-12 22:38:36 +03:00
Leonid Yuriev
c51a6e6d95 mdbx: move madvise(MADV_RANDOM) to under control of MDBX_NORDAHEAD flag.
Change-Id: Ied2473ad054797a20ec2c177106a9a7e85fab1d1
2019-10-12 11:07:21 +03:00
Leonid Yuriev
e04ea50c18 mdbx: refine madvise(MADV_REMOVE_OR_FREE_OR_DONTNEED), add 256K threshold.
Change-Id: I1fe314fa10062dca0870ec035454370bfacf20f0
2019-10-12 11:07:21 +03:00
Leonid Yuriev
f6ba670cd0 mdbx: minor fix for __gnu_linux__.
Change-Id: Ic262bf863927fe86ab0091d809388569f0d59bec
2019-10-12 11:07:21 +03:00
Leonid Yuriev
8921da2787 mdbx: fix internal comments.
Change-Id: Ica95587f74501e78259805cba4393a430af0437b
2019-10-12 11:07:21 +03:00
Leonid Yuriev
4560ddcd1e mdbx: refine ending of read-only transactions.
Change-Id: I56d07d75e4f5f64fd34e5b780024c145eb8299ed
2019-10-12 11:07:21 +03:00
Leonid Yuriev
99e9956410 mdbx: make mdbx_env_set_geometry() behavior equal to LMDB (i.e. fixed size).
Change-Id: I26dfcbb03362dde6fbf4b0f59530ddbf4e2b0723
2019-10-11 16:54:55 +03:00
Leonid Yuriev
8861f1377c mdbx: roundup buffer size inside env_copy2fd().
Change-Id: Iaa9d1adb934d36a28be3804683ffbaf43552d54b
2019-10-11 14:16:49 +03:00
Leonid Yuriev
4d692821cb mdbx: partial workaround for ASAN false-positive (due internal bug).
Change-Id: Ib86e187e58f3efbb5e5da95219f1b6e990022b9a
2019-10-11 14:16:15 +03:00
Leonid Yuriev
3c4d87520e mdbx: drop NEXT_LOOSE_PAGE macro.
Change-Id: Icee989a7bcd89a5fcd2664c6a9a99cdc546cc8f1
2019-10-11 01:06:26 +03:00
Leonid Yuriev
39c1238d8e mdbx: refine Valgrind support (i.e. avoid false-positives).
Change-Id: I688b2e905d0b705c34ab29df29bfd0a9bcdde8c9
2019-10-11 01:06:26 +03:00
Leonid Yuriev
ab01078cd7 mdbx: refine/fix SORT_IMPL macro.
Change-Id: Ifc2968ead891c97442cec85076f7824a285f84b8
2019-10-11 01:06:12 +03:00
Leonid Yuriev
a6aad9c918 mdbx: use malloc_usable_size() and analogues.
Change-Id: I35b3fe0f1a1c884ba2013c9a861057b38f6a2174
2019-10-10 22:36:53 +03:00
Leonid Yuriev
e519b8f315 mdbx: fix memleak after write-txn state rework.
Change-Id: I001d1d82c8091de1420617e98820ca7d6b69fe4a
2019-10-10 22:15:47 +03:00
Leonid Yuriev
e5caec031f mdbx: fix warnings from old/obsolete clang (minor).
Change-Id: I4eaaa45bf2ebd68efb572dad04ba025e2608f968
2019-10-10 00:29:43 +03:00
Leonid Yuriev
273af26244 mdbx: rework nested transactions and write-transaction state.
This resolves https://github.com/leo-yuriev/libmdbx/issues/62

Change-Id: Icbd762ca69ab1ccf8c3440c71931d2ac14599a1b
2019-10-09 23:27:01 +03:00
Leonid Yuriev
1c9c637701 mdbx: refine internal audit for intermediate state checking.
Change-Id: Iba2b7e5b8df09374c9bf941cc5efa1ed6e826288
2019-10-09 13:37:46 +03:00
Leonid Yuriev
cee1aeaf26 mdbx: fix comment typo.
Change-Id: I2c48e039ee0b135966a66aa2f33ba5c4897a4bc3
2019-10-09 13:37:24 +03:00
Leonid Yuriev
64016c86f6 mdbx: add minor assertions info mdbx_env_walk().
Change-Id: Ibeff6a52088fc858d00b6625a2754aceffb1a382
2019-10-09 13:36:50 +03:00
Leonid Yuriev
6efe0686c9 mdbx: fix Coverity warnings.
Change-Id: I70734c5bf7e3d1088522c0dccd88948865f8192f
2019-10-06 19:05:08 +03:00
Leonid Yuriev
7d621f6f0a mdbx: auto-define _GNU_SOURCE under control of MDBX_DISABLE_GNU_SOURCE.
Change-Id: I314d88b86517e3c44ad35fe02d3a27cb987c6d60
2019-10-06 18:45:52 +03:00
Leonid Yuriev
440bfec193 mdbx: allow 256-byte pages.
Change-Id: I697de67683fb040ea0e360515a5a0839d97e9aa6
2019-10-05 23:36:55 +03:00
Leonid Yuriev
8291de71cb mdbx: support keys and dupsort values upto maxnode (half of a page) size.
Change-Id: I7717d55a0d6a7fdc4dc3caba8f8d3ad46a132f61
2019-10-05 23:36:55 +03:00
Leonid Yuriev
d9e1d7f23a mdbx: fix assertions inside pnl_search().
Change-Id: I735e54823b64a1ca03d7132c9ccc4e443d9b25a5
2019-10-04 18:52:15 +03:00
Leonid Yuriev
aa92d6b7e7 mdbx: add paranoid assertions to qsort and bsearch macros.
Change-Id: I68efcf83576dd01e2f0c37ca8afb30967f5369a9
2019-10-04 18:52:15 +03:00
Leonid Yuriev
529d484884 mdbx: fix audit for retired-pages tracking (minor, i.e. false-negative).
Change-Id: Ied44bc18efec7178ca5cc5f3324cfc75be24125a
2019-10-04 18:52:15 +03:00
Leonid Yuriev
39d43a5b57 mdbx: alter mdbx_cursor_put() paths.
Change-Id: I1836f8237162ffa34ce432038131fb6171fb7104
2019-10-04 18:52:15 +03:00
Leonid Yuriev
9e92ea2372 mdbx: add mdbx_page_check().
Change-Id: I8350d774f841726ca967be732593e33bfa8a6230
2019-10-04 18:52:15 +03:00