1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-26 21:57:41 +03:00

135 Commits

Author SHA1 Message Date
Rusty Russell
3acce707a3 tdb2: fix prototype in tdb1 code.
We were handing an int-returning function where we should hand an enum TDB_ERROR
returning function.  Worse, it was returning 0/-1 instead of 0/TDB_ERR_*.

Fortunately, it's only compared against success, but the Solaris compiler
warns about it, and it's not correct anyway.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-03-29 15:14:30 +10:30
Rusty Russell
4816ffacb8 lib/tdb2: fix -Wcast-qual warnings.
We use tdb_mkdata() to get rid of many of them from the tests, and
explicit cast_const() in a few places.

tlist_for_each() still causes a warning, but that needs to be fixed in
CCAN.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

Autobuild-User: Rusty Russell <rusty@rustcorp.com.au>
Autobuild-Date: Thu Mar 22 03:29:32 CET 2012 on sn-devel-104
2012-03-22 03:29:32 +01:00
Rusty Russell
4ea9f8d4c0 lib/tdb2: fix -Wshadow warnings.
These warnings clutter things up, even though they're of marginal
utility.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-03-22 01:57:38 +01:00
Rusty Russell
a93e03d27d lib/tdb2: fix OpenBSD incoherent mmap (tdb2 version)
This handles incoherent mmaps for TDB2 native databases, by forcing
mmap on for such systems, just like we did for tdb1.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-03-22 01:57:38 +01:00
Rusty Russell
aa5378602d lib/tdb2: fix OpenBSD incoherent mmap (tdb1 version)
This is a direct port of the previous patch, to the TDB2 codebase.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-03-22 01:57:38 +01:00
Rusty Russell
4d613d9ceb lib/tdb2: remove unneccessary _FILE_OFFSET_BITS define in test/.
This was a relic from testing; it can interfere with compile.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-03-14 08:32:34 +01:00
Rusty Russell
6dea4f24dc lib/tdb2: make summary handle capabilities properly.
Another PPC issue (endian?) revealed that the summary code did not handle
capabilities correctly: in fact, it went into an endless loop.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

Autobuild-User: Rusty Russell <rusty@rustcorp.com.au>
Autobuild-Date: Wed Mar 14 06:51:43 CET 2012 on sn-devel-104
2012-03-14 06:51:43 +01:00
Rusty Russell
5ba2e4fc39 lib/tdb2: fix error string formatting.
This caused a crash on PPC64 when we failed the mmap (found by failtest,
reported by Amitay)

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-03-14 05:09:30 +01:00
Rusty Russell
ee0d1daa27 lib/tdb2: Add gcc-style format attribute to tdb_logerr.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-03-14 05:09:30 +01:00
Rusty Russell
8ad1986a96 lib/tdb2: add --valgrind, --valgrind-log options.
Not used by default, since it slows down testing (on my laptop) from
22 seconds to 2 minutes 30 seconds.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

Autobuild-User: Amitay Isaacs <amitay@samba.org>
Autobuild-Date: Wed Mar  7 04:57:21 CET 2012 on sn-devel-104
2012-03-07 04:57:21 +01:00
Rusty Russell
74d522237e lib/tdb2: wire up unit tests.
The tests are ccan-style, so the names tell how to link them.  This
logic is generic, and could be moved to wafsamba, cleaned up, and used
elsewhere.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-03-07 13:16:16 +11:00
Rusty Russell
9d897b0951 lib/tdb2: adapt unit tests to SAMBA environment.
This means changing headers, implementing a simple tap-like wrapper,
and also splitting out the helpers into those which are linked with
the api* tests (which can't use non-public tdb2 functions) and those
linked with the run* tests (which can).
 
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-03-07 13:16:16 +11:00
Rusty Russell
90c03ccf4c lib/tdb2: rename tdb2.pc to tdb.pc
The library is called tdb, so the pc file must have the same name.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

Autobuild-User: Rusty Russell <rusty@rustcorp.com.au>
Autobuild-Date: Mon Feb 27 06:59:58 CET 2012 on sn-devel-104
2012-02-27 06:59:58 +01:00
Amitay Isaacs
89586ed164 lib/tdb2: 2.0.0 ABI
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

Autobuild-User: Rusty Russell <rusty@rustcorp.com.au>
Autobuild-Date: Tue Feb 21 07:43:55 CET 2012 on sn-devel-104
2012-02-21 07:43:55 +01:00
Amitay Isaacs
abc74723ce lib/tdb2: Convert tdb2 to a standalone library
Adds a Makefile, configure script, and tdb2.pc.in.

Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-02-21 15:29:52 +10:30
Amitay Isaacs
f7b999fac0 lib/tdb2: Fix wscript
Particularly fix the upcoming standalone build.

Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-02-21 15:29:30 +10:30
Amitay Isaacs
4e9072660a lib/tdb2: Mark public function as such
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-02-21 15:29:22 +10:30
Amitay Isaacs
a63d731ae0 lib/tdb2: Do not include config.h in (to-be) public library, use replace.
Like tdb1, it's the caller's responsibility to set up various config
options (eg. by #include "config.h") before including the public
header.

We use HAVE_CCAN for including the (private) CCAN headers, otherwise
dummy macros are used.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-02-21 15:29:17 +10:30
Rusty Russell
e6901fa350 lib/tdb2: tools should use config.h, and replace where available.
The tdb2 tools should #include "config.h" before tdb2.h (about to
become a requirement) and use libreplace where available.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-02-21 15:29:12 +10:30
Jeremy Allison
4cf9923b09 Fix shadow variable name warning.
Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Wed Feb  8 22:55:08 CET 2012 on sn-devel-104
2012-02-08 22:55:08 +01:00
Rusty Russell
b3fb115a39 tdb2: add --disable-tdb2
I thought you could --disable-tdb2=false, apparently not!  Thanks
Michael Adam...

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

Autobuild-User: Rusty Russell <rusty@rustcorp.com.au>
Autobuild-Date: Thu Feb  2 03:43:08 CET 2012 on sn-devel-104
2012-02-02 03:43:08 +01:00
Rusty Russell
7c6713e78f tdb2: make --enable-tdb2 the default.
We still use the tdb1 on-disk format, but we do so via the tdb2 library.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

Autobuild-User: Rusty Russell <rusty@rustcorp.com.au>
Autobuild-Date: Mon Jan 30 08:02:43 CET 2012 on sn-devel-104
2012-01-30 08:02:42 +01:00
Rusty Russell
e1665c94ac tdb2: add -1 and -2 options to tdbtorture
(For now, -1 is the default).
2012-01-30 15:59:16 +10:30
Rusty Russell
10230829df tdb2:tdbtorture: use TEST_DATA_PREFIX for files
TDB2 version of commit b83672b36c1ea8c35833c40c3919b63809f16624.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-01-30 15:31:05 +10:30
Rusty Russell
45ae436b19 tdb2: name tools the same as TDB1 tools.
Otherwise, when we switch everyone's scripts will break (including our
own tests!).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-01-30 10:07:18 +10:30
Rusty Russell
23f1f5e0e3 tdb2: tools/tdb2backup
Minor changes from tdb/tools/tdbbackup.c.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-01-30 10:07:17 +10:30
Rusty Russell
efbf52b4fe tdb2: copy tdb1's changed expansion logic.
TDB2 uses the same expansion logic as TDB1, which got factored out
recently.  So update TDB2 to match.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit c438ec17d7b2efe76e56e5fc5ab88bd4a02735e8)
2012-01-30 09:24:50 +10:30
Rusty Russell
205e198471 tdb2: careful on wrap.
It's much harder to wrap a 64-bit tdb2 than a 32-bit tdb1, but we should still
take care against bugs.

Also, we should *not* cast the length to a size_t when comparing it to
the stat result, in case size_t is 32 bit.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit 6f7cb26e589cea081e71c59801eae87178967861)
2012-01-30 09:23:50 +10:30
Volker Lendecke
1eefd6bafb tdb: Use tdb_parse_record in tdb_update_hash
This avoids a tdb_fetch, thus a malloc/memcpy/free in the tdb_store path
2011-12-25 13:31:58 +01:00
Volker Lendecke
bfc74811d0 tdb2: Avoid a malloc/memcpy in _tdb1_store
Autobuild-User: Volker Lendecke <vlendec@samba.org>
Autobuild-Date: Mon Dec 19 16:53:40 CET 2011 on sn-devel-104
2011-12-19 16:53:39 +01:00
Amitay Isaacs
a4ab152a05 tdb2: Fix python documentation for tdb.Tdb object 2011-12-14 15:57:32 +11:00
Rusty Russell
372dd3b7d0 tdb2: tlist: remove type arg from tlist_top(), tlist_tail()
With the type canary, it's unnecessary.  Though the implementation is
a bit more awkward since they longer map directly through to list_top/tail.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit a6b5111fe6948e51114c33aa34785c9fd0d403e6)

Autobuild-User: Rusty Russell <rusty@rustcorp.com.au>
Autobuild-Date: Mon Dec  5 12:13:08 CET 2011 on sn-devel-104
2011-12-05 12:13:08 +01:00
Rusty Russell
c6133b4755 tdb2: display capability information in tdb_summary()
This means we know they're there in future, and what restrictions they
carry.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit b3ca95351517e76b635347b39382b059a66f8388)
2011-12-05 17:04:30 +10:30
Rusty Russell
80c3ba8123 tdb2: add a capability list from the header.
This allows even more extensibility in future: in particular, the top
bits of each capability tell us what to do if we don't understand it:
fail the open, fail to open for write, or don't try to check the
format.

tdb_check needs to understand the capability list so it can know to
skip over it: each element in the list is prefixed with the type tag
and the length.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit 35f198de1851a7d57064546b7ced677b6fabee27)
2011-12-05 17:04:30 +10:30
Rusty Russell
3f99fc16a0 tdb2: provide tdb_layout_write() rather than implying it by new_tdb_layout arg.
Neater API.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit 79d603a5f73dfbb655d8d08f67eecb5f2da542d5)
2011-12-05 17:04:30 +10:30
Rusty Russell
eff985b7ef tdb2: add an internal TDB_CANT_CHECK flag.
This will be used shortly to indicate that a TDB2 file indicates it
cannot be checked.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit e01d795c8964b791def1e9f68c386b350b3a2a84)
2011-12-05 17:04:30 +10:30
Rusty Russell
6e3c40500c tdb2: suppress failtest more than once on mmap.
Now we test failing mmap, ccanlint -v time has increased from 200 to
330 seconds.  Worse, tests no time out on my laptop.

Fix this, by preventing us from going down that particular rabbit hole.
ccanlint -v now takes 201 seconds again.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit fbae37ba91ec230e34be564084099726cc3a9d47)
2011-12-05 17:04:30 +10:30
Rusty Russell
bb09b32910 tdb2: simplify failtest helper.
failtest now culls duplicates for itself (and more efficiently), so
don't replicate the logic here.  It changes things a bit, because
failtest uses backtraces rather than a simple call point to find
duplicates.

Also, fix one case (in run-11-simple-fetch.c) where we simply exited
rather than using failtest_exit().  We got away with it before, because
we never hit that particular failure pattern.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit 3d99c9334fe3067c88772547b9c06acec21616ea)
2011-12-05 17:04:30 +10:30
Rusty Russell
6d24853493 tdb2: failtest: use a linked list for history, not an array.
This avoids a silly realloc, but more importantly it gets us closer to
being runtime extensible, as each history element can be a different
size.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit 9571a41e8494f3135557e3ec50c2de856392173e)
2011-12-05 17:03:30 +10:30
Rusty Russell
7f95ad045a tdb2: consolidate testing failtest suppression routines.
Less cut & paste means less patching as failtest changes.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit 1819a36a3e69565bd7b853503fceb846558a45bd)
2011-12-05 17:03:19 +10:30
Rusty Russell
d5524222a4 tdb2: fix intermittant failure in run-50-multiple-freelists-fail.c
layout.c's TDB creation functions were incorrect in case of a hash
collision, causing occasional failure.  Make it always use the
(previously-failing) seed value, and fix it.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit 60a487d57979e4364e70c837079f3cf083ddc9c7)
2011-12-05 17:03:19 +10:30
Rusty Russell
6b11c9119f tdb2: don't be fascist when TDB_VERSION1 is specified.
We currently insist that a tdb file be a version1 file if tdb_open() is
passed the TDB_VERSION1 flag; we fail if it's actually a tdb2.

But that makes generic wrappers harder, and is unlikely to be what the
user wants: if they do, they can check tdb_get_flags() & TDB_VERSION1
after opening.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit 9691464a16ef22d6acadfef209666381dfe22b2f)

Autobuild-User: Rusty Russell <rusty@rustcorp.com.au>
Autobuild-Date: Wed Nov  2 08:38:38 CET 2011 on sn-devel-104
2011-11-02 08:38:38 +01:00
Rusty Russell
4bc8b0c194 tdb2: use HAVE_LIBREPLACE instead of _SAMBA_BUILD_.
This is what lib/tdb2 really wants: to know if it should use normal
headers or replace.h.  It currently uses _SAMBA_BUILD_, which is wrong
for ldb, for example.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

Autobuild-User: Rusty Russell <rusty@rustcorp.com.au>
Autobuild-Date: Tue Nov  1 03:19:58 CET 2011 on sn-devel-104
2011-11-01 03:19:58 +01:00
Rusty Russell
95b2e5aa56 tdb2: change --enable-tdb2-breaks-compat to --enable-tdb2
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-21 09:25:11 +02:00
Rusty Russell
92c022f043 tdb2: allow readonly changes even while holding locks.
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-20 09:35:10 +02:00
Rusty Russell
cb064f28f9 tdb2: remove bogus leftover .orig file.
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-14 06:06:41 +02:00
Rusty Russell
2d7c85a971 tdb2: fix prototypes which return enum TDB_ERROR.
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-14 08:13:28 +09:30
Rusty Russell
c5c0a4d331 tdb2: fix return handling in pytdb wrapper.
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-14 08:13:27 +09:30
Rusty Russell
2237daed7e tdb2: add error conversion functions.
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-14 08:13:27 +09:30
Rusty Russell
45467c0118 tdb2: set tdb_error() on tdb_transaction_prepare_commit.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit feb36b14278b4230af70dab90369a345b6a027ef)
2011-09-14 08:13:27 +09:30