Leonid Yuriev
51e7159f36
mdbx: dynamically discarding unused tail pages of DB file.
...
Change-Id: I1a0eee50cd27de26521e65c9f7ea51a527a0424e
2019-08-30 00:01:38 +03:00
Leonid Yuriev
60d6685665
mdbx: fix typo inside mdbx_setup_debug().
...
Change-Id: I1df92033889572cefa6ff6a54ec2cff9d977fc12
2019-08-28 04:56:36 +03:00
Leonid Yuriev
9ddfa4f9c8
mdbx-windows: use PrefetchVirtualMemory().
2019-08-28 02:35:34 +03:00
Leonid Yuriev
fd0c92927a
mdbx: refine usage of posix_fadvise()madvise()/posix_madvise()/F_RDADVISE.
2019-08-27 21:35:43 +03:00
Leonid Yuriev
137d652d77
mdbx: refine attribute-based macros.
2019-08-25 04:37:15 +03:00
Leonid Yuriev
93f82f47bd
mdbx: refine setup_debug(), add MDBX_DBG_LEGACY_MULTIOPEN.
...
Change-Id: I5d144f6fa27b8f5885fa0a0fbd11fe1d44bcc41c
2019-08-25 04:36:28 +03:00
Leonid Yuriev
33a4f31f92
mdbx: fix reclaiming_detent() for out-of-txn case.
...
Change-Id: I5275f4f3676b125e860f6a7c204a5f9cdc65dd5f
2019-08-23 17:46:33 +03:00
Leonid Yuriev
4ceaf842fe
mdbx: add timed auto-sync feature.
...
Change-Id: Ia9b8529fda321d5f78b306f270d157a78f708916
2019-08-23 13:13:20 +03:00
Leonid Yuriev
68e0076ca3
mdbx: rework auto-sync by volume feature.
...
Change-Id: I0a34a65a974f28c6f0a950c11d55a43cfcfcab22
2019-08-23 12:05:09 +03:00
Leonid Yuriev
6f8238e1e9
mdbx: LCK-format version 3.
...
The LCK file is re-created at every opportunity when the process that
opens the database is the only one that works with it. Thus the change
of the format of the file LCK creates only minimal compatibility
problems.
Applications using different versions of _libmdbx_ will be able to work
with one database alternately, but not at the same time. This appears to
be an acceptable inconvenience in exchange for new features.
Change-Id: I9414b3fffd53d5519c8172c57345b1eaf6e51c77
2019-08-23 03:38:11 +03:00
Leonid Yuriev
de88707946
mdbx: don't shrink DB less largest reader inside mdbx_env_set_geometry().
...
Change-Id: I42a5d3a08313fb9590a6730bc0dc06c7b4f16634
2019-08-23 02:34:54 +03:00
Leonid Yuriev
0c63859459
mdbx: minor refine copy_asis().
...
Change-Id: I5d6240a99cba7e16e39f6466a7e582a068ab746a
2019-08-23 02:34:54 +03:00
Leonid Yuriev
65fd8be9b5
mdbx: fix env_sync_ex() for out-of-txn case.
...
Change-Id: Ie19bbe1d467ce4fc83f8dfc1e367070f532ee335
2019-08-23 02:34:45 +03:00
Leonid Yuriev
9168f8c69d
mdbx: fix NULL-deref bug (Coverity).
...
Change-Id: If48f1780d2887b6c2041effc6ca0f158eddb29c2
2019-08-21 02:07:02 +03:00
Leonid Yuriev
ccbf3a2bcf
mdbx: rework mdbx_filesync().
2019-08-20 00:56:06 +03:00
Leonid Yuriev
91088af935
mdbx: initial OSX support.
2019-08-13 02:10:03 +03:00
Leonid Yuriev
bceace7a09
mdbx: clarify shrink/grow-related internals.
2019-08-12 15:44:15 +03:00
Leonid Yuriev
17407c9ecc
mdbx: add mdbx_env_info2(txn) and mdbx_env_stat2(txn).
...
Change-Id: Ifd128185a084c9dc61da140eeeaaf4b6022d3537
2019-08-12 02:55:53 +03:00
Leonid Yuriev
d6a2f98ef5
mdbx: more env-signature checks.
...
Change-Id: I0155821e9b03731f755e43640d8dc9e5c12acf62
2019-08-11 22:54:06 +03:00
Leonid Yuriev
663f3f3c58
mdbx: conditionally use cacheflush() for linux < 2.6.11
...
Change-Id: Id34c67797e14f709f767bf1b687319cd2dfef874
2019-07-22 00:19:15 +03:00
Leonid Yuriev
a6bad26e1d
mdbx: rename/clarify flush_noncoherent_cpu_writeback().
...
Change-Id: I05a5df8d2a283159f449fc1e68a14d0a1861a714
2019-07-21 22:52:21 +03:00
Leonid Yuriev
f39044124e
mdbx: clarify/rework invalidate_mmap_noncoherent_cache() for MIPS.
...
Change-Id: I70c279c2ba67191c7cb93cd8875082eb9c8e58b7
2019-07-21 22:52:16 +03:00
Leonid Yuriev
0b8ac37450
mdbx: reduces number of getpid() calls for checking PID against fork().
...
PID check could be ommited:
- on Linux when madvise(MADV_DONTFORK) is available. i.e. after the fork()
mapped pages will not be available for child process.
- in Windows where fork() not available.
Change-Id: I4dd6bcb209cfc816ae3ec43825ea913d2249663c
2019-07-16 11:52:10 +03:00
Leonid Yuriev
2544a621e7
mdbx: portability - support for non-_GNU_SOURCE mode.
...
Change-Id: I9988d0ea8a9ddc06c799c65c4b2728bd17ff77e7
2019-07-14 15:13:43 +03:00
Leonid Yuriev
97e4f66d16
mdbx: portability - support for musl libc.
...
Change-Id: Ida8a3bd9da896bc6c00bef931ddf3dce65bef8eb
2019-07-14 15:08:10 +03:00
Leonid Yuriev
eefbb7f063
mdbx: remove extra prep_backlog_data() inside update_gc().
...
Change-Id: Ic6250159c5abe03ed0705c7a432c5eb5b17b790e
2019-07-09 15:58:48 +03:00
Leonid Yuriev
4ecf78163d
mdbx: fix/refine mdbx_find_largest().
...
Change-Id: Ib40ca0014da18793be0bdae5133806304ad42819
2019-07-09 03:27:23 +03:00
Leonid Yuriev
53563e75bb
mdbx: fix DB-shrinking race with copy-asis & readers.
...
Change-Id: I1e05616de03d814850a1c8ad20e83941b2d1c911
2019-07-09 00:41:04 +03:00
Leonid Yuriev
bd5078347b
mdbx: refine backlog preparation inside update_gc().
...
Change-Id: Ib18842c2922afba794d6ab69337580bcea29bfe6
2019-07-09 00:41:04 +03:00
Leonid Yuriev
06f16464aa
mdbx-test: adds more jitter while DB opening.
...
Change-Id: Ic0f03f4fbe064ea00f719baa11b28cc24aafcb5b
2019-07-07 21:21:54 +03:00
Leonid Yuriev
8606803344
mdbx: adds paranoid mvcc-checks into read transactions.
...
Change-Id: I7f0f05010306b02b3b1ab8478217de70ffd211a0
2019-07-07 19:51:06 +03:00
Leonid Yuriev
41de36e93d
mdbx: avoids infinite copy_file_range-loop when file is unexpectedly truncated.
...
Change-Id: I5a542a49fa4ac9ced8ca60266a084d52d3618804
2019-07-07 18:42:14 +03:00
Leonid Yuriev
e2f37908b9
mdbx: fix/refine error handling while DB-pages walking.
...
Change-Id: If910e96cc7c30577531aab24b5a9573e5fe9126d
2019-07-06 21:25:11 +03:00
Leonid Yuriev
40112ebd62
mdbx: engage copy_file_range() for env_copy_as_is.
...
Change-Id: I7ea17914d80500ffa70451b80920d726f0e9c2f8
2019-07-01 18:37:36 +03:00
Leonid Yuriev
6960c45e59
mdbx: avoids EFAULT "Bad address" while copy-as-is if DB is swapped-out from RAM.
...
Change-Id: I711efc1c54a04745bd561bc5e1db5e6f6d8b7115
2019-07-01 17:55:58 +03:00
Leonid Yuriev
2e60256978
mdbx: drop EPIPE/SIGPIPE handling (since pipes are disallowed).
...
Change-Id: I56d4539333edea93cc1a2c3606cf959c82b98b19
2019-07-01 16:39:18 +03:00
Leonid Yuriev
38110579ba
mdbx: drops mdbx_write(), using mdbx_pwrite() instead of.
...
Change-Id: Iff3de2d5ef3fa2e92607d46b96d4526e464e593b
2019-07-01 16:39:18 +03:00
Leonid Yuriev
cf004dddbc
mdbx: use single cursor instance inside mdbx_env_walk().
...
Change-Id: I72cade64468a42fd27ebb4955d71ecbbabe64987
2019-06-24 02:14:50 +03:00
Leonid Yuriev
47beba1782
mdbx: more 'unlikely'.
...
Change-Id: I472e4a922590cd4680a48416611cfd894fa120db
2019-06-22 22:23:17 +03:00
Leonid Yuriev
e3f8dc5501
mdbx: rework RECLAIMING inside update_gc().
...
Change-Id: I9cf592476780bfdb346472baa12497d68a3d5aad
2019-06-22 22:23:17 +03:00
Leonid Yuriev
be0ec1d38d
mdbx: fix GC corruption due deep recursive rebalance from update_gc().
...
Change-Id: I810250deb25cd625e737000282b434e3158ef8cc
2019-06-22 02:00:47 +03:00
Leonid Yuriev
eecec74e21
mdbx: more unlikely
(minor).
...
Change-Id: Id6139473b3e6a7c3f099acc64db3180448294d0a
2019-06-21 02:11:28 +03:00
Leonid Yuriev
49d0e872a1
mdbx: iterate & check before recursion inside mdbx_env_pgwalk().
...
Change-Id: I27058a33f6dece0c3f206283a42ff74e5727417f
2019-06-20 21:04:47 +03:00
Leonid Yuriev
2bea60a1a4
mdbx-chk: avoid infinite loop/recursion while checking corrupted DB.
...
Change-Id: I3edb053e4baedced8ce8e8cfa25f9851eaca35d1
2019-06-19 15:08:50 +03:00
Leonid Yuriev
c05702eacf
mdbx: add MDBX_PGWALK-tags and refine pgwalk internals.
...
Change-Id: I1f4eb79463dc6eec3d94d43baab0b28ceefa8c03
2019-06-19 15:05:10 +03:00
Leonid Yuriev
870c2a6f9c
mdbx: symmetrical/invariant mdbx_estimate_range() for MDBX_EPSILON order.
...
Change-Id: Ida7e07d6429576c457bcd4d877a3c38c88dc2771
2019-05-26 00:59:35 +03:00
Leonid Yuriev
e26b7501eb
mdbx: add MDBX_EPSILON support for mdbx_estimate_range().
...
Change-Id: I2d89a9f20bfa16c8f35a4381709bc54f86f0ff67
2019-05-25 19:10:38 +03:00
Leonid Yuriev
6e3725457d
mdbx: fix minor comment typo.
...
Change-Id: I56a465e820a49d13c49fb3bd05add970b0eebb14
2019-03-14 00:13:13 +03:00
Leo Yuriev
73f8839a97
mdbx: minor refine/clarify estimation internals.
2019-03-06 16:45:49 +03:00
Leo Yuriev
501eb8c6ad
mdbx: more __hot/__cold attributes for functions.
2019-03-06 16:45:01 +03:00