ira/tdb.git
12 years agotalloc: change version to 2.0.7 talloc-2.0.7
Stefan Metzmacher [Thu, 15 Sep 2011 15:05:11 +0000 (17:05 +0200)]
talloc: change version to 2.0.7

The version change is needed because the ABI file
of the pytalloc code was fixed.

metze

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Thu Sep 15 22:32:59 CEST 2011 on sn-devel-104

12 years agos3-waf: fix SO_PEERCRED configure check.
Günther Deschner [Thu, 15 Sep 2011 16:14:06 +0000 (18:14 +0200)]
s3-waf: fix SO_PEERCRED configure check.

Guenther

Autobuild-User: Günther Deschner <gd@samba.org>
Autobuild-Date: Thu Sep 15 20:59:26 CEST 2011 on sn-devel-104

12 years agorpc_server: Improve debug message for sys_getpeereid().
Andreas Schneider [Thu, 15 Sep 2011 15:25:52 +0000 (17:25 +0200)]
rpc_server: Improve debug message for sys_getpeereid().

Autobuild-User: Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date: Thu Sep 15 19:23:43 CEST 2011 on sn-devel-104

12 years agos3:libsmb: remove unused cli_*encryption* functions
Stefan Metzmacher [Thu, 15 Sep 2011 14:05:45 +0000 (16:05 +0200)]
s3:libsmb: remove unused cli_*encryption* functions

metze

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Thu Sep 15 17:52:00 CEST 2011 on sn-devel-104

12 years agos3:libsmb: s/cli_encryption_on/cli_state_encryption_on()
Stefan Metzmacher [Thu, 15 Sep 2011 14:15:18 +0000 (16:15 +0200)]
s3:libsmb: s/cli_encryption_on/cli_state_encryption_on()

metze

12 years agowaf: restore libsmbclient handling.
Günther Deschner [Thu, 15 Sep 2011 10:52:49 +0000 (12:52 +0200)]
waf: restore libsmbclient handling.

This is a temporary solution to get libsmbclient installed properly as a library
(including symlinks and proper symbols). I was not able to make the old internal
library name 'libsmb/smbclient' work together with "realname" and/or "link_name".
Maybe one of the waf gurus has more ideas here.

Guenther

Autobuild-User: Günther Deschner <gd@samba.org>
Autobuild-Date: Thu Sep 15 15:31:59 CEST 2011 on sn-devel-104

12 years agos3:libsmb: move cli->server{zone,time} to cli->conn.smb1.server.{time_zone,system_time}
Stefan Metzmacher [Tue, 13 Sep 2011 19:45:25 +0000 (21:45 +0200)]
s3:libsmb: move cli->server{zone,time} to cli->conn.smb1.server.{time_zone,system_time}

metze

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Thu Sep 15 14:00:29 CEST 2011 on sn-devel-104

12 years agos3:libsmb: split cli->secblob into cli->conn.smb1.server.{guid,gss_blob,challenge...
Stefan Metzmacher [Tue, 13 Sep 2011 19:34:35 +0000 (21:34 +0200)]
s3:libsmb: split cli->secblob into cli->conn.smb1.server.{guid,gss_blob,challenge,workgroup}

metze

12 years agos3:auth_server: make use of cli_state_server_challenge()
Stefan Metzmacher [Tue, 13 Sep 2011 19:51:52 +0000 (21:51 +0200)]
s3:auth_server: make use of cli_state_server_challenge()

metze

12 years agos3:libsmb: make use of cli_state_server_gss_blob()
Stefan Metzmacher [Tue, 13 Sep 2011 19:17:02 +0000 (21:17 +0200)]
s3:libsmb: make use of cli_state_server_gss_blob()

metze

12 years agos3:libsmb: make use of cli_state_server_challenge()
Stefan Metzmacher [Tue, 13 Sep 2011 19:17:02 +0000 (21:17 +0200)]
s3:libsmb: make use of cli_state_server_challenge()

metze

12 years agos3:libsmb: add cli_state_server_challenge() and cli_state_server_gss_blob()
Stefan Metzmacher [Tue, 13 Sep 2011 18:41:09 +0000 (20:41 +0200)]
s3:libsmb: add cli_state_server_challenge() and cli_state_server_gss_blob()

metze

12 years agos3:libsmb: remove the guid from the cli->secblob in spnego mode
Stefan Metzmacher [Tue, 13 Sep 2011 19:14:05 +0000 (21:14 +0200)]
s3:libsmb: remove the guid from the cli->secblob in spnego mode

metze

12 years agos3:libsmb: make sure cli->secblob.length is 8 if we get a challenge
Stefan Metzmacher [Tue, 13 Sep 2011 19:13:21 +0000 (21:13 +0200)]
s3:libsmb: make sure cli->secblob.length is 8 if we get a challenge

metze

12 years agos3:libsmb: restructure cli_negprot_done() secblob handling a bit
Stefan Metzmacher [Tue, 13 Sep 2011 19:12:44 +0000 (21:12 +0200)]
s3:libsmb: restructure cli_negprot_done() secblob handling a bit

metze

12 years agos3:libsmb: move cli->sesskey to cli->conn.smb1.server.session_key
Stefan Metzmacher [Tue, 13 Sep 2011 16:45:36 +0000 (18:45 +0200)]
s3:libsmb: move cli->sesskey to cli->conn.smb1.server.session_key

metze

12 years agos3:libsmb: detect lock_read and write_unlock support
Stefan Metzmacher [Tue, 13 Sep 2011 16:09:42 +0000 (18:09 +0200)]
s3:libsmb: detect lock_read and write_unlock support

metze

12 years agos3:libsmb: move cli->*braw_supported to cli->conn.smb1.server.*braw
Stefan Metzmacher [Tue, 13 Sep 2011 16:07:58 +0000 (18:07 +0200)]
s3:libsmb: move cli->*braw_supported to cli->conn.smb1.server.*braw

This is currently unused, but we might use it in future.

metze

12 years agos3:libsmb: move cli->sec_mode to cli->conn.smb1.server.security_mode
Stefan Metzmacher [Tue, 13 Sep 2011 14:48:18 +0000 (16:48 +0200)]
s3:libsmb: move cli->sec_mode to cli->conn.smb1.server.security_mode

metze

12 years agos3:libsmb: move cli->max_mux to cli->conn.smb1.server.max_mux
Stefan Metzmacher [Tue, 13 Sep 2011 14:31:58 +0000 (16:31 +0200)]
s3:libsmb: move cli->max_mux to cli->conn.smb1.server.max_mux

metze

12 years agos3:libsmb: move cli->max_xmit to cli->conn.smb1.max_xmit
Stefan Metzmacher [Tue, 13 Sep 2011 13:00:59 +0000 (15:00 +0200)]
s3:libsmb: move cli->max_xmit to cli->conn.smb1.max_xmit

And keep cli->conn.smb1.client.max_xmit and
cli->conn.smb1.server.max_xmit.

metze

12 years agos3:libsmb: move cli->smb1.mid to cli->conn.smb1.mid
Stefan Metzmacher [Tue, 13 Sep 2011 13:07:29 +0000 (15:07 +0200)]
s3:libsmb: move cli->smb1.mid to cli->conn.smb1.mid

metze

12 years agos3:libsmb: move cli->capabilities to cli->conn.smb1.capabilities
Stefan Metzmacher [Tue, 13 Sep 2011 13:00:59 +0000 (15:00 +0200)]
s3:libsmb: move cli->capabilities to cli->conn.smb1.capabilities

And keep cli->conn.smb1.client.capabilities and
cli->conn.smb1.server_capabilities.

metze

12 years agos3:libsmb: move cli->protocol to cli->conn.protocol
Stefan Metzmacher [Tue, 13 Sep 2011 12:38:38 +0000 (14:38 +0200)]
s3:libsmb: move cli->protocol to cli->conn.protocol

metze

12 years agos3:libsmb: don't set cli->protocol in cli_state_create()
Stefan Metzmacher [Tue, 13 Sep 2011 12:37:29 +0000 (14:37 +0200)]
s3:libsmb: don't set cli->protocol in cli_state_create()

This is done in cli_negprot_done(), when we know the protocol.

metze

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Thu Sep 15 11:57:18 CEST 2011 on sn-devel-104

12 years agos3:libsmb: pass max_protocol to cli_negprot()
Stefan Metzmacher [Tue, 13 Sep 2011 12:33:31 +0000 (14:33 +0200)]
s3:libsmb: pass max_protocol to cli_negprot()

metze

12 years agos3:libsmb: add basic max_protocol support in cli_negprot()
Stefan Metzmacher [Tue, 13 Sep 2011 12:21:28 +0000 (14:21 +0200)]
s3:libsmb: add basic max_protocol support in cli_negprot()

metze

12 years agos3:libsmb: use local variables in cli_state_create()
Stefan Metzmacher [Thu, 8 Sep 2011 15:29:58 +0000 (17:29 +0200)]
s3:libsmb: use local variables in cli_state_create()

We don't need to keep use_spnego, use_level_II_oplocks, force_dos_errors
and force_ascii within struct cli_state.

metze

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Thu Sep 15 10:12:17 CEST 2011 on sn-devel-104

12 years agos3:libsmb: use CAP_EXTENDED_SECURITY instead of cli->use_spnego
Stefan Metzmacher [Thu, 8 Sep 2011 15:28:29 +0000 (17:28 +0200)]
s3:libsmb: use CAP_EXTENDED_SECURITY instead of cli->use_spnego

cli->capabilities contains the negotiated capabilities.

metze

12 years agos3:libsmb: make use of SMB_CAP_BOTH/CLIENT_MASK in cli_session_setup_capabilities()
Stefan Metzmacher [Thu, 8 Sep 2011 14:39:14 +0000 (16:39 +0200)]
s3:libsmb: make use of SMB_CAP_BOTH/CLIENT_MASK in cli_session_setup_capabilities()

This matches a w2k3 client.

metze

12 years agos3:libsmb: calculate the negotiated SMB1 capabilities in cli_negprot_done()
Stefan Metzmacher [Thu, 8 Sep 2011 14:14:51 +0000 (16:14 +0200)]
s3:libsmb: calculate the negotiated SMB1 capabilities in cli_negprot_done()

We calculate the negotiated capabilities based on the mask for:
 - client only flags
 - flags used in both directions
 - server only flags

metze

12 years agos3:include: add some masks for SMB1 CAP_* flags
Stefan Metzmacher [Thu, 8 Sep 2011 14:06:05 +0000 (16:06 +0200)]
s3:include: add some masks for SMB1 CAP_* flags

The flags are devided into 3 sections:
- client only flags
- flags used in both directions
- server only flags

metze

12 years agos3:libsmb: calculate all SMB1 capabilities we want to support for the connection
Stefan Metzmacher [Thu, 8 Sep 2011 14:09:35 +0000 (16:09 +0200)]
s3:libsmb: calculate all SMB1 capabilities we want to support for the connection

We should do this at startup in cli_state_create()
and later calculate the negotiated capabilities in
cli_negprot_done().

metze

12 years agos3:libsmb: no need to reset capabilities in cli_session_setup_lanman2()
Stefan Metzmacher [Thu, 8 Sep 2011 13:50:25 +0000 (15:50 +0200)]
s3:libsmb: no need to reset capabilities in cli_session_setup_lanman2()

This is only used cli->protocol < PROTOCOL_NT1, in which case
cli_negprot_done() has already reset cli->capabilities.

metze

12 years agos3:libsmb: make sure we always set cli->capabilities at the end of cli_negprot_done()
Stefan Metzmacher [Thu, 8 Sep 2011 13:41:29 +0000 (15:41 +0200)]
s3:libsmb: make sure we always set cli->capabilities at the end of cli_negprot_done()

If the server doesn't support PROTOCOL_NT1 we should reset the negotiated
capabilities to 0.

metze

12 years agoAdd a missing include file to two VFS modules
Richard Sharpe [Wed, 14 Sep 2011 23:23:36 +0000 (16:23 -0700)]
Add a missing include file to two VFS modules
Signed-off-by: Jeremy Allison <jra@samba.org>
Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Thu Sep 15 02:56:36 CEST 2011 on sn-devel-104

12 years agoFinish commit 8745c70d by Michael Adam.
Jeremy Allison [Wed, 14 Sep 2011 21:07:29 +0000 (14:07 -0700)]
Finish commit 8745c70d by Michael Adam.

If you're going to move winbindd_cache.tdb to the state_path, do it *everywhere*.

Found by Ira Cooper <ira@wakeful.net>.

Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Thu Sep 15 00:43:04 CEST 2011 on sn-devel-104

12 years agos3:libsmb: remove unused cli->is_samba
Stefan Metzmacher [Mon, 12 Sep 2011 01:19:35 +0000 (03:19 +0200)]
s3:libsmb: remove unused cli->is_samba

s3:libsmb: remove unused cli->is_samba

metze

Signed-off-by: Jeremy Allison <jra@samba.org>
12 years agos3:libsmb: align chunk_size for cli_pull/push() to a page size of 1024 bytes
Stefan Metzmacher [Mon, 12 Sep 2011 00:48:25 +0000 (02:48 +0200)]
s3:libsmb: align chunk_size for cli_pull/push() to a page size of 1024 bytes

s3:libsmb: align chunk_size for cli_pull/push() to a page size of 1024 bytes

metze

Signed-off-by: Jeremy Allison <jra@samba.org>
12 years agos3:client.h: remove unused defines
Stefan Metzmacher [Tue, 13 Sep 2011 07:58:34 +0000 (09:58 +0200)]
s3:client.h: remove unused defines

s3:client.h: remove unused defines

metze

Signed-off-by: Jeremy Allison <jra@samba.org>
12 years agos3:libsmb: let cli_write_max_bufsize() return the max number of possible bytes
Stefan Metzmacher [Mon, 12 Sep 2011 00:45:22 +0000 (02:45 +0200)]
s3:libsmb: let cli_write_max_bufsize() return the max number of possible bytes

s3:libsmb: let cli_write_max_bufsize() return the max number of possible bytes

We now return what's possible on the wire.

Which is 0x1FFFF - data_offset if CAP_LARGE_WRITEX is given by
the server (without signing) or 0xFFFFFF - data_offset
if CIFS_UNIX_LARGE_READ_CAP is available (without signing/sealing).
Otherwise we return max_xmit - data_offset.

metze

Signed-off-by: Jeremy Allison <jra@samba.org>
12 years agos3:libsmb: let cli_read_max_bufsize() return the max number of possible bytes
Stefan Metzmacher [Mon, 12 Sep 2011 00:45:22 +0000 (02:45 +0200)]
s3:libsmb: let cli_read_max_bufsize() return the max number of possible bytes

s3:libsmb: let cli_read_max_bufsize() return the max number of possible bytes

We now return what's possible on the wire.

Which is 0xFFFF if CAP_LARGE_READX is given by the server
or 0xFFFFFF - data_offset if CIFS_UNIX_LARGE_READ_CAP
is available (without signing/sealing). Otherwise we return
max_xmit - data_offset.

metze

Signed-off-by: Jeremy Allison <jra@samba.org>
12 years agos3:smbd: SMB ReadX with size > 0xffff should only possible for samba clients.
Stefan Metzmacher [Sat, 10 Sep 2011 09:02:02 +0000 (11:02 +0200)]
s3:smbd: SMB ReadX with size > 0xffff should only possible for samba clients.

Windows 2008 R2 (and others) ignore the high bits for the read size.

Unless we're using the unix extentions and the client
uses CIFS_UNIX_LARGE_READ_CAP, we should also ignore
the high bits.

But we still need to support old "smbclient" binaries
and have to check if the client is "Samba".

metze

Signed-off-by: Jeremy Allison <jra@samba.org>
12 years agos3:smbd: remember the client unix capabilities on the connection
Stefan Metzmacher [Mon, 12 Sep 2011 03:12:50 +0000 (05:12 +0200)]
s3:smbd: remember the client unix capabilities on the connection

metze

Signed-off-by: Jeremy Allison <jra@samba.org>
12 years agoFix bug #8453 - smbclient segfaults when dialect option -m is used for legacy dialects
Jeremy Allison [Wed, 14 Sep 2011 18:59:22 +0000 (11:59 -0700)]
Fix bug #8453 - smbclient segfaults when dialect option -m is used for legacy dialects

Ensure we have valid pointers.

12 years agolibcli/auth: add some const to SMBNTencrypt_hash() and SMBNTencrypt()
Stefan Metzmacher [Wed, 14 Sep 2011 13:56:23 +0000 (15:56 +0200)]
libcli/auth: add some const to SMBNTencrypt_hash() and SMBNTencrypt()

metze

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Wed Sep 14 19:49:24 CEST 2011 on sn-devel-104

12 years agos4:wrepl_server: return NT_STATUS_CONNECTION_DISCONNECTED
Stefan Metzmacher [Wed, 14 Sep 2011 15:57:37 +0000 (17:57 +0200)]
s4:wrepl_server: return NT_STATUS_CONNECTION_DISCONNECTED

We should return the same in all places.

metze

12 years agos4:libcli/wrepl: return NT_STATUS_CONNECTION_DISCONNECTED
Stefan Metzmacher [Wed, 14 Sep 2011 15:57:37 +0000 (17:57 +0200)]
s4:libcli/wrepl: return NT_STATUS_CONNECTION_DISCONNECTED

We should return the same in all places.

metze

12 years agos4:lib/messaging: let irpc handles return NT_STATUS_CONNECTION_DISCONNECTED
Stefan Metzmacher [Wed, 14 Sep 2011 15:57:37 +0000 (17:57 +0200)]
s4:lib/messaging: let irpc handles return NT_STATUS_CONNECTION_DISCONNECTED

We should return the same in all places.

metze

12 years agos4:librpc/rpc: return NT_STATUS_CONNECTION_DISCONNECTED
Stefan Metzmacher [Wed, 14 Sep 2011 15:57:37 +0000 (17:57 +0200)]
s4:librpc/rpc: return NT_STATUS_CONNECTION_DISCONNECTED

We should return the same in all places.

metze

12 years agos3:winbindd: let wbint handles return NT_STATUS_CONNECTION_DISCONNECTED
Stefan Metzmacher [Wed, 14 Sep 2011 15:57:37 +0000 (17:57 +0200)]
s3:winbindd: let wbint handles return NT_STATUS_CONNECTION_DISCONNECTED

We should return the same in all places.

metze

12 years agos3:rpc_server: let rpcint handles return NT_STATUS_CONNECTION_DISCONNECTED
Stefan Metzmacher [Wed, 14 Sep 2011 15:57:37 +0000 (17:57 +0200)]
s3:rpc_server: let rpcint handles return NT_STATUS_CONNECTION_DISCONNECTED

We should return the same in all places.

metze

12 years agos3:rpc_client: return NT_STATUS_CONNECTION_DISCONNECTED
Stefan Metzmacher [Wed, 14 Sep 2011 15:56:30 +0000 (17:56 +0200)]
s3:rpc_client: return NT_STATUS_CONNECTION_DISCONNECTED

We should return the same in all places
and don't mix NT_STATUS_INVALID_CONNECTION and NT_STATUS_CONNECTION_INVALID.

metze

12 years agos3:libsmb: return NT_STATUS_CONNECTION_DISCONNECTED instead of NT_STATUS_CONNECTION_I...
Stefan Metzmacher [Wed, 14 Sep 2011 15:54:48 +0000 (17:54 +0200)]
s3:libsmb: return NT_STATUS_CONNECTION_DISCONNECTED instead of NT_STATUS_CONNECTION_INVALID

We should return the same in all places.

metze

12 years agos3:torture/run_oplock4: don't set cli->use_level_II_oplocks
Stefan Metzmacher [Thu, 8 Sep 2011 15:24:02 +0000 (17:24 +0200)]
s3:torture/run_oplock4: don't set cli->use_level_II_oplocks

Doing this after the session setup is pointless,
as that's the only place where we tell the server we support
level II oplocks.

metze

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Wed Sep 14 17:23:46 CEST 2011 on sn-devel-104

12 years agos3:smb2_server: SMB2_OP_GETINFO doesn't require at least 1 dyn byte
Stefan Metzmacher [Wed, 14 Sep 2011 11:04:28 +0000 (13:04 +0200)]
s3:smb2_server: SMB2_OP_GETINFO doesn't require at least 1 dyn byte

metze

12 years agos3-libnet: add missing newlines in debug statement.
Günther Deschner [Wed, 14 Sep 2011 12:20:50 +0000 (14:20 +0200)]
s3-libnet: add missing newlines in debug statement.

Guenther

Autobuild-User: Günther Deschner <gd@samba.org>
Autobuild-Date: Wed Sep 14 15:52:10 CEST 2011 on sn-devel-104

12 years agos3:smbd: make use of better SMB signing negotiation
Stefan Metzmacher [Mon, 12 Sep 2011 07:19:06 +0000 (09:19 +0200)]
s3:smbd: make use of better SMB signing negotiation

metze

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Wed Sep 14 09:41:02 CEST 2011 on sn-devel-104

12 years agos3:libsmb: make use of new advanded SMB signing
Stefan Metzmacher [Mon, 12 Sep 2011 07:16:27 +0000 (09:16 +0200)]
s3:libsmb: make use of new advanded SMB signing

metze

12 years agos3:smb_signing: add support for easier negotiation of SMB signing
Stefan Metzmacher [Mon, 12 Sep 2011 07:04:53 +0000 (09:04 +0200)]
s3:smb_signing: add support for easier negotiation of SMB signing

We don't make use of it yet, but it will follow.

metze

12 years agos3:smbd: echo FLAGS2_SMB_SECURITY_SIGNATURES* and the signature field in the reply
Stefan Metzmacher [Fri, 9 Sep 2011 20:44:44 +0000 (22:44 +0200)]
s3:smbd: echo FLAGS2_SMB_SECURITY_SIGNATURES* and the signature field in the reply

This matches what windows is doing.

metze

12 years agotdb2: remove bogus leftover .orig file.
Rusty Russell [Wed, 14 Sep 2011 02:28:20 +0000 (11:58 +0930)]
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

12 years agoFix bug #8229 - git patch attached against 3.6.0-rc2 to fix 'widelinks' regression...
Jeremy Allison [Tue, 13 Sep 2011 23:42:09 +0000 (16:42 -0700)]
Fix bug #8229 - git patch attached against 3.6.0-rc2 to fix 'widelinks' regression intro'd in 3.2

Add "allow insecure widelinks" to re-enable the ability (requested
by some sites) to have "widelinks = yes" and "unix extensions = yes".

Based on an original patch by Linda Walsh <samba@tlinx.org>

Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Wed Sep 14 03:55:45 CEST 2011 on sn-devel-104

12 years agotdb_compat: change offset of CLEAR_IF_FIRST lock.
Rusty Russell [Tue, 13 Sep 2011 22:43:28 +0000 (08:13 +0930)]
tdb_compat: change offset of CLEAR_IF_FIRST lock.

This makes it match tdb1, which mean it will Just Work as TDB2 gets
tdb1 format support.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Autobuild-User: Rusty Russell <rusty@rustcorp.com.au>
Autobuild-Date: Wed Sep 14 02:21:29 CEST 2011 on sn-devel-104

12 years agotdb_compat: support tdb_reopen/tdb_reopen_all for TDB2
Rusty Russell [Tue, 13 Sep 2011 22:43:28 +0000 (08:13 +0930)]
tdb_compat: support tdb_reopen/tdb_reopen_all for TDB2

This matters with the clear-if-first support: we need to re-establish
those locks at this point.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
12 years agoutil_tdb: return -1/0 from lock_with_timeout functions.
Rusty Russell [Tue, 13 Sep 2011 22:43:28 +0000 (08:13 +0930)]
util_tdb: return -1/0 from lock_with_timeout functions.

Keeps the tdb2 API change (which returns error codes, rather than -1)
localized.  The function returns -1 down the other path, so make it
consistent.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
12 years agodbwrap_tdb: handle tdb2 return values properly.
Rusty Russell [Tue, 13 Sep 2011 22:43:28 +0000 (08:13 +0930)]
dbwrap_tdb: handle tdb2 return values properly.

TDB2 versions of tdb_parse_record etc return an error code, not -1.
Turn those into -1/0 in dbwrap_tdb to insulate the rest of the code
from that change.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
12 years agotdb2: fix prototypes which return enum TDB_ERROR.
Rusty Russell [Tue, 13 Sep 2011 22:43:28 +0000 (08:13 +0930)]
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)

12 years agotdb2: fix return handling in pytdb wrapper.
Rusty Russell [Tue, 13 Sep 2011 22:43:27 +0000 (08:13 +0930)]
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>
12 years agotdb2: add error conversion functions.
Rusty Russell [Tue, 13 Sep 2011 22:43:27 +0000 (08:13 +0930)]
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)

12 years agotdb2: set tdb_error() on tdb_transaction_prepare_commit.
Rusty Russell [Tue, 13 Sep 2011 22:43:27 +0000 (08:13 +0930)]
tdb2: set tdb_error() on tdb_transaction_prepare_commit.

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

12 years agotdb2: make tests work in parallel.
Rusty Russell [Tue, 13 Sep 2011 22:43:27 +0000 (08:13 +0930)]
tdb2: make tests work in parallel.

Lazy cut & paste of tdb names causes failure when we run in parallel.

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

12 years agotdb2: fix error handling for tdb1_transaction_commit.
Rusty Russell [Tue, 13 Sep 2011 22:43:27 +0000 (08:13 +0930)]
tdb2: fix error handling for tdb1_transaction_commit.

tdb_repack() returns an enum TDB_ERROR, whereas
tdb1_transaction_commit is expected to return 0 or -1.

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

12 years agotdb2: don't return -1 (ie. TDB_ERR_CORRUPT) on transaction write fail.
Rusty Russell [Tue, 13 Sep 2011 22:43:27 +0000 (08:13 +0930)]
tdb2: don't return -1 (ie. TDB_ERR_CORRUPT) on transaction write fail.

A left-over -1 return; should be returning ecode (probably TDB_ERR_IO).

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

12 years agotdb2: enhance tdb1 porting document.
Rusty Russell [Tue, 13 Sep 2011 22:43:27 +0000 (08:13 +0930)]
tdb2: enhance tdb1 porting document.

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

12 years agotdb2: delete old tdb1 tests.
Rusty Russell [Tue, 13 Sep 2011 22:43:27 +0000 (08:13 +0930)]
tdb2: delete old tdb1 tests.

These two tdb1-specific tests have been superceded by the TDB_VERSION1
flags used in the main tests.

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

12 years agotdb2: test: Speed up run-01-new_database.
Rusty Russell [Tue, 13 Sep 2011 22:43:26 +0000 (08:13 +0930)]
tdb2: test: Speed up run-01-new_database.

Don't run tdb_check with failtest on, since it is very slow.  Do the
tdb_check w/ failtest in a new test, but skip MMAP suppression which
doesn't add much and slows down valgrind a lot.

Before this change run-01-new_database took 40 seconds (under
valgrind), after it takes 8 seconds, and run-12-check takes 3
seconds).

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

12 years agotdb2: speed up testing.
Rusty Russell [Tue, 13 Sep 2011 22:43:26 +0000 (08:13 +0930)]
tdb2: speed up testing.

The time to run tests under valgrind has become excessive; particularly
the failure tests which fork().   Thus we cut down testing:

1) api-94-repack: reduce from 234 seconds to 2 seconds by cutting
   iterations, despite adding TDB_VERSION1 tests.

2) api-missing-entries: reduce from 17 seconds to under 1 second by
   not checking db inside loop, but at end.

This reduces the total ccanlint time from 729 to 489 seconds.

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

12 years agotdb2: test: convert (non-invasive) run tests to api tests.
Rusty Russell [Tue, 13 Sep 2011 22:43:26 +0000 (08:13 +0930)]
tdb2: test: convert (non-invasive) run tests to api tests.

This reduces compilation time, since these are merely linked with the
pre-built module, rather than recompiling it into the test (which
allows for fancy things like failtest).

This reduces the test compile time down from about 62 seconds to 45
seconds.  Since ccanlint compiles tests three times (once normally,
once with coverage, and once with reduced config.h) this makes a
difference: we go from 780 seconds to 729 seconds.

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

12 years agotdb2: test: fix run-57-die-during-transaction.c to be more efficient.
Rusty Russell [Tue, 13 Sep 2011 22:43:26 +0000 (08:13 +0930)]
tdb2: test: fix run-57-die-during-transaction.c to be more efficient.

We track malloc and free, but we didn't catch the free() inside
external_agent, which means that our list of allocations keeps
growing.  Particularly under valgrind, which re-uses memory less than
the glibc allocator.

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

12 years agotdb2: don't continue if tdb1_find fails.
Rusty Russell [Tue, 13 Sep 2011 22:43:26 +0000 (08:13 +0930)]
tdb2: don't continue if tdb1_find fails.

The TDB1 code's tdb1_find() returns 0 on error; the callers should
not assume that the error means that the entry wasn't found, but use
last_error to determine it.

This was found by looking at how long the failure path testing for
test/run-10-simple-store.c was taking under valgrind, ie:

valgrind -q ./run-10-simple-store --show-slowest

This change dropped the time for that test from 53 seconds to 19
seconds.

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

12 years agotdb2: test: try (almost) all tests with TDB_VERSION1 flag.
Rusty Russell [Tue, 13 Sep 2011 22:43:26 +0000 (08:13 +0930)]
tdb2: test: try (almost) all tests with TDB_VERSION1 flag.

There are some minor changes required, in particular:

1) Make sure lockcheck understands tdb1 allrecord lock upgrades.
2) Handle tdb1 sequence number jumps: various operations increment the
   sequence number twice, especually tdb_append.
3) Don't test fail on unlock, since it gets triggered with traversal on the
   tdb1 backend (we didn't actually ever test this case for tdb2).
4) Move clear_if_first to offset 4, to match tdb1.

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

12 years agotdb2: log allocation failures in tdb1 backend.
Rusty Russell [Tue, 13 Sep 2011 22:43:26 +0000 (08:13 +0930)]
tdb2: log allocation failures in tdb1 backend.

The TDB2 tests are stricter about this; they want every error logged.

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

12 years agotdb2: fix bogus error from tdb_unlockall() after fork in tdb1 backend.
Rusty Russell [Tue, 13 Sep 2011 22:43:13 +0000 (08:13 +0930)]
tdb2: fix bogus error from tdb_unlockall() after fork in tdb1 backend.

We're always allowed to unlock after a fork; by setting the count to 0
before calling the generic unlock function we don't trigger the pid
check.

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

12 years agotdb2: check lock owner in tdb1 backend.
Rusty Russell [Tue, 13 Sep 2011 22:42:13 +0000 (08:12 +0930)]
tdb2: check lock owner in tdb1 backend.

This reports errors if we fork() while holding a lock, or misuse a tdb
which we have dual-opened.

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

12 years agotdb2: return TDB_ERR_RDONLY from transactions on R/O databases, log nesting
Rusty Russell [Tue, 13 Sep 2011 22:41:13 +0000 (08:11 +0930)]
tdb2: return TDB_ERR_RDONLY from transactions on R/O databases, log nesting

Rather than rturning TDB_ERR_EINVAL, return TDB_ERR_RDONLY, and log
when we fail due to nesting.

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

12 years agotdb2: add stats to tdb1 backend.
Rusty Russell [Tue, 13 Sep 2011 22:40:13 +0000 (08:10 +0930)]
tdb2: add stats to tdb1 backend.

It's actually quite a good fit; we use compare_wrong_bucket for dead
records, which is kind of correct (they should be in the free list).

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

12 years agotdb2: increment seqnum on tdb_wipe_all in tdb1 backend.
Rusty Russell [Tue, 13 Sep 2011 22:39:13 +0000 (08:09 +0930)]
tdb2: increment seqnum on tdb_wipe_all in tdb1 backend.

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

12 years agotdb2: log an error when calling tdb_store() on read-only TDB in tdb1 backend.
Rusty Russell [Tue, 13 Sep 2011 22:38:13 +0000 (08:08 +0930)]
tdb2: log an error when calling tdb_store() on read-only TDB in tdb1 backend.

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

12 years agotdb2: catch errors in tdb1_needs_recovery()
Rusty Russell [Tue, 13 Sep 2011 22:37:13 +0000 (08:07 +0930)]
tdb2: catch errors in tdb1_needs_recovery()

The tdb1 backend simply returns "true" if there's an error determining
if a tdb needs recovery.  But this leads failtest down a rabbit hole;
it's better to return the error at this case (and makes for better for
diagnostics, since they will come from the first fault, not later in
tdb1_transaction_recover().

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

12 years agotdb2: add tdb_attribute_tdb1_max_dead
Rusty Russell [Tue, 13 Sep 2011 22:36:13 +0000 (08:06 +0930)]
tdb2: add tdb_attribute_tdb1_max_dead

This allows us to simulate the old "volatile" flag for tdb1.  It's not
necessary for tdb2.

As this is the last function in tdb1.h, we remove that file.

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

12 years agotdb2: expose and document tdb1_incompatible_hash.
Rusty Russell [Tue, 13 Sep 2011 22:35:13 +0000 (08:05 +0930)]
tdb2: expose and document tdb1_incompatible_hash.

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

12 years agotdb2: make tdb1_null static.
Rusty Russell [Tue, 13 Sep 2011 22:34:13 +0000 (08:04 +0930)]
tdb2: make tdb1_null static.

It's only used in two files, make it static in one and do it manually
in the other.

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

12 years agotdb2: tdb_repack
Rusty Russell [Tue, 13 Sep 2011 22:33:13 +0000 (08:03 +0930)]
tdb2: tdb_repack

Move the tdb1_repack() code into the core, make it general, rename to
tdb_repack().

It's generic code: copy database into temporary, wipe it, copy back.

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

12 years agotdb2: unify tdb1_wipe into tdb_wipe.
Rusty Russell [Tue, 13 Sep 2011 22:32:13 +0000 (08:02 +0930)]
tdb2: unify tdb1_wipe into tdb_wipe.

Switch on the TDB_VERSION1 flag.

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

12 years agotdb2: unify tdb1_get_seqnum/tdb1_increment_seqnum into tdb_get_seqnum/tdb_inc_seqnum
Rusty Russell [Tue, 13 Sep 2011 22:31:13 +0000 (08:01 +0930)]
tdb2: unify tdb1_get_seqnum/tdb1_increment_seqnum into tdb_get_seqnum/tdb_inc_seqnum

Switch on the TDB_VERSION1 flag.

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

12 years agotdb2: unify tdb1_firstkey/tdb1_nextkey into tdb_firstkey/tdb_nextkey.
Rusty Russell [Tue, 13 Sep 2011 22:30:13 +0000 (08:00 +0930)]
tdb2: unify tdb1_firstkey/tdb1_nextkey into tdb_firstkey/tdb_nextkey.

Switch on the TDB_VERSION1 flag.

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

12 years agotdb2: unify tdb1_check and tdb1_summary into tdb_check and tdb_summary.
Rusty Russell [Tue, 13 Sep 2011 22:29:13 +0000 (07:59 +0930)]
tdb2: unify tdb1_check and tdb1_summary into tdb_check and tdb_summary.

Switch on the TDB_VERSION1 flag.  Also, change tdb1_check's checkfn argument
to return an error code (and set tdb->last_error accordingly).

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

12 years agotdb2: unify tdb1_transaction_start etc. into tdb_transaction_start.
Rusty Russell [Tue, 13 Sep 2011 22:28:13 +0000 (07:58 +0930)]
tdb2: unify tdb1_transaction_start etc. into tdb_transaction_start.

Switch on the TDB_VERSION1 flag.

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

12 years agotdb2: unify tdb1_parse_record into tdb_parse_record
Rusty Russell [Tue, 13 Sep 2011 22:27:13 +0000 (07:57 +0930)]
tdb2: unify tdb1_parse_record into tdb_parse_record

Switch on the TDB_VERSION1 flag.

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