summaryrefslogtreecommitdiff
path: root/lib/tdb
AgeCommit message (Collapse)AuthorFilesLines
2010-09-27tdb: fix non-WAF build, commit 1.2.6 ABI file.Rusty Russell2-1/+62
Sorry Jeremy. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-09-27tdb: TDB_INCOMPATIBLE_HASH, to allow safe changing of default hash.Rusty Russell6-6/+23
This flag to tdb_open/tdb_open_ex effects creation of a new database: 1) Uses the Jenkins lookup3 hash instead of the old gdbm hash if none is specified, 2) Places a non-zero field in header->rwlocks, so older versions of TDB will refuse to open it. This means that the caller (ie Samba) can set this flag to safely change the hash function. Versions of TDB from this one on will either use the correct hash or refuse to open (if a different hash is specified). Older TDB versions will see the nonzero rwlocks field and refuse to open it under any conditions. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-09-27tdb: automatically identify Jenkins hash tdbsRusty Russell1-14/+27
If the caller to tdb_open_ex() doesn't specify a hash, and tdb_old_hash doesn't match, try tdb_jenkins_hash. This was Metze's idea: it makes life simpler, especially with the upcoming TDB_INCOMPATIBLE_HASH flag. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-09-27tdb: add Bob Jenkins lookup3 hash as helper hash.Rusty Russell7-18/+447
This is a better hash than the default: shipping it with tdb makes it easy for callers to use it as the hash by passing it to tdb_open_ex(). This version taken from CCAN and modified, which took it from http://www.burtleburtle.net/bob/c/lookup3.c. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-09-23tdb: add restoreVolker Lendecke5-2/+310
Based on an idea by Simon McVittie, largely rewritten
2010-09-20lib/tdb: fix c++ build warning in tdb_header_hash().Günther Deschner1-1/+1
Guenther
2010-09-19pytdb: Make filename argument optional.Jelmer Vernooij2-13/+15
2010-09-19pytdb: Add support for tdb_freelist_size()Kirill Smelkov2-0/+9
Cc: 597386@bugs.debian.org Signed-off-by: Kirill Smelkov <kirr@landau.phys.spbu.ru> Signed-off-by: Jelmer Vernooij <jelmer@samba.org>
2010-09-19pytdb: Add support for tdb_transaction_prepare_commit()Kirill Smelkov2-0/+18
Cc: 597386@bugs.debian.org Signed-off-by: Kirill Smelkov <kirr@landau.phys.spbu.ru> Signed-off-by: Jelmer Vernooij <jelmer@samba.org>
2010-09-19pytdb: Add support for tdb_enable_seqnum, tdb_get_seqnum and ↵Kirill Smelkov2-0/+30
tdb_increment_seqnum_nonblock Cc: 597386@bugs.debian.org Signed-off-by: Kirill Smelkov <kirr@landau.phys.spbu.ru> Signed-off-by: Jelmer Vernooij <jelmer@samba.org>
2010-09-19pytdb: Update open flags to match those for tdb_open() in tdb.hKirill Smelkov1-0/+6
Namely TDB_NOSYNC, TDB_SEQNUM, TDB_VOLATILE, TDB_ALLOW_NESTING and TDB_DISALLOW_NESTING were missing. Cc: 597386@bugs.debian.org Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru> Signed-off-by: Jelmer Vernooij <jelmer@samba.org>
2010-09-19pytdb: Fix repr segfault for internal dbKirill Smelkov2-1/+11
The problem was tdb->name is NULL for TDB_INTERNAL databases, and so it was crashing ... #0 0xb76944f3 in strlen () from /lib/i686/cmov/libc.so.6 #1 0x0809862b in PyString_FromFormatV (format=0xb72b6a26 "Tdb('%s')", vargs=0xbfc26a94 "") at ../Objects/stringobject.c:211 #2 0x08098888 in PyString_FromFormat (format=0xb72b6a26 "Tdb('%s')") at ../Objects/stringobject.c:358 #3 0xb72b65f2 in tdb_object_repr (self=0xb759e060) at ./pytdb.c:439 Cc: 597089@bugs.debian.org Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru> Signed-off-by: Jelmer Vernooij <jelmer@samba.org>
2010-09-19pytdb: Add support for tdb_add_flags() & tdb_remove_flags()Kirill Smelkov2-0/+27
Note, unlike tdb_open where flags is `int', tdb_{add,remove}_flags want flags as `unsigned', so instead of "i" I used "I" in PyArg_ParseTuple. Cc: 597386@bugs.debian.org Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru> Signed-off-by: Jelmer Vernooij <jelmer@samba.org>
2010-09-16tdb: added TDB_NO_FSYNC env variableAndrew Tridgell1-0/+4
this might help reduce test times and load on test machines
2010-09-14tdb: add ABI/tdb-1.2.4.sigsStefan Metzmacher1-0/+60
metze
2010-09-13lib/tdb: change version to 1.2.4 after hash checking improvmentsStefan Metzmacher2-2/+2
lib/tdb: change version to 1.2.4 after hash checking improvments metze Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-09-13tdb: put example hashes into header, so we notice incorrect hash_fn.Rusty Russell3-2/+65
This is Stefan Metzmacher <metze@samba.org>'s patch with minor changes: 1) Use the TDB_MAGIC constant so both hashes aren't of strings. 2) Check the hash in tdb_check (paranoia, really). 3) Additional check in the (unlikely!) case where both examples hash to 0. 4) Cosmetic changes to var names and complaint message. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-09-13tdb: fix tdb_check() on other-endian tdbs.Rusty Russell1-1/+1
We must not endian-convert the magic string, just the rest. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-09-13tdb: fix tdb_check() on read-only TDBs to actually work.Rusty Russell1-5/+17
Commit bc1c82ea137 "Fix tdb_check() to work with read-only tdb databases." claimed to do this, but tdb_lockall_read() fails on read-only databases. Also make sure we can still do tdb_check() inside a transaction (weird, but we previously allowed it so don't break the API). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-09-13tdb: make check more robust against recovery failures.Rusty Russell1-5/+36
We can end up with dead areas when we die during transaction commit; tdb_check() fails on such a (valid) database. This is particularly noticable now we no longer truncate on recovery; if the recovery area was at the end of the file we used to remove it that way. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-08-31tdb/waf: the deps for rt are provided by libreplaceBjörn Jacke1-1/+1
2010-08-22Use DocBook DTD rather than Samba one, as no Samba-specific things areJelmer Vernooij3-3/+3
used in the tdb manpages.
2010-08-14tdb: workaround starvation problem in locking entire database.Rusty Russell4-19/+131
We saw tdb_lockall() take 71 seconds under heavy load; this is because Linux (at least) doesn't prevent new small locks being obtained while we're waiting for a big log. The workaround is to do divide and conquer using non-blocking chainlocks: if we get down to a single chain we block. Using a simple test program where children did "hold lock for 100ms, sleep for 1 second" the time to do tdb_lockall() dropped signifiantly. There are ln(hashsize) locks taken in the contended case, but that's slow anyway. More analysis is given in my blog at http://rusty.ozlabs.org/?p=120 This may also help transactions, though in that case it's the initial read lock which uses this gradual locking routine; the update-to-write-lock code is separate and still tries to update in one go. Even though ABI doesn't change, minor version bumped so behavior change can be easily detected. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-08-13tdb: add TDB_DEPS variable filled with required librariesBjörn Jacke3-7/+14
This is required for Solaris, which needs to link in librt to make use of fdatasync().
2010-07-29Fix tdb_check() to work with read-only tdb databases. The function ↵Jeremy Allison1-3/+3
tdb_lockall() uses F_WRLCK internally, which doesn't work on a fd opened with O_RDONLY. Use tdb_lockall_read() instead. Jeremy.
2010-07-01tdb: fix the build on mac os x 10.6.4.Günther Deschner1-0/+4
Guenther
2010-06-24s4-ldb: use CHECK_XSLTPROC_MANPAGES()Andrew Tridgell1-2/+1
2010-06-19pytdb: Cleanup formatting.Jelmer Vernooij1-3/+8
2010-06-19wafsamba: Fix typo: noextenion -> noextension.Jelmer Vernooij1-1/+1
2010-05-31tdb-waf: Don't install binaries when using system tdb.Jelmer Vernooij1-17/+17
2010-05-31tdb-waf: Simplify manpage handling.Jelmer Vernooij1-17/+4
2010-05-31s4-waf: sanitize library names like the old build system did, only addJelmer Vernooij1-1/+1
-samba4 suffix for libraries that are bundled.
2010-05-11tdb: commit ABI/tdb-1.2.2.sigsStefan Metzmacher1-0/+60
metze
2010-05-11tdb: remove unused variable in tdb_new_database().Günther Deschner1-1/+0
Guenther
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