summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2011-09-21tdb2: change --enable-tdb2-breaks-compat to --enable-tdb2Rusty Russell1-2/+2
Since we no longer break compatibility, don't scare people. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Autobuild-User: Rusty Russell <rusty@rustcorp.com.au> Autobuild-Date: Wed Sep 21 09:25:11 CEST 2011 on sn-devel-104
2011-09-21tdb_compat: add "TDB_COMPAT_USE_TDB2" environment variableRusty Russell1-0/+4
When BUILD_TDB2 is defined, add TDB_VERSION1 flag to all tdb_open() calls, unless this flag is set. This means we use the tdb1 on-disk format unless the user specifically asks for tdb2. We'd love to do this using loadparm, but we need to work with both Samba 3 and Samba 4's loadparm, and they're not unified yet. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2011-09-21tdb_compat: honour hashsize arg when using tdb2 with TDB_VERSION1 flag.Rusty Russell2-3/+10
We use the TDB_ATTRIBUTE_TDB1_HASHSIZE to set the hash size. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2011-09-21tdb_compat: handle TDB_VOLATILE flag.Rusty Russell2-2/+12
This is only meaningful when using the TDB_VERSION1 flag: we set the attribute to control the maximum number of dead records (to 5, which is what TDB_VOLATILE did for tdb1). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2011-09-21tdb_compat: handle TDB_INCOMPATIBLE_HASH flag.Rusty Russell2-2/+12
This is only meaningful when using the TDB_VERSION1 flag: it is done by using a magic hash value (which will fall back to the default hash if that works instead). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2011-09-20tdb2: allow readonly changes even while holding locks.Rusty Russell1-10/+0
This happens in SAMBA with the TDB_VERSION1, presumably due to a read-only traverse nested inside a normal traverse (since it doesn't occur without TDB_VERSION1). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 24e5ddb143fb5e79112649472258f5da67cc7362) Autobuild-User: Rusty Russell <rusty@rustcorp.com.au> Autobuild-Date: Tue Sep 20 09:35:10 CEST 2011 on sn-devel-104
2011-09-20lib/util/charset: remove charset module loadingAndrew Bartlett9-172/+105
Now that the 'table' modules are gone, there is no reason for there to be charset modules at all. This builds the macosxfs and weird modules into the binary at the appropriate times, and changes the tests to test instead the difference between the remaining internal handlers and iconv(). Andrew Bartlett Autobuild-User: Andrew Bartlett <abartlet@samba.org> Autobuild-Date: Tue Sep 20 06:27:06 CEST 2011 on sn-devel-104
2011-09-20lib/util/charcnv: Remove broken internal CP850 and CP464 modulesAndrew Bartlett4-364/+0
These modules are now known to be faulty, and Samba 3.6.0 didn't include support for them, so we now require a system iconv if you wish to support these character sets for the non-ASCII range. Andrew Bartlett
2011-09-19ldb:"ldb_extended" -make the call more similar to "ldb_search"Matthias Dieter Wallnöfer1-2/+6
For example NULL out the LDB result pointer on failures. Signed-off-by: Andrew Tridgell <tridge@samba.org>
2011-09-18swrap: Fix a c++ warningVolker Lendecke1-1/+2
2011-09-18pyldb: Drop unnecessary dependency on pytalloc-util.Jelmer Vernooij2-2/+1
Autobuild-User: Jelmer Vernooij <jelmer@samba.org> Autobuild-Date: Sun Sep 18 17:23:40 CEST 2011 on sn-devel-104
2011-09-15talloc: change version to 2.0.7Stefan Metzmacher3-1/+69
The version change is needed because the ABI file of the pytalloc code was fixed. metze Autobuild-User: Stefan Metzmacher <metze@samba.org> Autobuild-Date: Thu Sep 15 22:32:59 CEST 2011 on sn-devel-104
2011-09-14tdb2: remove bogus leftover .orig file.Rusty Russell1-618/+0
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Autobuild-User: Rusty Russell <rusty@rustcorp.com.au> Autobuild-Date: Wed Sep 14 06:06:41 CEST 2011 on sn-devel-104
2011-09-14tdb_compat: change offset of CLEAR_IF_FIRST lock.Rusty Russell1-2/+2
This makes it match tdb1, which mean it will Just Work as TDB2 gets tdb1 format support. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Autobuild-User: Rusty Russell <rusty@rustcorp.com.au> Autobuild-Date: Wed Sep 14 02:21:29 CEST 2011 on sn-devel-104
2011-09-14tdb_compat: support tdb_reopen/tdb_reopen_all for TDB2Rusty Russell2-3/+49
This matters with the clear-if-first support: we need to re-establish those locks at this point. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2011-09-14tdb2: fix prototypes which return enum TDB_ERROR.Rusty Russell2-10/+10
Since enums and ints are compatible in C, the compiler didn't warn that our prototypes for these functions disagreed with the definitions. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 6d3832ee613adeb9ae7ed6454996ffa39c32650f)
2011-09-14tdb2: fix return handling in pytdb wrapper.Rusty Russell1-8/+10
tdb_close() does genuinely return non-zero, not an error code, even in tdb2. And tdb_exists() returns true or false, not an error code. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2011-09-14tdb2: add error conversion functions.Rusty Russell12-91/+97
This clarifies the code a little, but also provides a more explicit mechanism which can be used to debug error handling (by introducing tdb_err_t and making it a pointer type). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit afa6d57b7d93fe4675a952f556eb462951baa257)
2011-09-14tdb2: set tdb_error() on tdb_transaction_prepare_commit.Rusty Russell1-1/+1
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit feb36b14278b4230af70dab90369a345b6a027ef)
2011-09-14tdb2: make tests work in parallel.Rusty Russell6-6/+6
Lazy cut & paste of tdb names causes failure when we run in parallel. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 380372e733416c2b348d5307f536d0a0807e95df)
2011-09-14tdb2: fix error handling for tdb1_transaction_commit.Rusty Russell1-1/+2
tdb_repack() returns an enum TDB_ERROR, whereas tdb1_transaction_commit is expected to return 0 or -1. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit b679512e4260b9847e2f846b07443e6907d8276f)
2011-09-14tdb2: don't return -1 (ie. TDB_ERR_CORRUPT) on transaction write fail.Rusty Russell1-1/+1
A left-over -1 return; should be returning ecode (probably TDB_ERR_IO). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 077bdae6877d26749987b26a1b5b28cdba5ebbdd)
2011-09-14tdb2: enhance tdb1 porting document.Rusty Russell1-0/+28
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 9cbae0f976118472f0065eee674eacf6ab4b80c5)
2011-09-14tdb2: delete old tdb1 tests.Rusty Russell2-394/+0
These two tdb1-specific tests have been superceded by the TDB_VERSION1 flags used in the main tests. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit e42097b73f6cd509aa17a48487a707401a2d4bd0)
2011-09-14tdb2: test: Speed up run-01-new_database.Rusty Russell2-7/+78
Don't run tdb_check with failtest on, since it is very slow. Do the tdb_check w/ failtest in a new test, but skip MMAP suppression which doesn't add much and slows down valgrind a lot. Before this change run-01-new_database took 40 seconds (under valgrind), after it takes 8 seconds, and run-12-check takes 3 seconds). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit b3ae89992ecaffed31dcc2e912539c289478801a)
2011-09-14tdb2: speed up testing.Rusty Russell2-5/+7
The time to run tests under valgrind has become excessive; particularly the failure tests which fork(). Thus we cut down testing: 1) api-94-repack: reduce from 234 seconds to 2 seconds by cutting iterations, despite adding TDB_VERSION1 tests. 2) api-missing-entries: reduce from 17 seconds to under 1 second by not checking db inside loop, but at end. This reduces the total ccanlint time from 729 to 489 seconds. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit a99c2ccf97465d47c3277d997ea93f20ff97ad4d)
2011-09-14tdb2: test: convert (non-invasive) run tests to api tests.Rusty Russell23-23/+115
This reduces compilation time, since these are merely linked with the pre-built module, rather than recompiling it into the test (which allows for fancy things like failtest). This reduces the test compile time down from about 62 seconds to 45 seconds. Since ccanlint compiles tests three times (once normally, once with coverage, and once with reduced config.h) this makes a difference: we go from 780 seconds to 729 seconds. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit c4ca9f54301c0367891be6330f59fdd5dcdd51d1)
2011-09-14tdb2: test: fix run-57-die-during-transaction.c to be more efficient.Rusty Russell3-3/+18
We track malloc and free, but we didn't catch the free() inside external_agent, which means that our list of allocations keeps growing. Particularly under valgrind, which re-uses memory less than the glibc allocator. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit d9cbd7d4454ae35e4e2f6d18a9469bf26948e4b9)
2011-09-14tdb2: don't continue if tdb1_find fails.Rusty Russell1-16/+37
The TDB1 code's tdb1_find() returns 0 on error; the callers should not assume that the error means that the entry wasn't found, but use last_error to determine it. This was found by looking at how long the failure path testing for test/run-10-simple-store.c was taking under valgrind, ie: valgrind -q ./run-10-simple-store --show-slowest This change dropped the time for that test from 53 seconds to 19 seconds. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 1be090a2d749713cfd0c4584cafb97bffd716189)
2011-09-14tdb2: test: try (almost) all tests with TDB_VERSION1 flag.Rusty Russell33-128/+364
There are some minor changes required, in particular: 1) Make sure lockcheck understands tdb1 allrecord lock upgrades. 2) Handle tdb1 sequence number jumps: various operations increment the sequence number twice, especually tdb_append. 3) Don't test fail on unlock, since it gets triggered with traversal on the tdb1 backend (we didn't actually ever test this case for tdb2). 4) Move clear_if_first to offset 4, to match tdb1. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 818ed29730b030ce79855fc35c212b51adff3180)
2011-09-14tdb2: log allocation failures in tdb1 backend.Rusty Russell4-12/+30
The TDB2 tests are stricter about this; they want every error logged. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 670ba98f74b52df541d153eeab9d3310932e75cd)
2011-09-14tdb2: fix bogus error from tdb_unlockall() after fork in tdb1 backend.Rusty Russell1-3/+3
We're always allowed to unlock after a fork; by setting the count to 0 before calling the generic unlock function we don't trigger the pid check. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit ba5bb8eae6bcd230fd5321c618d6a9d56e74e7d1)
2011-09-14tdb2: check lock owner in tdb1 backend.Rusty Russell3-27/+88
This reports errors if we fork() while holding a lock, or misuse a tdb which we have dual-opened. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit bef6f1b02e95370ecb2cb44be87c82afc9cb74b2)
2011-09-14tdb2: return TDB_ERR_RDONLY from transactions on R/O databases, log nestingRusty Russell2-8/+25
Rather than rturning TDB_ERR_EINVAL, return TDB_ERR_RDONLY, and log when we fail due to nesting. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 27647f94668040d91de377849dce87dabd72be69)
2011-09-14tdb2: add stats to tdb1 backend.Rusty Russell4-5/+26
It's actually quite a good fit; we use compare_wrong_bucket for dead records, which is kind of correct (they should be in the free list). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit a3e4ebff2eb9dc2e386160b8acf77d70236f4def)
2011-09-14tdb2: increment seqnum on tdb_wipe_all in tdb1 backend.Rusty Russell1-0/+1
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 79dee5018a407be1d0674d6108b60f8e8c882b7c)
2011-09-14tdb2: log an error when calling tdb_store() on read-only TDB in tdb1 backend.Rusty Russell1-1/+3
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit b236a8dcc37bb864b632a2898a64f3c9bf75b4ac)
2011-09-14tdb2: catch errors in tdb1_needs_recovery()Rusty Russell3-9/+23
The tdb1 backend simply returns "true" if there's an error determining if a tdb needs recovery. But this leads failtest down a rabbit hole; it's better to return the error at this case (and makes for better for diagnostics, since they will come from the first fault, not later in tdb1_transaction_recover(). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 332d0c29baa6896e67c439aeb47f58a104fbc781)
2011-09-14tdb2: add tdb_attribute_tdb1_max_deadRusty Russell8-68/+41
This allows us to simulate the old "volatile" flag for tdb1. It's not necessary for tdb2. As this is the last function in tdb1.h, we remove that file. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit b8e64e9346793164651a36eccb3c205077e5c91b)
2011-09-14tdb2: expose and document tdb1_incompatible_hash.Rusty Russell2-2/+12
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit a4f2eb983b92b68bcad2a0d640924b8b456e3d69)
2011-09-14tdb2: make tdb1_null static.Rusty Russell3-6/+7
It's only used in two files, make it static in one and do it manually in the other. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 8571daf007f03a2888566dbaae8a5849ffba60f3)
2011-09-14tdb2: tdb_repackRusty Russell6-105/+148
Move the tdb1_repack() code into the core, make it general, rename to tdb_repack(). It's generic code: copy database into temporary, wipe it, copy back. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit e487983a4099b6f760056ff7182f2ff543e6da71)
2011-09-14tdb2: unify tdb1_wipe into tdb_wipe.Rusty Russell3-2/+7
Switch on the TDB_VERSION1 flag. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit b2555a868e3ee58d1b31f9558e3623d49ed2b2f1)
2011-09-14tdb2: unify tdb1_get_seqnum/tdb1_increment_seqnum into ↵Rusty Russell5-5/+60
tdb_get_seqnum/tdb_inc_seqnum Switch on the TDB_VERSION1 flag. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 57359c26e9626aa986ee0538efd13a44a466f39d)
2011-09-14tdb2: unify tdb1_firstkey/tdb1_nextkey into tdb_firstkey/tdb_nextkey.Rusty Russell3-4/+26
Switch on the TDB_VERSION1 flag. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 7366486e29e4f3d89a3e08fc114079d6441af850)
2011-09-14tdb2: unify tdb1_check and tdb1_summary into tdb_check and tdb_summary.Rusty Russell12-40/+62
Switch on the TDB_VERSION1 flag. Also, change tdb1_check's checkfn argument to return an error code (and set tdb->last_error accordingly). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit ef92843f2c74ab9d4fa7f167a2182e5e8955df91)
2011-09-14tdb2: unify tdb1_transaction_start etc. into tdb_transaction_start.Rusty Russell10-30/+50
Switch on the TDB_VERSION1 flag. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 6bc8ea012391198bc3898ae2937558b60dd55906)
2011-09-14tdb2: unify tdb1_parse_record into tdb_parse_recordRusty Russell6-44/+32
Switch on the TDB_VERSION1 flag. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 3352e4e947777d4a90a2dd4f3037e1e494231b25)
2011-09-14tdb2: unify tdb1_chainlock et al. into tdb_chainlockRusty Russell11-71/+57
Switch on the TDB_VERSION1 flag. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit ceb2f3eacbad917ee990afbc3dd800bfb0607887)
2011-09-14tdb2: unify tdb1_traverse into tdb_traverseRusty Russell9-26/+40
Switch on the TDB_VERSION1 flag; we now only do a tdb1_traverse_read on a read-only database, as there is no tdb2 equivalent. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit cc2d609dfca7192305ad477b8c2b52cfdc1aa9be)