Commit graph

427 commits

Author SHA1 Message Date
Hallvard Furuseth
4bda1d2461 Clean up SysV semaphore code.
Change MDB_LOCK_FORMAT to differ from Posix semaphores/mutexes.
Do not use array/member length 0 for MDB_txninfo.mt2.
2014-12-01 08:59:29 +01:00
Hallvard Furuseth
443a7e40c4 Fix robust mutexes - repair mti_txnid.
Broken by e3b6c359a9, if
commit() crashes in write_meta before setting mti_txnid.
2014-12-01 08:59:29 +01:00
Hallvard Furuseth
42110d83a9 Simplify recent changes a bit. 2014-12-01 08:59:29 +01:00
Hallvard Furuseth
9a72292ac1 ITS#7961,#7987 Re-fix txn init.
More fallout from 4d02c741b1:
Don't modify another thread's write txn. Reinit me_txn0 fully.
2014-11-28 16:32:23 +00:00
leo@yuriev.ru
9a8eb95674 ITS#7971 LMDB: clarification in mdb_txn_renew0(). 2014-10-18 07:00:52 +01:00
leo@yuriev.ru
bd6d2e6f2c ITS#7970 LMDB: Critical Heisenbug
Inconsistent reading & SIGSEGV due to the race condition.
2014-10-18 06:57:58 +01:00
leo@yuriev.ru
9a80a8a8e8 ITS#7969 LMDB: volatile & __synchronize().
Globally shared fields of meta-data are not 'volatile'.
2014-10-18 06:53:53 +01:00
Howard Chu
925e7805a5 ITS#7959 fix prev commit
fstat returns -1, not an errno. Move code into its own function
for reuse.
2014-10-08 19:25:27 +01:00
Howard Chu
d72b2f5d15 ITS#7961 fix txn init
More fallout from 4d02c741b1
2014-10-04 21:48:49 +01:00
Jean-Christophe DUBOIS
d77e3ddb4d ITS#7959 Check fstat return value
Signed-off-by: Jean-Christophe DUBOIS <jcd@tribudubois.net>
2014-10-03 21:10:49 +01:00
Howard Chu
56c2c160be ITS#7956 fix compact of empty env 2014-10-02 22:11:43 +01:00
Howard Chu
bfe297da47 ITS#7955, #7671 fix MDB_PREV_DUP 2014-10-02 21:58:20 +01:00
Howard Chu
e3b6c359a9 Use robust mutexes by default
Making it optional on pthreads just complicates things;
they're always robust on other implementations
2014-10-01 20:58:15 +01:00
Howard Chu
58ddb5527b Use SysV semaphores instead of POSIX
Since they can cleanup after themselves on process exit
2014-10-01 20:37:25 +01:00
Howard Chu
a53716ed96 Must do dlist_free before releasing Wmutex 2014-10-01 20:36:37 +01:00
Hallvard Furuseth
ec6cf4e40f MDB_ROBUST: Use MDB_PID_T. Drop a wmutex variable. 2014-10-01 20:36:21 +01:00
Howard Chu
f6add293a7 Free write mutex earlier in txn_reset0 2014-10-01 20:36:11 +01:00
Hallvard Furuseth
a2ac10107e Add MDB_ROBUST 2014-10-01 20:35:12 +01:00
Howard Chu
a7639a66a4 Android also only has memalign 2014-09-25 19:25:56 +01:00
Howard Chu
62e4eeb7f7 ITS#7943 reinit txn flags
When reusing the main write txn
2014-09-19 01:45:43 +01:00
Howard Chu
891e662754 Plug leak in 4d02c741b1
Free writer txn on env_close
2014-09-18 01:22:02 +01:00
Quanah Gibson-Mount
5ee99f1125 Change retry to num times 60. Testing shows that on a known dataset, this has the same growth behavior as 2.4.39, while num times 20 resulted in significant growth. 2014-09-13 16:21:17 -05:00
Howard Chu
3646ba966c More for me_pgoldest
Leave it in main env struct, it doesn't need to be rolled back
with nested txns.
2014-09-09 19:44:23 +01:00
Howard Chu
29fd241fad Remember oldest reader txnid
Don't walk the readers table unless we really need to.
2014-09-09 19:40:05 +01:00
Howard Chu
4d02c741b1 Use a single write txn 2014-09-04 10:40:11 +01:00
Howard Chu
a054a194e8 ITS#7913 cleanup
we already checked for data == NULL, drop unnecessary if
2014-08-24 21:18:03 +01:00
Howard Chu
8fbbc71506 More for MIPS
Move CACHEFLUSH, avoid unnecessary if()
2014-08-21 17:40:20 -07:00
Howard Chu
4008e5e583 Partially revert ada2630699
Of course, MacOSX only has posix_memalign, and only in recent versions.
(Older versions could use valloc instead. That precludes ever changing
the LMDB pagesize to be different from the OS pagesize.) Not all that
crucial since it only affects mdb_env_copyfd1.
2014-08-17 20:44:53 -07:00
Hallvard Furuseth
cf4fe3b1fb Microoptimize loose pages 2014-08-17 01:50:32 +02:00
Hallvard Furuseth
1e7eeed28d Fix loose pages in mdb_freelist_save().
Leaving them in dirty_list caused breakage.  Instead merge them
into me_pghead at the end, when no more pages will be allocated.
2014-08-17 00:29:12 +02:00
Hallvard Furuseth
983f896aa7 Split out mdb_midl_xmerge, add MDB_IDL_ALLOCLEN 2014-08-16 11:34:44 +02:00
Howard Chu
322cd26a7b ITS#7917 fix mdb_dbi_open
Don't let dummy go out of scope
2014-08-11 11:00:11 -07:00
Howard Chu
ada2630699 Just use memalign, not posix_memalign
Everything has it. Solaris doesn't have posix_memalign.
2014-08-07 11:06:53 -07:00
Howard Chu
899b23f89d More for MIPS
Do a cacheflush after writing data pages, separate from meta's cacheflush
2014-08-04 11:40:24 -07:00
Howard Chu
ae0c9f484d ITS#7793 more for branch key update 2014-08-04 09:26:35 -07:00
Howard Chu
f21f15e5a0 ITS#7793 update branch key if needed 2014-08-04 04:57:53 -07:00
Howard Chu
9febe03eb5 More for MIPS
Paranoia for 3630066843 do the
cacheflush before setting mti_txnid.
2014-08-02 10:33:35 -07:00
Howard Chu
8498c6cba2 ITS#7913 mdb_cursor_get(*_DUP) cleanup
FIRST_DUP/LAST_DUP should succeed even on non-duplicate values
PREV_DUP should reset cursor's EOF flag.
2014-07-31 09:59:52 -07:00
Howard Chu
3630066843 Fix MIPS cache coherency on Linux
MIPS chips require manual control of on-chip caches. The cacheflush
syscall being used here only exists on MIPS Linux, other OSs will
require revisiting.
2014-07-26 18:16:02 -07:00
Howard Chu
082bac1492 more for mdb_cursor_count
return MDB_NOTFOUND if the cursor is empty
2014-07-24 04:13:55 -07:00
Hallvard Furuseth
6cb1166635 Fix mdb_copy & co when MDB pagesize < OS pagesize 2014-07-24 04:04:24 -07:00
Hallvard Furuseth
81b502e17e ITS#7789 Fix mdb_env_write_meta().
Always write mapsize = max(other metapage:mapsize, env:mapsize).
2014-07-23 17:25:42 -07:00
Howard Chu
7ef970436d Revert ITS#7789 commits, let's try this again.
Revert "ITS#7789 Fix resize vs MDB_NOMETASYNC, and a comment."
Revert "ITS#7789 more"
Revert "Revert "ITS#7789 update RESIZED errmsg text""
Revert "ITS#7789 update RESIZED errmsg text"
Revert "ITS#7789 persist mapsize changes"

This reverts commit 02285aca58.
This reverts commit 38e71c68de.
This reverts commit a5e4eecb1e.
This reverts commit d8e18551c3.
This reverts commit 5926e54bba.
2014-07-23 17:19:33 -07:00
Howard Chu
58e9c3add8 Fix mdb_cursor_count, reject uninit'd cursor 2014-07-21 08:33:59 -07:00
Howard Chu
9049efe493 ITS#7896 fix for mdb_env_map
Don't pass non-NULL map address unless MDB_FIXEDMAP was used.
2014-07-14 09:53:36 -07:00
Howard Chu
886ee41d55 More for cursor EOF
Must also set in sub-cursor if deleting entire subDB
2014-07-09 15:03:54 -07:00
Howard Chu
7f038d0f15 Zero-init copy2 writebuf 2014-07-09 12:05:37 -07:00
Hallvard Furuseth
2825ad64c2 MDB_MAXKEYSIZE = 0 (dynamic value) when MDB_DEVEL 2014-07-09 20:18:08 +02:00
Hallvard Furuseth
b3dedde612 MDB_DEVEL doxygen fix 2014-07-09 20:17:13 +02:00
Hallvard Furuseth
02285aca58 ITS#7789 Fix resize vs MDB_NOMETASYNC, and a comment. 2014-07-09 20:16:33 +02:00