1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-09 08:58:35 +03:00

161 Commits

Author SHA1 Message Date
Andrew Tridgell
7d90b59602 ldb: mark the tdb backend in ldb as _PRIVATE_ 2010-04-18 15:00:38 +10:00
Matthias Dieter Wallnöfer
2d03011858 LDB:TDB backend - change counter variables to "unsigned" where appropriate 2010-03-08 10:32:56 +01:00
Brad Hards
1683d090cc LDB related spelling fixes.
Signed-off-by: Matthias Dieter Wallnöfer <mwallnoefer@yahoo.de>
2010-02-22 21:45:36 +01:00
Simo Sorce
08a20006c8 s4:ldb quiet down rootdse control registration 2010-01-31 13:25:17 -05:00
Simo Sorce
772d808ac8 s4:ldb Fix check made conditional by mistake 2010-01-30 02:57:33 -05:00
Simo Sorce
df7be036d7 s4:ldb add support for permissive modify control 2010-01-30 01:04:12 -05:00
Andrew Tridgell
fdf12a607d s4-ldb: improve error handling in indexing code
When we get an indexing failure we want a clear error message
2010-01-08 13:03:03 +11:00
Andrew Tridgell
b34db0840d s4-ldb: use the RELAX control to disable single value checking on replace
When using w2k3 linked attributes we are allowed to have multiple
values on a single valued attribute. This happens when the other
values are deleted.

Setting the RELAX control tell the ldb-tdb backend to not check for
this on replace, which means the caller has to check for single valued
violations.
2010-01-02 08:16:51 +11:00
Andrew Tridgell
9955756314 s4-ldb: show the OID of any unhandled critical controls
It isn't very useful just saying that a control is not supported,
without saying which one is the problem

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
2009-12-16 20:56:23 +11:00
Andrew Tridgell
4bb2958f16 s4-ldb: fixed nested searches inside ldb modules
We need to keep a search count in ltdb to allow for nesting
of searches inside a module

Signed-off-by: Andrew Tridgell <tridge@samba.org>
2009-12-09 18:18:25 +11:00
Matthias Dieter Wallnöfer
a2707a3248 ldb:ldb_tdb backend/indexes - Outside API
- The outside API contains "DN" string arguments: Bad. Since in this way we
  fully rely on the outside calls regarding the right DN format. Solution: Use
  always a "struct ldb_dn" entry. Since this one is interchangeable and we can
  handle it in our preferred way.
2009-11-20 12:30:44 +11:00
Andrew Tridgell
3b96d08b29 s4-ldb: fixed an issue in rename/modify indexing
When we rename or modify a record, we need to update the indexes at
the same time. It is important that we use the DN of the actual
message that is stored in the database to do this, not the DN that was
passed in by the user. If the two differ in case then the index
records needs to use the 'real' record DN, as index handling is
currently case sensitive.
2009-11-20 11:34:39 +11:00
Matthias Dieter Wallnöfer
90862a55fd ldb:tdb backend - be also here more careful with the result value
"msg_delete_attribute" doesn't return an LDB result constant.
2009-10-27 19:42:12 +01:00
Matthias Dieter Wallnöfer
1ea460b0b0 ldb:backend "connect" functions - convert result values to LDB constants
I think this is better since "ldb_backend_connect" and "ldb_connect" which
propagate those values should return only LDB constants. Therefore a conversion
(especially for "-1") would be needed.
2009-10-25 11:24:54 +01:00
Andrew Tridgell
dffb572ce0 s4-ldb: don't allow modifies outside a transaction. 2009-10-25 13:15:18 +11:00
Andrew Tridgell
74ae8b90ae s4-ldb: expose ltdb_err_map and ltdb_delete_noindex
These will be used by ldb_index.c
2009-10-22 12:47:54 +11:00
Andrew Tridgell
859cf72692 s4-ldb: ldb indexing rewrite - part1
This gets rid of the @IDXPTR approach to in-transaction indexing,
instead using an in-memory tdb to hold index values during a
transaction. This also cleans up a lot of the internal indexing logic,
hopefully making it easier to understand.

One of the big changes is in memory management, with a lot more use
made of talloc tricks to avoid copying dn lists, and shortcuts used to
avoid high intersection and union calculation costs.

The overall result is that a re-provision on my laptop goes from 48s
to a bit over 10s.
2009-10-22 12:47:53 +11:00
Andrew Bartlett
937140bf10 s4:ldb Put ltdb_private under the 'module'
This helps track the memory better, as we can then place it under the partition
hirarchy.

Andrew Bartlett
2009-10-21 22:43:56 +11:00
Matthias Dieter Wallnöfer
a889303e3e s4:ldb_tdb - Revert some introduced "trivial gotos"
I hope that this makes abartlet & simo happy again (consider mailing list).
2009-10-12 23:43:20 +02:00
Andrew Bartlett
fa05abc8ff Allow (and ignore) distinguishedName on special records
They are not stored, so we can ignore them (makes copying records much
easier)

Andrew Bartlett
2009-10-12 16:51:27 +11:00
Andrew Bartlett
554791c49f s4:ldb Reload the 'ltdb_cache' when @OPTIONS changes
(Otherwise setting the check base on search option is not applied
until after a reload).

Andrew Bartlett
2009-10-12 16:51:03 +11:00
Matthias Dieter Wallnöfer
32a7b82e87 s4:ldb_tdb - Rework/Various
- Unify the error handling method with "done" mark in all longer functions
- Fix up result codes to match more the real MS AD
- Some cosmetic fixups
2009-10-08 00:18:06 +02:00
Andrew Tridgell
9c1e230bc2 s4-ldb: fixed error on single value error
When you try to add a 2nd value to a single valued attribute you get 
LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS. w2k8-r2 join to s4 relies on this
error, doing a replace after it sees the error
2009-10-06 18:57:06 +11:00
Matthias Dieter Wallnöfer
957cc4b8b6 s4:ldb_tdb - fix memory leaks 2009-10-03 15:49:40 +02:00
Andrew Bartlett
2f211daa47 s4:ldb Don't allow modifcation of distinguishedName 2009-10-02 18:57:08 +02:00
Andrew Tridgell
52b10ff3c5 Revert "s4-ldb: merged with master"
This reverts commit 14c9070322d089dd96b389e8087c4f4bf1a6c7cc.
2009-10-02 22:39:19 +10:00
Andrew Bartlett
14c9070322 s4-ldb: merged with master 2009-10-02 12:45:03 +02:00
Andrew Tridgell
9b7de7f491 fixed spelling 2009-09-23 14:01:29 -07:00
Andrew Bartlett
399c7160d5 s4:ldb Add 'single-value' support to LDB.
This is currently only triggered via Samba4's schema code.
2009-09-21 20:50:26 -07:00
Sumit Bose
9d7cb4826a remove all '\n' from ldb_debug 2009-07-14 11:21:11 -04:00
Andrew Tridgell
0849c1ef77 fixed ldb rename now that we have unique indexes
With unique indexes, any rename of a record that has an attribute that
is uniquely indexed needs to be done as a delete followed by an add,
otherwse you'll get an error that the attribute value already exists.
2009-06-04 14:10:11 +10:00
Andrew Tridgell
6688ee80b2 added support for a prepare_commit() op in ldb modules
This op will be used by the partition module to give us good
transaction semantics across the 4 partitions that sam.ldb uses.
2009-03-31 15:07:54 +11:00
Simo Sorce
97cccb2219 Fix extended operation return path.
Extended operations return was not going thorugh the same patch as others
leaving the ctx around. Plus we were neutralizing the spy too early so that it
didn't set the request_terminated flag as it should have.

This should hopefully fix the failures in the build farm.
2009-03-10 11:08:53 -04:00
Simo Sorce
f088353d37 Fix potential segfaults using freed memory.
In some code paths ltdb_context was still referenced even after we were returned
an error by one of the callbacks. Because the interface assumes that once an
error is returned the ldb_request may be freed, and because the ltdb_context was
allocated as a child of the request, this might cause access to freed memory.
Allocate the ltdb_context on ldb, and keep track of what's going on with the
request by adding a spy children on it. This way even if the request is freed
before the ltdb_callback is called, we will safely free the ctx and just quietly
return.
2009-03-09 20:12:11 -04:00
Simo Sorce
689b8f5bb3 Make all transactions nested in ldb. The current samba4 code expects this
behavior anyway, and given we can only have one transaction active per
ldb context this is the only sane model we can support.

Fix ldb_tdb transactions, we could return back with an error with neither
committing nor canceling the actual tdb transaction in some error paths
within the ltdb commit and cancel transaction paths.

Added also some debugging to trace what was going on.
2009-02-23 13:33:19 -05:00
Simo Sorce
380874ef86 Fix the mess with ldb includes.
Separate again the public from the private headers.

Add a new header specific for modules.
Also add service function for modules as now ldb_context and ldb_module are
opaque structures for them.
2009-01-30 01:02:03 -05:00
Stefan Metzmacher
d965ff05c9 s4:ldb: remove dependency to samba4's events wrapper
metze
2009-01-21 10:44:04 +01:00
Stefan Metzmacher
183c379fe5 s4:lib/tevent: rename structs
list=""
list="$list event_context:tevent_context"
list="$list fd_event:tevent_fd"
list="$list timed_event:tevent_timer"

for s in $list; do
	o=`echo $s | cut -d ':' -f1`
	n=`echo $s | cut -d ':' -f2`
	r=`git grep "struct $o" |cut -d ':' -f1 |sort -u`
	files=`echo "$r" | grep -v source3 | grep -v nsswitch | grep -v packaging4`
	for f in $files; do
		cat $f | sed -e "s/struct $o/struct $n/g" > $f.tmp
		mv $f.tmp $f
	done
done

metze
2008-12-29 20:46:40 +01:00
Andrew Tridgell
e294c4799b an experimental patch for fixing ldb bloat
ldb indexing can cause huge files, and huge memory usage. This
experiment allows us to keep indexes in memory during a transaction,
then to write the indexes to disk when the transaction completes. The
result is that the db is much smaller (we have seen improvements of
about 100x in file size) and memory usage during large transactions is
also greatly reduced

Note that this patch uses the unusual strategy of putting pointers
into a ldb (and thus into a tdb). This works because the pointers are
only there during a transaction, so the pointers are not exposed to
any other users of the database. The pointers allow us to avoid some
really bad allocation problems with tdb record allocation during the
re-indexing.
2008-12-17 07:15:29 +11:00
Andrew Bartlett
16a3a2da78 Remove timeout event once we are calling the callback.
(Even if the callback takes some time, this isn't a ldb_tdb timeout
any more)

Andrew Bartlett
2008-11-17 10:07:24 +11:00
Jelmer Vernooij
87ec1d2532 Make sure prototypes are always included, make some functions static and
remove some unused functions.
2008-10-20 18:59:51 +02:00
Simo Sorce
2deeb99fff Transform the sequence_number operation into a normal extended operation as it should always have been. Make it also async so that it is not a special case. 2008-10-16 12:55:30 -04:00
Simo Sorce
0aeade2007 LDB ASYNC: ldb_tdb backend 2008-09-29 04:22:18 +02:00
Jelmer Vernooij
b0a95ad2f6 Revert LDB return code patches from Matthias. 2008-09-25 00:01:05 +02:00
Matthias Dieter Wallnöfer
9261fa997c Cosmetic corrections for the LDB backend modules
This commit applies some cosmetic corrections for the LDB backend modules.
2008-09-24 19:40:03 +02:00
Simo Sorce
4d8804f26c Cleanup,
Remove trailing spaces and try to fit 80 columns where possible
(This used to be commit edf6b77a1314d8f91839836855ae049393f73aca)
2008-06-14 20:37:40 -04:00
Jelmer Vernooij
995788536e Remove more function-based inits.
(This used to be commit b1a7810f3e70f9a831d9b8e85d531e448072adaf)
2008-02-20 02:57:07 +01:00
Simo Sorce
2d400c1dd1 r26574: Do not call functions in the variable declaration, fix checking for tmp_ctx,
and also makes code more readable and debuggable.

Eliminate silly parenthesys.

Simo.
(This used to be commit 166195b487ffa51933f772a56f47f7f0d4c867eb)
2007-12-24 01:51:04 -06:00
Andrew Tridgell
0906096ee4 r25690: - only use a readonly traverse in ldb_search when not in a transaction. When we are in a transaction then we could be in a top level modify operation (such as rename), so we must use a writeable traverse so that the async callbacks can do the modifies while the search is progressing.
- don't do the lockall operation on the tdb during a ldb search if in
  a transaction, as this would prevent modifies by callbacks as well
(This used to be commit aa9ab431e071882f42ebc882e809ae1d4b8778d4)
2007-12-21 05:43:15 +01:00
Stefan Metzmacher
c364bbbfa3 r25215: replace talloc_append_string() with talloc_strdup_append_buffer()
metze
(This used to be commit 8f2db3c130ce85d38f805836a7df039822ede066)
2007-10-10 15:06:55 -05:00