diff options
author | Amitay Isaacs <amitay@gmail.com> | 2013-08-13 14:02:46 +1000 |
---|---|---|
committer | Amitay Isaacs <amitay@gmail.com> | 2013-08-14 15:54:48 +1000 |
commit | 8f1e94dfa49e4813334b51778059aa082442f446 (patch) | |
tree | c78363a58fe79592abb53b8d84936460df5e981f /ctdb/client | |
parent | de6b97ce4f57ea64d6825039ea346f031d36d6d3 (diff) | |
download | samba-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.c | 8 |
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); |