| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Michael Adam <obnox@samba.org>
|
|
|
|
| |
(This used to be ctdb commit bb3a32ec055432afc7225c9fd7504fb187694bda)
|
|
|
|
|
|
| |
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
(This used to be ctdb commit 0f40ea2386892ae10b30beeded0e00edf4c019c3)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This flag to tdb_open/tdb_open_ex effects creation of a new database:
1) Uses the Jenkins lookup3 hash instead of the old gdbm hash if none is
specified,
2) Places a non-zero field in header->rwlocks, so older versions of TDB will
refuse to open it.
This means that the caller (ie Samba) can set this flag to safely
change the hash function. Versions of TDB from this one on will either
use the correct hash or refuse to open (if a different hash is specified).
Older TDB versions will see the nonzero rwlocks field and refuse to open
it under any conditions.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(This used to be ctdb commit dd86b24ae5307fe09d4ae22b7070d747013a2b07)
|
|
|
|
|
|
|
|
|
|
|
|
| |
If the caller to tdb_open_ex() doesn't specify a hash, and tdb_old_hash
doesn't match, try tdb_jenkins_hash.
This was Metze's idea: it makes life simpler, especially with the upcoming
TDB_INCOMPATIBLE_HASH flag.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(This used to be ctdb commit 3f7ed2b46cb304d553d3f7bd34554d695b8ccc52)
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a better hash than the default: shipping it with tdb makes it easy
for callers to use it as the hash by passing it to tdb_open_ex().
This version taken from CCAN and modified, which took it from
http://www.burtleburtle.net/bob/c/lookup3.c.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(This used to be ctdb commit 58c9d90c758aa7c062d84ab97f62947190526356)
|
|
|
|
|
|
| |
Guenther
(This used to be ctdb commit e34e639c214b010ff18140b769a8c9245c92006f)
|
|
|
|
|
|
| |
this might help reduce test times and load on test machines
(This used to be ctdb commit 5c4240c364c52073ca64fddf2aa2c1593db0093b)
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is Stefan Metzmacher <metze@samba.org>'s patch with minor changes:
1) Use the TDB_MAGIC constant so both hashes aren't of strings.
2) Check the hash in tdb_check (paranoia, really).
3) Additional check in the (unlikely!) case where both examples hash to 0.
4) Cosmetic changes to var names and complaint message.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(This used to be ctdb commit 63c582c99128c3623e270e8425966cab7744fb2f)
|
|
|
|
|
|
| |
(Imported from SAMBA 2eab1d7fdcb54f9ec27431ca4858eb64cb1bd835)
(This used to be ctdb commit 52a87e608d0406aee9df99f7ac3ce16e834b520b)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit 207a213c/24fed55d purported to fix the problem of signals during
tdb_new_database (which could cause a spurious short write, hence a failure).
However, the code is wrong: newdb+written is not correct.
Fix this by introducing a general tdb_write_all() and using it here and in
the tracing code.
Cc: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(This used to be ctdb commit 27ba0e5a6681063225df7244a85aa304c51c6948)
|
|
|
|
|
|
| |
(Imported from commit 59315887a07033316edf91c0c57563eee5ea992d)
(This used to be ctdb commit fa38f818c71c85918e673ff563bf7a91a0c4cc17)
|
|
|
|
|
|
| |
(Imported from commit ea8e0d5d54b020c530e392c4edaeed43e20af303)
(This used to be ctdb commit 7161cb1607bb105cd6f4f32df50f519314e77b3f)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use our newly-generic nested lock tracking for the active lock.
Note that the tdb_have_extra_locks() and tdb_release_extra_locks()
functions have to skip over this lock now it is tracked.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from commit 4738d474c412cc59d26fcea64007e99094e8b675)
(This used to be ctdb commit 0a44584963232b0b1c62e30c9bede0439e68ef7d)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This never nests, so it's overkill, but it centralizes the locking into
lock.c and removes the ugly flag in the transaction code to track whether
we have the lock or not.
Note that we have a temporary hack so this places a real lock, despite
the fact that we are in a transaction.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from commit 9136818df30c7179e1cffa18201cdfc990ebd7b7)
(This used to be ctdb commit 6812d81907793299e874f121174d885f6500f374)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In many places we check whether locks are held: add a helper to do this.
The _tdb_lockall() case has already checked for the allrecord lock, so
the extra work done by tdb_have_extra_locks() is merely redundant.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from commit fba42f1fb4f81b8913cce5a23ca5350ba45f40e1)
(This used to be ctdb commit dda3587dfee598f387c2e696f3645486fac65052)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The word global is overloaded in tdb. The global_lock inside struct
tdb_context is used to indicate we hold a lock across all the chains.
Rename it to allrecord_lock.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from commit e9114a758538d460d4f9deae5ce631bf44b1eff8)
(This used to be ctdb commit a912657fb50a78b9b328c4564281fb9f7f1b3766)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The word global is overloaded in tdb. The GLOBAL_LOCK offset is used at
open time to serialize initialization (and by the transaction code to block
open).
Rename it to OPEN_LOCK.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from commit 7ab422d6fbd4f8be02838089a41f872d538ee7a7)
(This used to be ctdb commit a4f83910a485cf56f9b3df1dcf2ad36ebec57473)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is taken from the CCAN code base: rather than using tdb_brlock for
locking and unlocking, we split it into brlock and brunlock functions.
For extra debugging information, brunlock says what kind of lock it is
unlocking (even though fnctl locks don't need this). This requires an
extra argument to tdb_transaction_unlock() so we know whether the
lock was upgraded to a write lock or not.
We also use a "flags" argument tdb_brlock:
1) TDB_LOCK_NOWAIT replaces lck_type = F_SETLK (vs F_SETLKW).
2) TDB_LOCK_MARK_ONLY replaces setting TDB_MARK_LOCK bit in ltype.
3) TDB_LOCK_PROBE replaces the "probe" argument.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from commit 452b4a5a6efeecfb5c83475f1375ddc25bcddfbe)
(This used to be ctdb commit 7b5fdc9c588237c83a1e70e5437e2e5510055b92)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We need to keep TDB_ALLOW_NESTING as default behavior,
so that existing code continues to work.
However we may change the default together with a major version
number change in future.
metze
(cherry picked from samba commit 3b9f19ed919fef2e88b2f92ae541e07bc7379cd1)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be ctdb commit c1c0ede32dc00ed619d1cf5fda40a9de43995f3a)
|
|
|
|
|
|
|
|
|
| |
metze
(cherry picked from samba commit 85449b7bcc4bd7948bea38b5514a02357950a002)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be ctdb commit 855391c1e37012b0d6c673a304bb8da8a1efcd72)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
So that erroneous double tdb_close() calls do not try to close() same
fd again. This is like SAFE_FREE() but for fd.
Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(cherry picked from samba commit b4424f8234a78a79fb2d71d46ca208b4f12e0f9e)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be ctdb commit f5c992bdaeb73ef726ff4728a9922721474cd6f5)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It was a regrettable hack which I used to reduce line count in tdb; in fact it caused confusion as can be seen in this patch.
In particular, ecode now needs to be set before TDB_LOG anyway, and having it exposed in
the header is useless (the struct tdb_context isn't defined, so it's doubly useless).
Also, we should never set errno, as io.c was doing.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(cherry picked from samba commit b77f41d58b05101e02d8ac0e54cb0e30807d89c2)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be ctdb commit a6620f6e74aadc708395b21b42303d1082192fcc)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When TDB_TRACE is defined (in tdb_private.h), verbose tracing of tdb operations is enabled.
This can be replayed using "replay_trace" from http://ccan.ozlabs.org/info/tdb.
The majority of this patch comes from moving internal functions to _<funcname> to
avoid double-tracing. There should be no additional overhead for the normal (!TDB_TRACE)
case.
Note that the verbose traces compress really well with rzip.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(cherry picked from samba commit 703004340c3e0f43f741bd368d2525cfd187d590)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be ctdb commit b01b756cb577f32a1ec4597efb00017241e01685)
|
|
|
|
|
|
|
|
|
|
|
| |
In future, this may happen, and we don't want to clobber them.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(cherry picked from samba commit 398d0c2929026fccb3409316720a4dcad225ab05)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be ctdb commit eebd467961dad6cfb38c2a5d6e4b4dbf86e55e63)
|
|
|
|
|
|
|
|
| |
from samba commit 4fc9f9c3f943cdeb27e37f0ee068cdd0da7cb00c)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be ctdb commit 6f8614de0f20d4c507aecd744d9c3f6545078127)
|
|
|
|
|
|
|
|
|
| |
The flags are user-visible, via tdb_get_flags/add_flags/remove_flags.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be ctdb commit 8f48e37c254e0852d4e2dea54b905ce5ef2b925d)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
thread/fork safe tdb_reopen_all() should be a noop".
This version just wraps the reopen code, so we still re-grab the lock and do
the normal sanity checks.
The reason we do this at all is to avoid global fd limits, see:
http://forums.fedoraforum.org/showthread.php?t=210393
Note also that this whole reopen concept is fundamentally racy: if the parent
goes away before the child calls tdb_reopen_all, the database can be left
without an active lock and another TDB_CLEAR_IF_FIRST opener will clear it.
A fork_with_tdbs() wrapper could use a pipe to solve this, but it's hardly
elegant (what if there are other independent things which have similar needs?).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be ctdb commit 8d0d432ab7766d9c0f9868fd77e48b9b5cc5d9f9)
|
|
|
|
| |
(This used to be ctdb commit 21245b894b32f232251fd7c0e2fbfd073fb10514)
|
|
|
|
| |
(This used to be ctdb commit 9aed7a1d065272c2e5b54872228a73f37664b526)
|
|
|
|
| |
(This used to be ctdb commit 0dc754b7e8b0985a252885ed043949dfb7ea1ae1)
|
|
|
|
| |
(This used to be ctdb commit d9dec82076f14a348e7b67b4350180681ff86f32)
|
|
|
|
| |
(This used to be ctdb commit 96a39ccee38bcfd64d614fe4670766e59ef246b6)
|
|
|
|
| |
(This used to be ctdb commit f0555484105668c01c21f56322992e752e831109)
|
|
|
|
| |
(This used to be ctdb commit d4619ce98ce44acaebeb6ae9c516a7917bf4e27f)
|
|
(This used to be ctdb commit 4c1434cc4613fc94958de0aa882bf7ca41ec8458)
|