diff options
author | Amitay Isaacs <amitay@gmail.com> | 2017-08-18 13:50:39 +1000 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2017-08-28 11:04:16 +0200 |
commit | da1aad0590fa005d3f166cc1f472d56790b16053 (patch) | |
tree | 535adb48738885e20f8dac9e24f0144c6dc225d3 /ctdb | |
parent | 29270b0e194b7aef71166b72d36b26f418ebe5b8 (diff) | |
download | samba-da1aad0590fa005d3f166cc1f472d56790b16053.tar.gz |
ctdb-client: Fix ctdb_ctrl_createdb() to use database flags
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12978
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
(cherry picked from commit 4bd0a20a75db3b3c409c25a4bc59aed30464f047)
Diffstat (limited to 'ctdb')
-rw-r--r-- | ctdb/client/ctdb_client.c | 26 | ||||
-rw-r--r-- | ctdb/include/ctdb_client.h | 2 | ||||
-rw-r--r-- | ctdb/server/ctdb_recoverd.c | 7 |
3 files changed, 16 insertions, 19 deletions
diff --git a/ctdb/client/ctdb_client.c b/ctdb/client/ctdb_client.c index 5ec3d0043f3..575ed56ce69 100644 --- a/ctdb/client/ctdb_client.c +++ b/ctdb/client/ctdb_client.c @@ -1947,31 +1947,27 @@ int ctdb_ctrl_getdbseqnum(struct ctdb_context *ctdb, struct timeval timeout, /* 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, uint8_t db_flags) { int ret; int32_t res; TDB_DATA data; - uint64_t tdb_flags = 0; + uint32_t opcode; data.dptr = discard_const(name); data.dsize = strlen(name)+1; - /* Make sure that volatile databases use jenkins hash */ - if (!persistent) { - tdb_flags = TDB_INCOMPATIBLE_HASH; - } - -#ifdef TDB_MUTEX_LOCKING - if (!persistent && ctdb->tunable.mutex_enabled == 1) { - tdb_flags |= (TDB_MUTEX_LOCKING | TDB_CLEAR_IF_FIRST); + if (db_flags & CTDB_DB_FLAGS_PERSISTENT) { + opcode = CTDB_CONTROL_DB_ATTACH_PERSISTENT; + } else if (db_flags & CTDB_DB_FLAGS_REPLICATED) { + opcode = CTDB_CONTROL_DB_ATTACH_REPLICATED; + } else { + opcode = CTDB_CONTROL_DB_ATTACH; } -#endif - ret = ctdb_control(ctdb, destnode, tdb_flags, - persistent?CTDB_CONTROL_DB_ATTACH_PERSISTENT:CTDB_CONTROL_DB_ATTACH, - 0, data, + ret = ctdb_control(ctdb, destnode, 0, opcode, 0, data, mem_ctx, &data, &res, &timeout, NULL); if (ret != 0 || res != 0) { diff --git a/ctdb/include/ctdb_client.h b/ctdb/include/ctdb_client.h index d4fd77142ec..8f270ddaa4e 100644 --- a/ctdb/include/ctdb_client.h +++ b/ctdb/include/ctdb_client.h @@ -254,7 +254,7 @@ int ctdb_ctrl_getdbseqnum(struct ctdb_context *ctdb, struct timeval timeout, int ctdb_ctrl_createdb(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, TALLOC_CTX *mem_ctx, - const char *name, bool persistent); + const char *name, uint8_t db_flags); int ctdb_ctrl_get_debuglevel(struct ctdb_context *ctdb, uint32_t destnode, int32_t *level); diff --git a/ctdb/server/ctdb_recoverd.c b/ctdb/server/ctdb_recoverd.c index b57be0634b8..05aee463bef 100644 --- a/ctdb/server/ctdb_recoverd.c +++ b/ctdb/server/ctdb_recoverd.c @@ -472,7 +472,7 @@ static int create_missing_remote_databases(struct ctdb_context *ctdb, struct ctd ret = ctdb_ctrl_createdb(ctdb, CONTROL_TIMEOUT(), nodemap->nodes[j].pnn, mem_ctx, name, - dbmap->dbs[db].flags & CTDB_DB_FLAGS_PERSISTENT); + dbmap->dbs[db].flags); if (ret != 0) { DEBUG(DEBUG_ERR, (__location__ " Unable to create remote db:%s\n", name)); return -1; @@ -534,8 +534,9 @@ static int create_missing_local_databases(struct ctdb_context *ctdb, struct ctdb nodemap->nodes[j].pnn)); return -1; } - ctdb_ctrl_createdb(ctdb, CONTROL_TIMEOUT(), pnn, mem_ctx, name, - remote_dbmap->dbs[db].flags & CTDB_DB_FLAGS_PERSISTENT); + ctdb_ctrl_createdb(ctdb, CONTROL_TIMEOUT(), pnn, + mem_ctx, name, + remote_dbmap->dbs[db].flags); if (ret != 0) { DEBUG(DEBUG_ERR, (__location__ " Unable to create local db:%s\n", name)); return -1; |