summaryrefslogtreecommitdiff
path: root/lib/tdb
AgeCommit message (Collapse)AuthorFilesLines
2010-05-05tdb: fix short write logic in tdb_new_databaseRusty Russell3-17/+17
Commit 207a213c/24fed55d purported to fix the problem of signals during tdb_new_database (which could cause a spurious short write, hence a failure). However, the code is wrong: newdb+written is not correct. Fix this by introducing a general tdb_write_all() and using it here and in the tracing code. Cc: Stefan Metzmacher <metze@samba.org> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-04-21build: make python development headers not mandatory in standalone libsAndrew Tridgell1-1/+1
This needed an update to the python tool in waf thanks to Kai for spotting this
2010-04-20tdb: update tdb ABI to use hide_symbols=TrueAndrew Tridgell5-78/+67
We now use -fvisibilty=hidden to hide symbols from outside the tdb shared library. This also moved tdb_transaction_recover() into the tdb_private.h header, as it should never have been a public API. For that reason we are changing the version number. We're only doing a minor version increment as it is extremely unlikely that anyone was actually using tdb_transaction_recover() as its locking requirements were rather unusual. Pair-Programmed-With: Rusty Russell <rusty@samba.org>
2010-04-18s4-waf: rebuild signature files with the api type mapsAndrew Tridgell1-5/+5
This is not strictly necessary, as the old types would compare equal, but it is neater to use the generic type names
2010-04-18tdb-waf: added ABI checking for tdbAndrew Tridgell2-0/+97
2010-04-13s4-waf: don't try to use the system lib for the library buildAndrew Tridgell1-5/+6
when building library FOO, don't try to find the system library FOO Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
2010-04-13tdb-waf: added build of manpages and config options for RPM buildAndrew Tridgell1-3/+44
Building a RPM from the fedora spec file now works with minimal changes Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
2010-04-12build: use a common autogen-waf.sh for all buildsAndrew Tridgell1-22/+1
the symlink will get updated with the right target when waf dist is used in each directory
2010-04-11subunit: Support formatting compatible with upstream subunit, for consistency.Jelmer Vernooij1-1/+1
Upstream subunit makes a ":" after commands optional, so I've fixed any places where we might trigger commands accidently. I've filed a bug about this in subunit.
2010-04-06s4-waf: fixed waf distcheck for our standalone libs and s4Andrew Tridgell1-0/+4
2010-04-06s4-waf: added simple 'waf test' support for tdb, talloc and ldbAndrew Tridgell1-0/+6
2010-04-06s4-waf: autogen-waf.sh for the standalone library buildsAndrew Tridgell1-0/+22
2010-04-06s4-waf: use a common pattern for finding buildtools and libsAndrew Tridgell1-11/+7
2010-04-06s4-waf: move to a universal method of recursing into subdirsAndrew Tridgell1-3/+3
This works with both standalone lib builds and bundled builds
2010-04-06s4-waf: fixed finding of buildtools and srcdirAndrew Tridgell1-7/+6
2010-04-06s4-waf: avoid having to run waf configure before waf distAndrew Tridgell1-2/+3
This should be useful for building tarballs from a clean checkout
2010-04-06s4-waf: allow standalone tarball build of librariesAndrew Tridgell1-2/+9
2010-04-06s4-waf: added 'waf dist' to our standalone libs as wellAndrew Tridgell1-1/+3
2010-04-06s4-waf: added implied_deps for system librariesAndrew Tridgell1-1/+2
when we use a system version of a library such as talloc, then we no longer get the automtica dependency propogation of talloc implying libreplace. That means we don't get the includes for libreplace, which means things can fail to build. To fix this this change adds an implied_deps option to CHECK_BUNDLED_SYSTEM(), which tells the samba_deps module to add an implied dependency on the listed targets if the system library is chosen.
2010-04-06s4-waf: support the use of system librariesAndrew Tridgell1-5/+10
distros can set --bundled-libraries=NONE to force use of all system libraries. If the right version isn't found then configure will fail. Users may choose which libraries to use from the system, and which to use bundled libs. The default is to try system libs, and use them if their version matches the one in the source tree.
2010-04-06s4-waf: set default for bundled librariesAndrew Tridgell1-1/+2
2010-04-06s4-waf: set the bundled library extension for some libsAndrew Tridgell1-0/+1
2010-04-06s4-waf: mark the wscript files as python so vim/emacs knows how to highlight ↵Andrew Tridgell1-0/+2
them
2010-04-06s4-waf: fdatasync is in librt on solaris8Andrew Tridgell1-1/+1
2010-04-06build: only enable pytdb on s4 buildAndrew Tridgell1-0/+3
2010-04-06build: enable pytdbAndrew Tridgell1-0/+6
2010-04-06build: result of hack session with itaAndrew Tridgell1-1/+1
2010-04-06build: started to split up wafsamba.py into separate modulesAndrew Tridgell1-0/+5
2010-04-06build: added BUILD_SUBDIR() wrapperAndrew Tridgell1-1/+1
2010-04-06build: added ADD_CFLAGS() and started of Samba4 buildAndrew Tridgell1-1/+1
2010-04-06build: tdb does not depend on tallocAndrew Tridgell1-1/+1
2010-04-06build: added waf build rules for ldbAndrew Tridgell1-3/+3
2010-04-06build: neater way to find libreplace and start on tevent waf buildAndrew Tridgell1-9/+16
2010-04-06build: more binaries for waf tdb buildAndrew Tridgell1-0/+12
2010-04-06build: added waf build for tdbAndrew Tridgell1-0/+24
2010-03-26tdb: update exports and signatures filesSimo Sorce2-0/+2
2010-03-26tdb: Add a non-blocking version of tdb_transaction_startVolker Lendecke6-8/+24
2010-03-25tdb: Fix indentation in tdb_new_database()Volker Lendecke1-1/+1
2010-03-25Fix some nonempty blank linesVolker Lendecke10-45/+44
2010-03-25python: use '#!/usr/bin/env python' to cope with varying install locationsAndrew Tridgell2-2/+2
this should be much more portable
2010-03-22tdb: Fix bug 7248, avoid the nanosleep dependencyVolker Lendecke1-4/+4
2010-02-28tdb: If tdb_parse_record does not find a record, return -1 instead of 0Volker Lendecke2-1/+23
2010-02-24tdb: handle processes dying during transaction commit.Rusty Russell3-0/+86
tdb transactions were designed to be robust against the machine powering off, but interestingly were never designed to handle the case where an administrator kill -9's a process during commit. Because recovery is only done on tdb_open, processes with the tdb already mapped will simply use it despite it being corrupt and needing recovery. The solution to this is to check for recovery every time we grab a data lock: we could have gained the lock because a process just died. This has no measurable cost: here is the time for tdbtorture -s 0 -n 1 -l 10000: Before: 2.75 2.50 2.81 3.19 2.91 2.53 2.72 2.50 2.78 2.77 = Avg 2.75 After: 2.81 2.57 3.42 2.49 3.02 2.49 2.84 2.48 2.80 2.43 = Avg 2.74 Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-02-24patch tdb-refactor-tdb_lock-and-tdb_lock_nonblock.patchRusty Russell1-16/+13
2010-02-24tdb: add -k option to tdbtortureRusty Russell1-57/+142
To test the case of death of a process during transaction commit, add a -k (kill random) option to tdbtorture. The easiest way to do this is to make every worker a child (unless there's only one child), which is why this patch is bigger than you might expect. Using -k without -t (always transactions) you expect corruption, though it doesn't happen every time. With -t, we currently get corruption but the next patch fixes that. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-02-24tdb: don't truncate tdb on recoveryRusty Russell1-10/+0
The current recovery code truncates the tdb file on recovery. This is fine if recovery is only done on first open, but is a really bad idea as we move to allowing recovery on "live" databases. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-02-24tdb: remove lock opsRusty Russell4-40/+22
Now the transaction code uses the standard allrecord lock, that stops us from trying to grab any per-record locks anyway. We don't need to have special noop lock ops for transactions. This is a nice simplification: if you see brlock, you know it's really going to grab a lock. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-02-24tdb: rename tdb_release_extra_locks() to tdb_release_transaction_locks()Rusty Russell3-13/+9
tdb_release_extra_locks() is too general: it carefully skips over the transaction lock, even though the only caller then drops it. Change this, and rename it to show it's clearly transaction-specific. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-02-24tdb: cleanup: remove ltype argument from _tdb_transaction_cancel.Rusty Russell1-17/+13
Now the transaction allrecord lock is the standard one, and thus is cleaned in tdb_release_extra_locks(), _tdb_transaction_cancel() doesn't need to know what type it is. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-02-17tdb: tdb_allrecord_lock/tdb_allrecord_unlock/tdb_allrecord_upgradeRusty Russell3-29/+62
Centralize locking of all chains of the tdb; rename _tdb_lockall to tdb_allrecord_lock and _tdb_unlockall to tdb_allrecord_unlock, and tdb_brlock_upgrade to tdb_allrecord_upgrade. Then we use this in the transaction code. Unfortunately, if the transaction code records that it has grabbed the allrecord lock read-only, write locks will fail, so we treat this upgradable lock as a write lock, and mark it as upgradable using the otherwise-unused offset field. One subtlety: now the transaction code is using the allrecord_lock, the tdb_release_extra_locks() function drops it for us, so we no longer need to do it manually in _tdb_transaction_cancel. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>