Author: metze Date: 2005-09-22 18:37:03 +0000 (Thu, 22 Sep 2005) New Revision: 10427
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=10427 Log: [EMAIL PROTECTED] (orig r10418): tpot | 2005-09-22 10:47:32 +0200 Fix comparison_fn_t test I busted. Add $HOME to the environment as some tools get confused if it isn't there. [EMAIL PROTECTED] (orig r10419): idra | 2005-09-22 11:06:37 +0200 Remove unused prototypes of locking functions (thanks Jelmer) omment about transactions [EMAIL PROTECTED] (orig r10420): jelmer | 2005-09-22 14:23:44 +0200 Two minor scons fixes [EMAIL PROTECTED] (orig r10421): tridge | 2005-09-22 15:12:46 +0200 following on discussions with simo, I have worked out a way of allowing searches to proceed while another process is in a transaction, then only upgrading the transaction lock to a write lock on commit. The solution is: - split tdb_traverse() into two calls, called tdb_traverse() and tdb_traverse_read(). The _read() version only gets read locks, and will fail any write operations made in the callback from the traverse. - the normal tdb_traverse() call allows for read or write operations in the callback, but gets the transaction lock, preventing transastions from starting inside the traverse In addition we enforce the following rule that you may not start a transaction within a traverse callback, although you can start a traverse within a transaction With these rules in place I believe all the deadlock possibilities are removed, and we can now allow for searches to happen in parallel with transactions [EMAIL PROTECTED] (orig r10422): tridge | 2005-09-22 15:14:12 +0200 ldb_search() can now use tdb_traverse_read() to ensure it can run in parallel with any transaction [EMAIL PROTECTED] (orig r10423): tridge | 2005-09-22 15:16:23 +0200 minor changes to the ldb test suite to allow it to work correctly with a real ldap backend (such as openldap) [EMAIL PROTECTED] (orig r10424): tridge | 2005-09-22 15:20:28 +0200 for caller convenience, automatically turn a tdb_traverse() into a tdb_traverse_read() for read only databases [EMAIL PROTECTED] (orig r10426): metze | 2005-09-22 20:35:08 +0200 - restructure the winbind server code a bit - remove the echo test stuff - abstract out the used protocol - we have a seperate handler for the samba3 protocol now - the backend can easy do async replies by setting WBSRV_CALL_FLAGS_REPLY_ASYNC in wbsrv_call and then call wbsrv_queue_reply() later metze Added: branches/tmp/samba4-winsrepl/source/winbind/wb_samba3_cmd.c branches/tmp/samba4-winsrepl/source/winbind/wb_samba3_protocol.c branches/tmp/samba4-winsrepl/source/winbind/wb_samba3_protocol.h branches/tmp/samba4-winsrepl/source/winbind/wb_server.h Modified: branches/tmp/samba4-winsrepl/ branches/tmp/samba4-winsrepl/source/SConstruct branches/tmp/samba4-winsrepl/source/include/structs.h branches/tmp/samba4-winsrepl/source/lib/ldb/include/ldb.h branches/tmp/samba4-winsrepl/source/lib/ldb/ldb_tdb/ldb_search.c branches/tmp/samba4-winsrepl/source/lib/ldb/tests/init.ldif branches/tmp/samba4-winsrepl/source/lib/ldb/tests/test.ldif branches/tmp/samba4-winsrepl/source/lib/tdb/SConscript branches/tmp/samba4-winsrepl/source/lib/tdb/common/error.c branches/tmp/samba4-winsrepl/source/lib/tdb/common/io.c branches/tmp/samba4-winsrepl/source/lib/tdb/common/lock.c branches/tmp/samba4-winsrepl/source/lib/tdb/common/tdb.c branches/tmp/samba4-winsrepl/source/lib/tdb/common/tdb_private.h branches/tmp/samba4-winsrepl/source/lib/tdb/common/transaction.c branches/tmp/samba4-winsrepl/source/lib/tdb/common/traverse.c branches/tmp/samba4-winsrepl/source/lib/tdb/docs/README branches/tmp/samba4-winsrepl/source/lib/tdb/include/tdb.h branches/tmp/samba4-winsrepl/source/lib/tdb/tools/tdbtorture.c branches/tmp/samba4-winsrepl/source/winbind/SConscript branches/tmp/samba4-winsrepl/source/winbind/config.mk branches/tmp/samba4-winsrepl/source/winbind/wb_server.c Changeset: Sorry, the patch is too large (1472 lines) to include; please use WebSVN to see it! WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=10427
