Commit Graph

1391 Commits

Author SHA1 Message Date
Leo Yuriev
cd14429b5d mdbx: Merge branch 'master' into nexenta. 2016-05-04 23:09:01 +03:00
Leo Yuriev
ba3bd76a22 mdbx: sync CHANGES with LMDB-0.9.19.
Change-Id: I0e185caab97598215299fee6bb449bc4c41671a0
2016-05-04 22:31:58 +03:00
Leo Yuriev
599069b2c4 mdbx: remove needless assert.
Change-Id: I0129a9e2cd8bda4c541d8b610bcf3f887ddcb75b
2016-05-04 22:31:58 +03:00
Leo Yuriev
2dd9638321 mdbx: refine find_oldest() and oom_kick().
Change-Id: I758eba1a93550b687bbec6bf90e5b2d48090af25
2016-05-04 22:31:58 +03:00
Leo Yuriev
50f5475185 mdbx: don't mimics the MDBX's features for MDB.
Change-Id: Ie3865434c741da77b9a285e43b7d6a1d9ec0c5e2
2016-05-04 22:30:11 +03:00
Leo Yuriev
0a65b26c58 mdbx: Merge branch 'master' into nexenta. 2016-04-28 08:21:43 +03:00
Leo Yuriev
3294da86d7 mdbx: fix typo for clang.
Change-Id: I6973be51cbe04dba0dd993eec9dcfd641919eb83
2016-04-28 08:20:04 +03:00
Leo Yuriev
535dd9eb8c mdbx: reporting 'reading' -> 'detaited'.
Change-Id: I0a88e1b27458e2aba7d6f5249ed779af3dda3a0f
2016-04-27 20:06:26 +03:00
Leo Yuriev
2eccf4140d mdbx: minor refine makefile (most for 'bench' target).
Change-Id: Ic59fc705e430ba6aa5771bc50d3e2bf62e43ae08
2016-04-27 17:49:41 +03:00
Leo Yuriev
78e6bf5e36 mdbx: refine/speedup mdb_cmp_memn().
Change-Id: I2c62246b26485039f29bc400a4d42f05270a7398
2016-04-27 16:08:08 +03:00
Leo Yuriev
477932e2b3 mdbx: MADV_REMOVE for unallocated space.
Change-Id: I14db843cf6e0dc713e2f302dc5ad86dc405c8d62
2016-04-27 01:52:52 +03:00
Leo Yuriev
745bdd346a mdbx: extra backlog's page for MDB_LIFORECLAIM.
Change-Id: I24d656de96a4bc3a3d4f6409db75868b818a4233
2016-04-26 22:48:08 +03:00
Howard Chu
7ae6c0f768 mdbx: backport - ITS#8412 fix NEXT_DUP after cursor_del.
Change-Id: If0bc63a9d398ae440a7a9ab7f0502b9c9608640e
2016-04-26 15:19:26 +03:00
Leo Yuriev
f57a54a301 mdbx: fix mtest1 for backlog-autosync.
After the ae324984cb steady
checkpoint(s) could be created automatically while reserve a
pages for deletion from freeDB.

In other words, some (beginning of list) of modify-ops were
"unexpectedly" synced to disk, despite of the no-sync closing
of DB by the mtest1 - therefore testcase could fail.

Now required rollback at least one of transactions after the
last explicit sync, but not all of ones.

Change-Id: I6ca6dba8a62a30f12f370fa91325efdf4fe35772
2016-04-25 21:02:11 +03:00
Leo Yuriev
bfd82b5830 mdbx: refine mdb_env_sync0().
Change-Id: If27986d02b2ca19ba547fe8fa5c8f4a8b9019900
2016-04-20 19:51:29 +03:00
Howard Chu
78f1fbd038 mdbx: backport - ITS#8406 fix xcursors after cursor_del.
Don't leave them uninit'd if they now point at a valid DUP node

Change-Id: Idccf9540686816e3d06e404c9a5bef1bce059bfc
2016-04-20 19:44:01 +03:00
Leo Yuriev
ae324984cb mdbx: rework backlog for freeDB deletion.
Change-Id: Ib535233313e8ddd21c35df46c03e5e298f3587e6
2016-04-20 19:44:01 +03:00
Leo Yuriev
90aa4b154a mdbx: refine mdbx_cmp2int().
Change-Id: I5497db2e88d764e18a1aae1809dc66fd62a5adbe
2016-04-19 11:59:36 +03:00
Leo Yuriev
026a566fc6 mdbx: minor refine madvise order.
Change-Id: Ia6b78cad2aae68f5cb4c8475fbd27f9a9cb44cf2
2016-04-19 11:59:36 +03:00
Leo Yuriev
80e660317f mdbx: prohibit MDB_LIFORECLAIM with just MDB_NOMETASYNC.
Change-Id: Ib605174bf75c473aaf42b9aa9011db29343e4484
2016-04-19 11:59:36 +03:00
Leo Yuriev
3a8db9fed3 mdbx: -Wextra and fixes.
Change-Id: I9f373e66f8f5f7cf3b29b5246eb2c67e4a49a460
2016-04-19 11:59:36 +03:00
Leo Yuriev
9871e24670 mdbx: refine 'bench' make target.
Change-Id: Ib0594f45ee4b4eedfd18b60483d104913321585e
2016-04-19 11:59:35 +03:00
Leo Yuriev
ef35aae2fe mdbx: minor refine def of cold/hot attributes.
Change-Id: I7ec80dde8b88885d7fb2ce5dbccb3726c4fe62f5
2016-04-19 11:59:35 +03:00
Leo Yuriev
1b780162dc mdbx: minor spaces/tabs.
Change-Id: I9f2c42347ad25ac179bc690d403f02721a6c37ca
2016-04-19 11:59:35 +03:00
Leo Yuriev
bf7f3814f9 mdbx: minor fix non-ascii comment.
Change-Id: Ie9a38e2bef3c8ef91adc3f45818096658c84cd34
2016-04-19 11:59:35 +03:00
Leo Yuriev
46b8915087 mdbx: rework attributes.
Change-Id: Id9d436a54ac14ed82c593710b1d5939871c89d1a
2016-04-13 13:40:35 +03:00
Leo Yuriev
ce06c8df9e mdbx: 'attributes' support for Nexenta.
Change-Id: Ib7a33d6a489d3ef6cfe67349c1ae8946a6a0548a
2016-04-13 13:40:35 +03:00
Howard Chu
ebf1ae1bdc mdbx: backport - mdb_drop optimization.
If we know there are no sub-DBs and no overflow pages, skip leaf scan.

Change-Id: I3005aaf0f80821f87d8a88c435fda1a52ee0557a
2016-04-13 13:26:26 +03:00
Leo Yuriev
828a5d73ca mdbx: always copy the rest of page (MDB_RESERVE case).
Change-Id: Iebc406767bee98a85ab6efec887ed698ffe59066

> On 30. mars 2016 19:25, Леонид Юрьев wrote:
>
> Why mdb_cursor_put() doesn't copy the rest of page in case MDB_RESERVE?
>
> In other words - why we should copy or not copy an end of page in
> dependence from MDB_RESERVE?

2016-03-30 19:46 GMT+03:00 Howard Chu <hyc@symas.com>:

That logic is backwards because I was preserving existing behavior,
i.e. make the page - including unused portions - look the same with
put() in the child txn as put() in the parent.  So with MDB_RESERVE
the entire page must be copied in case the user peeks at it before
writing to it.  Without MDB_RESERVE, the initial part of the page
body need not be copied since LMDB is about to overwrite it.

I'll comment that, unless that code should just go away.  Don't know
if this is the best behavior or it was just easier to code it than
to decide whether to cater to such obscure user behavior.  But
people do come up with special things do do about overflow pages.
2016-04-13 13:12:47 +03:00
Leo Yuriev
c17cff1d4e check MDB_RESERVE against MDB_DUPSORT.
Change-Id: I7459a92ecea867a5fd6510c828ff65cd551a1e9a
2016-03-30 02:32:59 +03:00
Leo Yuriev
b59f25fd46 mdbx: minor format spaces/tabs.
Change-Id: Ic9cce2e7a2552fb062ab8709121c72a9131be8b6
2016-03-30 02:32:50 +03:00
Howard Chu
e7859934f2 mdbx: backport - ITS#8393 fix MDB_GET_BOTH on non-dup record.
Change-Id: I96028ff6de55915bab98a7d0e2d97072296fc769
2016-03-29 23:03:58 +03:00
Leo Yuriev
33e2b52118 mdbx: fix nasty/stupid mistake in cmp-functions.
Change-Id: If9aff5d9cd46dde614ddaa688113be8be12f3e5d
2016-03-29 23:03:58 +03:00
Leo Yuriev
f833877083 mdbx: MDB_val as struct iovec.
Change-Id: I08d9dcabaf88564b367bc2752e596ebea0e7cbf9
2016-03-29 23:03:58 +03:00
Leo Yuriev
321bc2b901 mdbx: fix one more minor warning.
Change-Id: I80466714d739fc46aedbedfee0919b64704ffc37
2016-03-25 05:08:35 +03:00
Leo Yuriev
7d63855793 mdbx: simple ioarena-based benchmark.
https://github.com/pmwkaa/ioarena

Change-Id: I8c0a5a2410e243d49541723afe519dbba12ac68d
2016-03-25 04:56:56 +03:00
Leo Yuriev
e47f52a2f3 mdbx: fix gcc warnings.
Change-Id: Ic9014b947541a4d6c399b0d69dfc495cc98c70a2
2016-03-25 04:56:34 +03:00
Leo Yuriev
6a0c1c47a6 mdbx: fix mdb_kill_page() for MDB_PAGEPERTURB.
This should fix https://github.com/ReOpen/ReOpenLDAP/issues/73

Change-Id: I9514ae76ca3b56063ba345e9d06caed7ec2c1439
2016-03-17 14:47:45 +03:00
Leo Yuriev
e90613a98c mdbx: more __inline/__hot.
Change-Id: I9a0971a6978c958c6d5e9ed2066630f2876f988f
2016-03-17 14:47:11 +03:00
Leo Yuriev
1b7f1bc60a mdbx: drop lead_txnid(), g.e. undo tsan-aware changes.
Change-Id: I18a86661b0bd58bf74c644c0ed96bd836afc040c
2016-03-13 19:31:22 +03:00
Leo Yuriev
14ddec2051 mdbx: refine mdb_env_sync().
Change-Id: I37e6079a94a20624e65aed3e2e599bb4490afcc0
2016-03-13 19:18:54 +03:00
Leo Yuriev
4d9c0657d9 mdbx: refine mdb_meta_head_r().
Change-Id: I038862b3dada408de46f24175513d7522b1f89f5
2016-03-13 19:18:54 +03:00
Leo Yuriev
340da0fd7a mdbx: yota's test.
2014 (C) Copyright Vladimir Romanov, https://www.facebook.com/vvromanov

Change-Id: Ia4cd6cbdd7b7a25c0b217b968337cfd9af721380
2016-03-13 18:24:47 +03:00
Leo Yuriev
c05fb6862d mdbx: mdbx_env_set_syncbytes() only for MDBX-mode.
Change-Id: I7836d4b7b538fc15407122ea40c36a2f8a5ae033
2016-03-12 20:45:16 +03:00
Leo Yuriev
eb429da210 mdbx: minors.
Change-Id: Id1d8ed5bf6ce253dc73b2e69e8701bffa83f7e12
2016-03-12 20:44:20 +03:00
Howard Chu
ded1ada9eb mdbx: backport - Tweak MDB_PREV_MULTIPLE for uninit'd cursor.
Change-Id: I1f07e7c4d80631a1a0b2c70a936ef7b458baa11a
2016-03-03 15:51:46 +03:00
Leo Yuriev
9d775b0a36 mdbx: rework support for ThreadSanitizer.
Change-Id: I6a1cc980fa835215d2051f68bbf8580b747e6d6b
2016-03-03 15:51:46 +03:00
Leo Yuriev
c809b2e12c mdbx: MDB_PAGEPERTURB instead of LDAP_MEMORY_DEBUG.
Change-Id: I87d2c0518c11f8ff27e5064b4d59900dfd2131fc
2016-03-03 14:38:44 +03:00
Leo Yuriev
a0435cfd71 mdbx: mdbx_chk - empty freedb record isn't an error.
Change-Id: Ic3e2d2d266b23e5bdd4f5ec5062cfb9c07f162c7
2016-02-09 09:28:23 +03:00
Leo Yuriev
c9642d1082 mdbx: MDB_PAGEPERTURB.
Change-Id: Id78304cb1f5caa3231e69388f6ce29a431e39976
2016-02-09 09:28:18 +03:00