Hallvard Furuseth
cccc947b4a
Try to avoid an invalid datafile after failed init
10 years ago
Hallvard Furuseth
03ddbcf37d
C90-compatible code for SysV semaphores
10 years ago
Leo Yuriev
1a7243b3f4
ITS#7987 fix excessive space for single write txn
10 years ago
Howard Chu
c36c167cc4
ITS#7994 fix prev commit
...
Strip docs promising behaviors that we don't promise to hold.
Strip MDB_txnid_t typedef.
10 years ago
David Barbour
b660491d3f
ITS#7994 Access to current transaction ID.
...
I, David Barbour, hereby place the following modifications to OpenLDAP
Software (and only these modifications) into the public domain. Hence,
these modifications may be freely used and/or redistributed for any
purpose with or without attribution and/or other notice.
10 years ago
Hallvard Furuseth
1413de3a04
Fix SysV semaphores - repair mti_txnid.
...
Similar to 443a7e40c4
.
10 years ago
Hallvard Furuseth
3e6ac6ef6b
For ITS#7789: Ensure mapsize >= pages in use.
...
Check new mapsizes against mm_last_pg. Move
mdb_env_init_meta0() so it can set mm_last_pg earlier.
10 years ago
Hallvard Furuseth
c306423adf
Fix WIN32 -> _WIN32
10 years ago
Hallvard Furuseth
0697869d92
mdb_strerror: Silence warning @ Windows
10 years ago
Hallvard Furuseth
4376a19c5c
Fix comments
10 years ago
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.
10 years ago
Hallvard Furuseth
443a7e40c4
Fix robust mutexes - repair mti_txnid.
...
Broken by e3b6c359a9
, if
commit() crashes in write_meta before setting mti_txnid.
10 years ago
Hallvard Furuseth
42110d83a9
Simplify recent changes a bit.
10 years ago
Hallvard Furuseth
9a72292ac1
ITS#7961,#7987 Re-fix txn init.
...
More fallout from 4d02c741b120786df1b87ee9ed49c1d3f9bc7522:
Don't modify another thread's write txn. Reinit me_txn0 fully.
10 years ago
leo@yuriev.ru
9a8eb95674
ITS#7971 LMDB: clarification in mdb_txn_renew0().
10 years ago
leo@yuriev.ru
bd6d2e6f2c
ITS#7970 LMDB: Critical Heisenbug
...
Inconsistent reading & SIGSEGV due to the race condition.
10 years ago
leo@yuriev.ru
9a80a8a8e8
ITS#7969 LMDB: volatile & __synchronize().
...
Globally shared fields of meta-data are not 'volatile'.
10 years ago
Howard Chu
925e7805a5
ITS#7959 fix prev commit
...
fstat returns -1, not an errno. Move code into its own function
for reuse.
10 years ago
Howard Chu
d72b2f5d15
ITS#7961 fix txn init
...
More fallout from 4d02c741b1
10 years ago
Jean-Christophe DUBOIS
d77e3ddb4d
ITS#7959 Check fstat return value
...
Signed-off-by: Jean-Christophe DUBOIS <jcd@tribudubois.net>
10 years ago
Howard Chu
56c2c160be
ITS#7956 fix compact of empty env
10 years ago
Howard Chu
bfe297da47
ITS#7955, #7671 fix MDB_PREV_DUP
10 years ago
Howard Chu
e3b6c359a9
Use robust mutexes by default
...
Making it optional on pthreads just complicates things;
they're always robust on other implementations
10 years ago
Howard Chu
58ddb5527b
Use SysV semaphores instead of POSIX
...
Since they can cleanup after themselves on process exit
10 years ago
Howard Chu
a53716ed96
Must do dlist_free before releasing Wmutex
10 years ago
Hallvard Furuseth
ec6cf4e40f
MDB_ROBUST: Use MDB_PID_T. Drop a wmutex variable.
10 years ago
Howard Chu
f6add293a7
Free write mutex earlier in txn_reset0
10 years ago
Hallvard Furuseth
a2ac10107e
Add MDB_ROBUST
10 years ago
Howard Chu
a7639a66a4
Android also only has memalign
10 years ago
Howard Chu
62e4eeb7f7
ITS#7943 reinit txn flags
...
When reusing the main write txn
10 years ago
Howard Chu
891e662754
Plug leak in 4d02c741b1
...
Free writer txn on env_close
10 years ago
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.
10 years ago
Howard Chu
3646ba966c
More for me_pgoldest
...
Leave it in main env struct, it doesn't need to be rolled back
with nested txns.
10 years ago
Howard Chu
29fd241fad
Remember oldest reader txnid
...
Don't walk the readers table unless we really need to.
10 years ago
Howard Chu
4d02c741b1
Use a single write txn
10 years ago
Howard Chu
a054a194e8
ITS#7913 cleanup
...
we already checked for data == NULL, drop unnecessary if
10 years ago
Howard Chu
8fbbc71506
More for MIPS
...
Move CACHEFLUSH, avoid unnecessary if()
10 years ago
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.
10 years ago
Hallvard Furuseth
cf4fe3b1fb
Microoptimize loose pages
10 years ago
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.
10 years ago
Hallvard Furuseth
983f896aa7
Split out mdb_midl_xmerge, add MDB_IDL_ALLOCLEN
10 years ago
Howard Chu
322cd26a7b
ITS#7917 fix mdb_dbi_open
...
Don't let dummy go out of scope
10 years ago
Howard Chu
ada2630699
Just use memalign, not posix_memalign
...
Everything has it. Solaris doesn't have posix_memalign.
10 years ago
Howard Chu
899b23f89d
More for MIPS
...
Do a cacheflush after writing data pages, separate from meta's cacheflush
10 years ago
Howard Chu
ae0c9f484d
ITS#7793 more for branch key update
10 years ago
Howard Chu
f21f15e5a0
ITS#7793 update branch key if needed
10 years ago
Howard Chu
9febe03eb5
More for MIPS
...
Paranoia for 3630066843
do the
cacheflush before setting mti_txnid.
10 years ago
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.
10 years ago
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.
10 years ago
Howard Chu
082bac1492
more for mdb_cursor_count
...
return MDB_NOTFOUND if the cursor is empty
10 years ago