Michael Adam [Wed, 11 Apr 2012 13:51:40 +0000 (15:51 +0200)]
s3:registry: fix seqnum race in regdb_fetch_keys_internal
This prevents race between fetching seqnum and key content.
Because there is currently no way to atomically fetch the
record along with the seqnum, I use a loop.
This is far from optimal and should should ideally be done
differently. But for now it fixes the race.
Michael Adam [Wed, 11 Apr 2012 13:48:02 +0000 (15:48 +0200)]
s3:registry: fix seqnum race in fetch_values_internal
This prevents race between fetching seqnum and key content.
Because there is currently no way to atomically fetch the
record along with the seqnum, I use a loop.
This is far from optimal and should should ideally be done
differently. But for now it fixes the race.
Michael Adam [Wed, 11 Apr 2012 14:02:44 +0000 (16:02 +0200)]
s3:registry: update the seqnum in the subkey cache at the end of regval_store_keys
The purpose is to prevent next reads from going to disk.
Note that this will currently only be effective with local tdbs, not
with ctdb: For tdb, store and delete bump the seqnum while transaction
commit does not. For ctdb, transaction commit bumps the seqnum, while
store and delete don't... This needs fixing (in ctdb).
Michael Adam [Wed, 11 Apr 2012 13:38:29 +0000 (15:38 +0200)]
s3:registry:db: update the value container seqnum after storing/deleting to prevent next read from going to disk if possible
Note that this will currently only be effective in the local TDB implementation.
For CTDB, this wont work since seqnum currently works differently there (needs
fixing): For tdb, store and delete operations bump the db seqnum, while
transaction commits don't. For ctdb, the seqnum is bumped by the transaction
commit but not by store and delete operations.
Michael Adam [Thu, 12 Apr 2012 20:17:35 +0000 (22:17 +0200)]
s3:registry: wrap reg_createkey() in a transaction
This is wrong layering (calling into regdb_transaction* in the reg_api code)
but fixes a potential race. It makes the multi-step create procedure atomic.
lib/replace: split out GSSAPI from lib/replace/system/kerberos.h into lib/replace/system/gssapi.h
With waf build include directories are defined by dependencies specified to subsystems.
Without proper dependency <gssapi/gssapi.h> cannot be found for embedded Heimdal builds
when there are no system-wide gssapi/gssapi.h available.
Split out GSSAPI header includes in a separate replacement header and use that explicitly
where needed.
Autobuild-User: Alexander Bokovoy <ab@samba.org>
Autobuild-Date: Wed Apr 25 00:18:33 CEST 2012 on sn-devel-104
Simo Sorce [Sat, 21 Apr 2012 20:55:35 +0000 (16:55 -0400)]
Cracknames: use krb wrapper functions so it works with MIT
Also avoid a silly game with directly modifying the principal and
then calling krb5_principal_unparse_flags to get out a string.
If we already assume it is a 2 components name and know what outcome we are
going to get, just go ahead and talloc_asprintf the linearized string.
Make sure krb5_principal_get_num_comp is identified as present for Heimdal build
Common wrappers for MIT / Heimdal use krb5_principal_get_num_comp() to replace krb5_princ_size
but rely on krb5_principal_get_num_comp() identified by the build. As we know it exists in Heimdal,
define it for waf build.
With PROCESS_SEPARATE_RULE in wafsamba it is now possible to simplify
configuration and checks for MIT/Heimdal Kerberos implementations.
1. Move MIT krb5 checks from source3/wscript to wscript_configure_krb5
2. Make sure they are called same way (--with-mit-krb5-checks)
3. If no configure checks identified MIT krb5 in system (or were disabled),
make sure Heimdal build is selected, embedded (default) or system-provided.
This makes logic of configuration unchanged for Heimdal builds but adds
less hacky way to use MIT krb5 builds. The latter does not work yet as we
need to untangle more subsystems from HDB/Heimdal-specific details but
lays out a foundation for that.
Jeremy Allison [Fri, 20 Apr 2012 22:53:55 +0000 (15:53 -0700)]
Add complete test program for Linux kernel aio inside configure.in (I discovered yesterday there are systems with only half the glibc changes needed to implement userspace kaio.
Andrew Bartlett [Mon, 23 Apr 2012 05:03:05 +0000 (15:03 +1000)]
build: Remove support for a system libsmbclient
With the new --private-libraries option, there is no longer the need
to have this support, which was aimed at avoiding the duplication
between two different libsmbclient binaries in a packaged
distribution. By using --private-libraries instead, we do not
introduce a dependency between Samba 4.0 packages and whatever other
packages are on the system.
Andrew Bartlett [Mon, 23 Apr 2012 03:47:46 +0000 (13:47 +1000)]
s4-libnet: Fix segfault shown by wbinfo --group-info=administrator
The issue was that after the LookupNames call indicated that this was
not a group, the call paths diverged, with both sucess and failure
paths running.
Michael Adam [Fri, 20 Apr 2012 08:56:58 +0000 (10:56 +0200)]
s3:memcache: remove the idmap-part from memcache
This was useful before the idmap cache was moved to gencache.
Nowadays it is available to smbd through gencache, so we
can remove the extra caching layer.
Volker Lendecke [Wed, 15 Feb 2012 15:38:43 +0000 (16:38 +0100)]
s3-g_lock: Use dbwrap_record_watch_send/recv
This simplifies the g_lock implementation. The new implementation tries to
acquire a lock. If that fails due to a lock conflict, wait for the g_lock
record to change. Upon change, just try again. The old logic had to cope with
pending records and an ugly hack into ctdb itself. As a bonus, we now get a
really clean async g_lock_lock_send/recv that can asynchronously wait for a
global lock. This would have been almost impossible to do without the
dbwrap_record_watch infrastructure.
Andrew Bartlett [Thu, 19 Apr 2012 05:34:48 +0000 (15:34 +1000)]
wafsamba: allow certain public libraries to be forced to be private
This will help installations where the Samba4 libraries must be used but
the main system is not using the system libs that would normally
be installed. This in particular impacts on libwbclient, which is a
core dep, but is different to that used by the rest of a Samba 3.x based
system.
Use eg: ./configure --private-libraries=wbclient
Andrew Bartlett
Autobuild-User: Andrew Bartlett <abartlet@samba.org>
Autobuild-Date: Fri Apr 20 03:27:22 CEST 2012 on sn-devel-104