summaryrefslogtreecommitdiffstats
path: root/ctdb/client
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2013-08-13 14:02:46 +1000
committerAmitay Isaacs <amitay@gmail.com>2013-08-14 15:54:48 +1000
commit8f1e94dfa49e4813334b51778059aa082442f446 (patch)
treec78363a58fe79592abb53b8d84936460df5e981f /ctdb/client
parentde6b97ce4f57ea64d6825039ea346f031d36d6d3 (diff)
downloadsamba-8f1e94dfa49e4813334b51778059aa082442f446.tar.gz
samba-8f1e94dfa49e4813334b51778059aa082442f446.tar.xz
samba-8f1e94dfa49e4813334b51778059aa082442f446.zip
recoverd: Use TDB_INCOMPATIBLE_HASH when creating volatile databases
When creating missing databases either locally or remotely, recovery master calls ctdb_ctrl_createdb(). Recovery master always passes 0 for tdb_flags. For volatile databases, if TDB_INCOMPATIBLE_HASH is not specified, then they will be attached without using jenkins hash causing database corruption. Signed-off-by: Amitay Isaacs <amitay@gmail.com> (This used to be ctdb commit 2fc6b6403707a292d134140fc0b9145b454992c5)
Diffstat (limited to 'ctdb/client')
-rw-r--r--ctdb/client/ctdb_client.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/ctdb/client/ctdb_client.c b/ctdb/client/ctdb_client.c
index e801c0138ee..764404edfdd 100644
--- a/ctdb/client/ctdb_client.c
+++ b/ctdb/client/ctdb_client.c
@@ -1787,11 +1787,17 @@ int ctdb_ctrl_createdb(struct ctdb_context *ctdb, struct timeval timeout, uint32
int ret;
int32_t res;
TDB_DATA data;
+ uint64_t tdb_flags = 0;
data.dptr = discard_const(name);
data.dsize = strlen(name)+1;
- ret = ctdb_control(ctdb, destnode, 0,
+ /* Make sure that volatile databases use jenkins hash */
+ if (!persistent) {
+ tdb_flags = TDB_INCOMPATIBLE_HASH;
+ }
+
+ ret = ctdb_control(ctdb, destnode, tdb_flags,
persistent?CTDB_CONTROL_DB_ATTACH_PERSISTENT:CTDB_CONTROL_DB_ATTACH,
0, data,
mem_ctx, &data, &res, &timeout, NULL);