1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-04 17:47:26 +03:00

138 Commits

Author SHA1 Message Date
Rusty Russell
36353a9fc3 tdb2: use ccan/err instead of err.h
Solaris has no err.h, so use CCAN replacement.

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

Autobuild-User(master): Rusty Russell <rusty@rustcorp.com.au>
Autobuild-Date(master): Sat Jun  9 12:07:15 CEST 2012 on sn-devel-104
2012-06-09 12:07:13 +02:00
Andrew Bartlett
35a2d020a0 ccan: Only build ccan-failtest when we are in developer mode
From: Andrew Bartlett <abartlet@samba.org>

This code is incredibly useful, but is only needed in test code and may not be
perfectly portable.  It has compiled on all systems bar Solaris so far, but
rather than make it a requirement to build Samba, just keep it for development.

Andrew Bartlett

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

Autobuild-User(master): Rusty Russell <rusty@rustcorp.com.au>
Autobuild-Date(master): Thu Jun  7 18:53:12 CEST 2012 on sn-devel-104
2012-06-07 18:53:12 +02:00
Rusty Russell
4c9126daa9 lib/tdb2: build tests when built at toplevel.
They weren't being built when we were at top-level, because the globs
were wrong.  Just open-code the test names, which always works.

Reported-by: Andrew Bartlett
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-06-07 17:04:08 +02:00
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