Rusty Russell [Wed, 7 Oct 2009 12:28:14 +0000 (22:58 +1030)]
Web updates.
Rusty Russell [Wed, 7 Oct 2009 12:27:06 +0000 (22:57 +1030)]
tdb: avoid checkfn on dead records, reorganize and comment code.
Add test for non-mmap tdbs.
Rusty Russell [Tue, 6 Oct 2009 09:14:58 +0000 (19:44 +1030)]
ccan/tdb: tdb_check() function.
Rusty Russell [Wed, 30 Sep 2009 03:18:11 +0000 (12:48 +0930)]
sparse_bsearch: new module
Rusty Russell [Wed, 30 Sep 2009 03:17:22 +0000 (12:47 +0930)]
typesafe_cb: more support for typesafe compare functions.
Rusty Russell [Wed, 30 Sep 2009 02:24:47 +0000 (11:54 +0930)]
Fix documentation: actually, always evaluates to 0.
Rusty Russell [Tue, 29 Sep 2009 03:41:15 +0000 (13:11 +0930)]
tools: more build convenience work
add EXCLUDES= with more obscure modules.
use ccanlint for "make check", finally.
Rusty Russell [Tue, 29 Sep 2009 03:24:29 +0000 (12:54 +0930)]
tools: fix compile warning under Ubuntu
Rusty Russell [Tue, 29 Sep 2009 02:21:28 +0000 (11:51 +0930)]
tdb: remove seqnum field from header
Unused since " tdb: no longer need seqnum store hack as we can read after prepare."
Rusty Russell [Mon, 28 Sep 2009 04:20:25 +0000 (13:50 +0930)]
Fix "make check": this is temporary until we use ccanlint for it.
Rusty Russell [Mon, 28 Sep 2009 03:46:35 +0000 (13:16 +0930)]
More test fixes.
Rusty Russell [Fri, 25 Sep 2009 08:21:31 +0000 (17:51 +0930)]
tap: pass tests after ccanlint changes.
Rusty Russell [Fri, 25 Sep 2009 08:21:06 +0000 (17:51 +0930)]
Now we compile everything into the tmp dir.
Rusty Russell [Fri, 25 Sep 2009 07:41:10 +0000 (17:11 +0930)]
ccan_depends: Fix up after tools changes.
Rusty Russell [Fri, 25 Sep 2009 07:34:04 +0000 (17:04 +0930)]
ccanlint: only compile _info once; speeds tdb test from 18 to 16 seconds.
Generally clean up temp file handling.
Rusty Russell [Fri, 25 Sep 2009 05:33:01 +0000 (15:03 +0930)]
Use -O not -O3: reduces ccan/tdb test time from 24 to 18 seconds.
Rusty Russell [Fri, 25 Sep 2009 05:31:46 +0000 (15:01 +0930)]
ccanlint: don't use total_score to separate kinds of tests; we have subdirs
Rusty Russell [Fri, 25 Sep 2009 05:03:08 +0000 (14:33 +0930)]
ccanlint: compile and run tests.
This means we should skip building if there are no C files in module: running tests requires building the module, but not necessarily that it has any C files.
Rusty Russell [Fri, 25 Sep 2009 04:58:48 +0000 (14:28 +0930)]
tdb: no longer need seqnum store hack as we can read after prepare.
Rusty Russell [Fri, 25 Sep 2009 03:16:08 +0000 (12:46 +0930)]
tdb: allow reads after prepare commit
(Imported from SAMBA commit
46c99ec2a3781d53138245182345c6c2ddd9a258:
From: Andrew Tridgell <tridge@samba.org>
Date: Tue, 15 Sep 2009 14:04:22 -0700
We previously only allowed a commit to happen after a prepare
commit. It is in fact safe to allow reads between a prepare and a
commit, and the s4 replication code can make use of that, so allow it.
Rusty Russell [Sat, 12 Sep 2009 01:27:44 +0000 (10:57 +0930)]
Build tests for ccan.
More sophisticated skipping: skip dependencies when one fails as well.
Allow tests to change their total_score; only access it after running (other than to check it's non-zero).
Rusty Russell [Tue, 8 Sep 2009 11:51:18 +0000 (21:21 +0930)]
Don't run dependent tests if one fails.
Rusty Russell [Tue, 8 Sep 2009 11:42:03 +0000 (21:12 +0930)]
Dependency checking (make sure .o files exist, prereq to building)
Rusty Russell [Tue, 8 Sep 2009 10:59:37 +0000 (20:29 +0930)]
Fix grab_file on other than regular files.
Rusty Russell [Tue, 8 Sep 2009 07:39:10 +0000 (17:09 +0930)]
Idris' dependency work.
Rusty Russell [Wed, 19 Aug 2009 01:19:29 +0000 (10:49 +0930)]
tdb: fix ecode setting on nonblocking brlock
This bug was introduced in "Wean off TDB_ERRCODE.".
Rusty Russell [Wed, 19 Aug 2009 01:16:43 +0000 (10:46 +0930)]
tdb: fix the unlock calls on the GLOBAL_LOCK from previous commit.
Despite the name, they're simple byte locks, not whole-file.
Rusty Russell [Tue, 18 Aug 2009 11:41:53 +0000 (21:11 +0930)]
tdb: benchmark target.
Rusty Russell [Tue, 18 Aug 2009 08:43:33 +0000 (18:13 +0930)]
tdb: fix locking unlocking error introduced in cleanup
Rusty Russell [Tue, 18 Aug 2009 04:07:47 +0000 (13:37 +0930)]
tdb: locking cleanup
Explicitly split lock and unlock, for future replacement with user-supplied functions.
Use explicit flags enum for marking, blocking and probing.
Indicate upon unlock whether we had a read or write lock (POSIX doesn't care, but
wrappers might, and it's nice to be explicit).
Rusty Russell [Tue, 18 Aug 2009 02:31:18 +0000 (12:01 +0930)]
Don't rely on terrible dup2 trick, use proper infrastructure for external agent.
Rusty Russell [Tue, 11 Aug 2009 11:59:38 +0000 (21:29 +0930)]
Use _ convention everywhere: lock.c uses it already.
Rusty Russell [Tue, 11 Aug 2009 11:58:51 +0000 (21:28 +0930)]
Increase max size: I actually hit this with a large file.
Rusty Russell [Tue, 11 Aug 2009 11:57:57 +0000 (21:27 +0930)]
Fix multiply by three error, stat to get initial size.
Rusty Russell [Tue, 11 Aug 2009 10:56:04 +0000 (20:26 +0930)]
Handle pre-existing records, wipe_all and repack (ldb users.ldb trace)
Rusty Russell [Tue, 11 Aug 2009 01:42:38 +0000 (11:12 +0930)]
Port nested transaction allow from newer ctdb.
ie.
f1c6f7dd47bb1081781c0a0d567a92bbbc0aa5d5 (Revert "add TDB_NO_NESTING...")
and
3e49e41c21eb8c53084aa8cc7fd3557bdd8eb7b6 (New attempt at TDB transaction nesting allow/disallow).
Rusty Russell [Wed, 5 Aug 2009 01:36:58 +0000 (11:06 +0930)]
Don't overwrite tdbs with different version numbers.
In future, this may happen, and we don't want to clobber them.
Rusty Russell [Tue, 4 Aug 2009 06:14:16 +0000 (15:44 +0930)]
Make TDB 32 bit clean (not just 31 bit) for systems with 64 bit file offsets.
Rusty Russell [Tue, 4 Aug 2009 04:05:47 +0000 (13:35 +0930)]
New test for endianness.
Rusty Russell [Tue, 4 Aug 2009 03:52:28 +0000 (13:22 +0930)]
Wean off TDB_ERRCODE.
It was a regrettable hack to reduce line count in tdb; in fact it caused confusion as can be seen in this patch.
In particular, ecode now needs to be set before TDB_LOG.
Also, we should never set errno, as io.c was doing.
Rusty Russell [Tue, 4 Aug 2009 02:28:22 +0000 (11:58 +0930)]
stringmap: fail path can print uninitialized var in test.
Rusty Russell [Wed, 29 Jul 2009 23:20:38 +0000 (08:50 +0930)]
Import from SAMBA tdb:
commit
a6cc04a20089e8fbcce138c271961c37ddcd6c34
Author: Andrew Tridgell <tridge@samba.org>
Date: Mon Jun 1 13:13:07 2009 +1000
overallocate all records by 25%
This greatly reduces the fragmentation of databases where records
tend to grow slowly by a small amount each time. The case where this
is most seen is the ldb index records. Adding this overallocation
reduced the size of the resulting database by more than 20x when
running a test that adds 10k users.
Rusty Russell [Wed, 29 Jul 2009 23:18:53 +0000 (08:48 +0930)]
Import from SAMBA tdb:
commit
a386173fa1c7c5bcc11ea9260d84b6c52c154b3d
Author: Andrew Tridgell <tridge@samba.org>
Date: Mon Jun 1 13:11:39 2009 +1000
auto-repack in transactions that expand the tdb
The idea behind this is to recover from badly fragmented free
lists. Choosing the point where the file expands is fairly arbitrary,
but seems to work well.
Rusty Russell [Wed, 29 Jul 2009 23:17:27 +0000 (08:47 +0930)]
Import from SAMBA tdb:
commit
936d76802f98d04d9743b2ca8eeeaadd4362db51
Author: Andrew Tridgell <tridge@samba.org>
Date: Tue Dec 16 14:38:17 2008 +1100
imported the tdb_repack() code from CTDB
The tdb_repack() function repacks a TDB so that it has a single
freelist entry. The file doesn't shrink, but it does remove all
freelist fragmentation. This code originated in the CTDB vacuuming
code, but will now be used in ldb to cope with fragmentation from
re-indexing
Rusty Russell [Wed, 29 Jul 2009 23:05:31 +0000 (08:35 +0930)]
Fix up non-TDB_TRACE compile.
Rusty Russell [Wed, 29 Jul 2009 23:03:00 +0000 (08:33 +0930)]
Turn off TDB_TRACE again (shouldn't have left it on in commit)
Rusty Russell [Wed, 29 Jul 2009 22:54:12 +0000 (08:24 +0930)]
Remove const warning
Rusty Russell [Wed, 29 Jul 2009 22:49:27 +0000 (08:19 +0930)]
Don't fail mysteriously on existing trace file.
Rusty Russell [Wed, 29 Jul 2009 12:52:31 +0000 (22:22 +0930)]
Import from SAMBA tdb:
commit
4b4fec65db4e202afa13b2d15867f4d8a54d154e
Author: Andrew Tridgell <tridge@samba.org>
Date: Thu May 28 16:08:28 2009 +1000
make TDB_NOSYNC affect all the fsync/msync calls in transactions
During a transaction commit tdb normally uses fsync/msync calls to
make it crash safe. This can be disabled using the TDB_NOSYNC flag,
but it wasn't disabling all the code paths that caused a fsync/msync.
Rusty Russell [Wed, 29 Jul 2009 12:51:34 +0000 (22:21 +0930)]
Import from SAMBA's tdb:
commit
a91bcbccf8a2243dac57cacec6fdfc9907580f69
Author: Jim McDonough <jmcd@samba.org>
Date: Thu May 21 16:26:26 2009 -0400
Detect tight loop in tdb_find()
Rusty Russell [Wed, 29 Jul 2009 12:36:44 +0000 (22:06 +0930)]
Import from SAMBA's tdb:
commit
b90863c0b7b860b006ac49c9396711ff351f777f
Author: Howard Chu <hyc@highlandsun.com>
Date: Tue Mar 31 13:15:54 2009 +1100
Add tdb_transaction_prepare_commit()
Using tdb_transaction_prepare_commit() gives us 2-phase commits. This
allows us to safely commit across multiple tdb databases at once, with
reasonable transaction semantics
Signed-off-by: tridge@samba.org
Rusty Russell [Sat, 25 Jul 2009 12:32:50 +0000 (22:02 +0930)]
merge
Rusty Russell [Tue, 21 Jul 2009 07:24:48 +0000 (16:54 +0930)]
Neaten tdb to sync with samba version of locking fix.
Also, actually test locking, rather than just lock count (bit me in samba fix)
Joey Adams [Tue, 21 Jul 2009 06:32:36 +0000 (02:32 -0400)]
stringmap: Flipped bit order to match sorted string order and added traversal test
Rusty Russell [Mon, 20 Jul 2009 12:55:46 +0000 (22:25 +0930)]
Speed up tracing by factor of 4-6, by writing less stupid code.
Rusty Russell [Sun, 19 Jul 2009 01:44:41 +0000 (11:14 +0930)]
merge
Rusty Russell [Sat, 18 Jul 2009 08:38:05 +0000 (18:08 +0930)]
Short types
Rusty Russell [Sat, 18 Jul 2009 08:29:57 +0000 (17:59 +0930)]
talloc_link; a replacement for talloc's references.
Rusty Russell [Sat, 18 Jul 2009 08:28:58 +0000 (17:58 +0930)]
_info files are no longer to be ignored, since we renamed them from _info.c
Rusty Russell [Sat, 18 Jul 2009 08:26:54 +0000 (17:56 +0930)]
License for talloc is actually LGPL.
Rusty Russell [Sat, 18 Jul 2009 08:13:33 +0000 (17:43 +0930)]
talloc_free() should take a const void *, a-la free().
Joey Adams [Sat, 18 Jul 2009 07:52:53 +0000 (03:52 -0400)]
Improved stringmap to support strings with null characters
Rusty Russell [Sat, 18 Jul 2009 05:57:40 +0000 (15:27 +0930)]
Merge.
Rusty Russell [Sat, 18 Jul 2009 04:45:28 +0000 (14:15 +0930)]
Automate rerunning when we have to back off: gives accurate(ish) timings.
Rusty Russell [Fri, 17 Jul 2009 07:29:58 +0000 (16:59 +0930)]
Cleanup variable names.
struct op: serial -> seqnum (and drop use of term "serial" everywhere).
struct op: op -> type
struct op_desc: general replacement for file/op_num pair.
Change add_dependency to take two const op_desc *: means reshuffle since we can't adjust the args any more.
Rusty Russell [Fri, 17 Jul 2009 05:21:55 +0000 (14:51 +0930)]
Add handling of reduced test cases (traverse lines trimmed), and add all the test cases I've been using.
Rusty Russell [Fri, 17 Jul 2009 05:21:44 +0000 (14:51 +0930)]
Completely unhobble tdbtorture.
Rusty Russell [Fri, 17 Jul 2009 04:49:03 +0000 (14:19 +0930)]
Oops, forgot to check in new keywords files :(
Rusty Russell [Fri, 17 Jul 2009 04:38:12 +0000 (14:08 +0930)]
YA corner case: help assumption by putting cancelled transactions first.
Rusty Russell [Fri, 17 Jul 2009 03:43:58 +0000 (13:13 +0930)]
Leave groups of chainlock inside traverse.
Rusty Russell [Fri, 17 Jul 2009 03:31:52 +0000 (13:01 +0930)]
tdb_chainlock/tdb_chainunlock et. al. support.
Joey Adams [Thu, 16 Jul 2009 21:32:38 +0000 (17:32 -0400)]
Rusty's cleanup to ciniparser.c's strstrip and strlwc
Rusty Russell [Thu, 16 Jul 2009 08:37:14 +0000 (18:07 +0930)]
Handle global_lock properly in tdb_transaction_lock/unlock.
Rusty Russell [Thu, 16 Jul 2009 08:36:10 +0000 (18:06 +0930)]
Fix tracing for tdb_chainunlock.
Rusty Russell [Thu, 16 Jul 2009 07:19:23 +0000 (16:49 +0930)]
Minor optimization: don't make a dependency between two traverse_reads.
Rusty Russell [Thu, 16 Jul 2009 06:10:43 +0000 (15:40 +0930)]
Cleanup: rename is_* to starts_*, move functions together, factor out start finding code.
Rusty Russell [Thu, 16 Jul 2009 04:19:25 +0000 (13:49 +0930)]
Clean up traverse keyword handling.
Rusty Russell [Thu, 16 Jul 2009 03:26:07 +0000 (12:56 +0930)]
Partial ordering of traverses: reduces number of deadlocks by factor of 10.
Rusty Russell [Thu, 16 Jul 2009 01:59:16 +0000 (11:29 +0930)]
Fix logic bug; we weren't checking last requirement in sort_deps.
Rusty Russell [Thu, 16 Jul 2009 01:58:33 +0000 (11:28 +0930)]
Implement timeout for the deadlock of traverse & transactions.
This has proven to be intractible: various attempts to eliminate have failed, so detect at runtime and cease the traversal (and do the remaining ops outside a traverse).
Rusty Russell [Thu, 16 Jul 2009 01:03:52 +0000 (10:33 +0930)]
Open database with TDB_NOSYNC to speed it up a little.
Joey Adams [Wed, 15 Jul 2009 21:48:32 +0000 (17:48 -0400)]
Added run-dictionary.c test to ciniparser
Joey Adams [Wed, 15 Jul 2009 21:29:38 +0000 (17:29 -0400)]
Tiny fix to stringmap's run.c
Rusty Russell [Wed, 15 Jul 2009 13:43:55 +0000 (23:13 +0930)]
Fix sequence logic bug, and satisfies() logic fix/cleanup.
Rusty Russell [Wed, 15 Jul 2009 05:27:49 +0000 (14:57 +0930)]
Handle transactions!
Note: we can still deadlock on traversal vs transaction corner cases.
We handle transactions as single operation, which it logically is.
Joey Adams [Wed, 15 Jul 2009 05:19:52 +0000 (01:19 -0400)]
Added module stringmap
Rusty Russell [Wed, 15 Jul 2009 05:16:30 +0000 (14:46 +0930)]
Fix sequence numbers when tracing transaction.
If we do the trace inside the lock, we show the actual sequence number when the transaction started.
Rusty Russell [Wed, 15 Jul 2009 03:49:35 +0000 (13:19 +0930)]
Insert (implied) transaction cancel on tdb_close/EOF.
Also changes first member of transaction to have valid start_group field,
and fix outdated comment.
Rusty Russell [Wed, 15 Jul 2009 01:37:32 +0000 (11:07 +0930)]
Print seq numbers on timeout dump
(Invasive: means passing full op array all the way through).
Joey Adams [Wed, 15 Jul 2009 01:36:37 +0000 (21:36 -0400)]
Added module block_pool
Rusty Russell [Tue, 14 Jul 2009 12:34:36 +0000 (22:04 +0930)]
Fix early transaction unlock when traverse done inside transaction.
Generalizes traverse in traverse fix from rusty@rustcorp.com.au-
20090629073630-3eduhyypx2tp6u80
Rusty Russell [Tue, 14 Jul 2009 12:15:52 +0000 (21:45 +0930)]
Fix null ptr deref on TDB_TRACE with internal db.
Rusty Russell [Tue, 14 Jul 2009 09:33:43 +0000 (19:03 +0930)]
Remove trivial traverse code, simplify.
We now use the "group_len" field for both transactions and traversals.
Rusty Russell [Tue, 14 Jul 2009 05:51:23 +0000 (15:21 +0930)]
Fix logic bug in optimizer, and fix up DEBUG_DEPS compile.
Rusty Russell [Tue, 14 Jul 2009 02:20:26 +0000 (11:50 +0930)]
More dependency optimization: seems to happen with transactions enabled.
Rusty Russell [Mon, 13 Jul 2009 06:19:52 +0000 (15:49 +0930)]
More general solution for serial number misorders.
Make sort_deps more efficient, and also only alter order when necessary. This means by default we run in serial number order, only going outside when we detect a dependency.
Maintain trace file order in original sort, so sort_deps doesn't mess it up.
We still need serial numbers: sort_deps can have multiple solutions for a single key, but these may deadlock with the ordering requirements of other keys. By sticking close to the actual order (ie. serial order), we minimize the chance of this happening.
Rusty Russell [Mon, 13 Jul 2009 02:14:40 +0000 (11:44 +0930)]
Optimize to reduce extraneous dependencies.
In my tdbtorture -n 4 example trace, this reduces from 14493 to 3210 dependencies, but doesn't make any measurable improvement in the time. Still, it's simple to do and might make a difference for larger sets.
Rusty Russell [Mon, 13 Jul 2009 02:06:50 +0000 (11:36 +0930)]
Belated checkin of keywords.
Rusty Russell [Mon, 13 Jul 2009 01:48:05 +0000 (11:18 +0930)]
Simplify dependencies by passing pointers over the pipe: avoid O(n^2) behaviour for searching.
Also, using a single structure makes talloc_free convenient for when we do optimization.
Rusty Russell [Mon, 13 Jul 2009 01:25:39 +0000 (10:55 +0930)]
Slightly more sophisticated dependency generation: fixes traverse interaction.