summaryrefslogtreecommitdiffstats
path: root/ctdb/client
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2013-07-30 12:45:01 +1000
committerAmitay Isaacs <amitay@gmail.com>2013-08-01 11:08:25 +1000
commitf15e1a28a7874a7ef2af4282045bdac66212dcc3 (patch)
treebf81e12c283509315e83f06a352beb74a243171c /ctdb/client
parente44c38dc4533cc8e2a822d4589d9cc04d31f49ce (diff)
downloadsamba-f15e1a28a7874a7ef2af4282045bdac66212dcc3.tar.gz
samba-f15e1a28a7874a7ef2af4282045bdac66212dcc3.tar.xz
samba-f15e1a28a7874a7ef2af4282045bdac66212dcc3.zip
recoverd: Use correct tdb flags when creating missing databases
When creating missing databases either locally or remotely, make sure to use the correct tdb flags from other nodes. Without this, volatile databases can get attached without TDB_INCOMPATIBLE_HASH flag. Signed-off-by: Amitay Isaacs <amitay@gmail.com> (This used to be ctdb commit 10a057d8e15c8c18e540598a940d3548c731b0b4)
Diffstat (limited to 'ctdb/client')
-rw-r--r--ctdb/client/ctdb_client.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/ctdb/client/ctdb_client.c b/ctdb/client/ctdb_client.c
index e801c0138ee..ebd448ccbfd 100644
--- a/ctdb/client/ctdb_client.c
+++ b/ctdb/client/ctdb_client.c
@@ -1781,19 +1781,21 @@ int ctdb_ctrl_getdbhealth(struct ctdb_context *ctdb,
/*
create a database
*/
-int ctdb_ctrl_createdb(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode,
- TALLOC_CTX *mem_ctx, const char *name, bool persistent)
+int ctdb_ctrl_createdb(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode,
+ TALLOC_CTX *mem_ctx, const char *name, uint32_t tdb_flags)
{
int ret;
int32_t res;
TDB_DATA data;
+ bool persistent;
data.dptr = discard_const(name);
data.dsize = strlen(name)+1;
- ret = ctdb_control(ctdb, destnode, 0,
- persistent?CTDB_CONTROL_DB_ATTACH_PERSISTENT:CTDB_CONTROL_DB_ATTACH,
- 0, data,
+ persistent = (tdb_flags & CTDB_DB_FLAGS_PERSISTENT);
+ ret = ctdb_control(ctdb, destnode, 0,
+ persistent?CTDB_CONTROL_DB_ATTACH_PERSISTENT:CTDB_CONTROL_DB_ATTACH,
+ tdb_flags, data,
mem_ctx, &data, &res, &timeout, NULL);
if (ret != 0 || res != 0) {