Leonid Yuriev
6f0a11f155
mdbx: merge branch 'osx-try'.
...
This resolves https://github.com/leo-yuriev/libmdbx/issues/49 .
Change-Id: Ib20c3898e99ca229f10e7d41cda3989b8b4a832c
2019-08-20 03:18:31 +03:00
Leonid Yuriev
657d37c9e3
mdbx: add MDBX_OSX_SPEED_OR_DURABILITY build-time #define for MacOS.
2019-08-20 02:48:30 +03:00
Leonid Yuriev
ccbf3a2bcf
mdbx: rework mdbx_filesync().
2019-08-20 00:56:06 +03:00
Leonid Yuriev
261f697d8c
mdbx: skip msync(MS_ASYNC) on Linux > 2.6.19.
...
Change-Id: Ic1f631ef856a09cf62353c2b0092b0341ecf4fa2
2019-08-19 21:31:23 +03:00
Leonid Yuriev
226cb3ac90
mdbx: use F_FULLFSYNC on MacOS.
2019-08-19 20:41:02 +03:00
Leonid Yuriev
91088af935
mdbx: initial OSX support.
2019-08-13 02:10:03 +03:00
Leonid Yuriev
7960f67ea6
mdbx-chk: "backed-pages > file-pages" isn't error in the non-exclusive or read-only modes.
2019-08-12 15:44:15 +03:00
Leonid Yuriev
bceace7a09
mdbx: clarify shrink/grow-related internals.
2019-08-12 15:44:15 +03:00
Leonid Yuriev
5244c1a9c2
mdbx-chk: "backed-pages less filesize" isn't an error on Windows.
...
Change-Id: Iea212a469225b0617221cdf292352eb1f896b4c6
2019-08-12 12:23:02 +03:00
Leonid Yuriev
cfaed9d761
mdbx-chk: don't use internal mdbx_filesize().
...
Change-Id: I539b92f345ba7884629b702b2568ca805466be3a
2019-08-12 11:40:58 +03:00
Leonid Yuriev
5b09105a6d
mdbx-chk: check filesize/backed-pages/alloc-pages.
...
Change-Id: I231e461d81d3157441f67d2c28470283eb68920a
2019-08-12 02:55:53 +03:00
Leonid Yuriev
bc3d1a84cc
mdbx-chk: use mdbx_env_stat2() and mdbx_env_stat2() to avoid races.
...
Change-Id: Ib956c19bec0b8bf9999cf1e97b8b630f119a0906
2019-08-12 02:55:53 +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
a6449f36f6
mdbx-chk: more for false-positive 'wrong idl entry' fix.
...
Change-Id: I66e42a98c8f4a5c58e12adb666984fed8a70bece
2019-08-11 21:41:01 +03:00
Leonid Yuriev
69f831af0b
mdbx: refine lck-posix implementation.
2019-08-11 19:13:29 +03:00
Leonid Yuriev
036144eed4
mdbx-chk: fix false-positive 'wrong idl entry' error(s).
...
Исторически mdbx_env_info() получает информацию вне контекста
транзакции. Поэтому транзакция чтения, внутри которой проверяются записи
GC, может быть не последней. При этом в более новых транзакциях
последние страницы могут быть возвращены в пул нераспределенных с
уменьшением номера последней выделенной страницы. Тогда в проверяемом
снимке в записях GC могут быть номера страниц больше, чем возвращает
mdbx_env_info() в поле mi_last_pgno, что трактовалось в mdbx_chk как
ошибка.
Change-Id: I51ae102603e1eda77d6b6d511e2094410ab8c2c2
2019-08-11 16:49:15 +03:00
Leonid Yuriev
8917fb30bf
mdbx: make lck-wait ops breakable for linux/posix.
...
Change-Id: Ieb113f3c01bceced99b122988f93331d5619c2be
2019-08-11 12:22:41 +03:00
Leonid Yuriev
bf0e0382fc
mdbx: use O_DIRECT for db-copy.
...
Change-Id: Ib17fcdc2eba3382ed841a1e5e0a4f69f88c2491d
2019-08-11 01:14:52 +03:00
Leonid Yuriev
bdc77df921
mdbx: fix race-with-close for lck-posix.
...
Change-Id: Ie601ebbec8cc47d26935e12a57abe991aec1cb41
2019-08-11 00:07:21 +03:00
Leonid Yuriev
673f867e3c
mdbx: minor refine Linux lck-implementation.
...
Change-Id: Ib95398f8d86eb94fc55b506066f78eda4a29f4a8
2019-08-10 23:25:17 +03:00
Leonid Yuriev
c6369e68a3
mdbx: draft support for non-Linux POSIX-platforms (FreeBSD, MacOS, etc).
...
Change-Id: Iaee2dc31b134fe92fc67508d011835a60f3723e6
2019-08-10 23:24:31 +03:00
Leonid Yuriev
ce64c5aa37
mdbx: use OFD (open file) locks on Linux.
...
Change-Id: Id9718da28d4e367b0ff10976d2afaaf3d18122fb
2019-08-10 12:53:16 +03:00
Leonid Yuriev
a008b0b16f
mdbx: description of lck-implementation for Linux.
...
Change-Id: I8fe5f49a19e5cc61198ecd96dfe479d0e17c10a5
2019-08-09 21:36:02 +03:00
Leonid Yuriev
1798904cf4
mdbx: description of internal lck API.
...
Change-Id: Ic677ba62ca566409a44234a1c0d8b0b41158fe86
2019-08-09 21:34:19 +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
4adb1ab2d8
mdbx: portability - rename lck-posix.c to lck-linux.c
...
Change-Id: I0ecee2b1a5d8e664eb795e5f5df2fa2d3cb73c83
2019-07-15 00:29:46 +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
41f00485fd
mdbx: portability - allows operation without mremap().
...
Change-Id: I7fed42d51259e582e9dbc401c78f7f829a80f71c
2019-07-14 15:11:59 +03:00
Leonid Yuriev
97e4f66d16
mdbx: portability - support for musl libc.
...
Change-Id: Ida8a3bd9da896bc6c00bef931ddf3dce65bef8eb
2019-07-14 15:08:10 +03:00
Leonid Yuriev
cf7160bda2
mdbx: portability - don't include malloc.h
on BSD.
...
Change-Id: I67f580c073bfe52fbd2e4ff599354e6d0f597e95
2019-07-14 15:08:02 +03:00
Leonid Yuriev
097b274aa4
mdbx: portability - use C11 aligned_alloc().
...
Change-Id: I61819614ce355c8a2597c9b26997458b3d16081c
2019-07-14 15:07:54 +03:00
Leonid Yuriev
8f7ea1844b
mddx: portability - compatibility with BSD-style __assert().
...
Change-Id: Ic18f2de8a23597c62fab07041aeb62960e82c37a
2019-07-14 15:07:47 +03:00
Leonid Yuriev
b3286bad16
mdbx: portability - fix __dll_hidden/__hidden typo.
...
Change-Id: Iccd225d8c77eafdccc7f021809c26843974153e4
2019-07-14 15:07:16 +03:00
Leonid Yuriev
3ac2af61aa
mdbx: cleanup msvc-compat feature test defs.
...
Change-Id: I2c61bcecedc32beb3b0d70180da9e52cb7e6c9eb
2019-07-13 12:07:14 +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
1f89c494ff
mdbx: refines OFF_T_MAX if it is not defined.
...
Change-Id: Ic453140e01725493cad0c98e73244c747d5f490e
2019-07-07 20:04:39 +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
7e1e142104
mdbx-chk: fix/refine error handling for sub-DBs.
...
Change-Id: I42460793bbe47815add1b3f61f3746f671a749d9
2019-07-07 01:47:10 +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