summaryrefslogtreecommitdiff
path: root/ctdb/client
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2017-03-02 17:34:55 +1100
committerMartin Schwenke <martins@samba.org>2017-06-29 10:34:27 +0200
commit006c1b68115336049d10b56c12627422b22ed654 (patch)
tree350f16da4a21519e012eda3a24355b66985393ad /ctdb/client
parentb1b6ceecedaa85529f33a17dd64ba307ee5cbe2e (diff)
downloadsamba-006c1b68115336049d10b56c12627422b22ed654.tar.gz
ctdb-client: Add db support for CTDB_DB_FLAGS_REPLICATED
Signed-off-by: Amitay Isaacs <amitay@gmail.com> Reviewed-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'ctdb/client')
-rw-r--r--ctdb/client/client_db.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/ctdb/client/client_db.c b/ctdb/client/client_db.c
index 8828a8883f7..05645f54075 100644
--- a/ctdb/client/client_db.c
+++ b/ctdb/client/client_db.c
@@ -60,9 +60,18 @@ static bool ctdb_db_persistent(struct ctdb_db_context *db)
return false;
}
+static bool ctdb_db_replicated(struct ctdb_db_context *db)
+{
+ if (db->db_flags & CTDB_DB_FLAGS_REPLICATED) {
+ return true;
+ }
+ return false;
+}
+
static bool ctdb_db_volatile(struct ctdb_db_context *db)
{
- if (db->db_flags & CTDB_DB_FLAGS_PERSISTENT) {
+ if (db->db_flags & CTDB_DB_FLAGS_PERSISTENT ||
+ db->db_flags & CTDB_DB_FLAGS_REPLICATED) {
return false;
}
return true;
@@ -320,6 +329,9 @@ struct tevent_req *ctdb_attach_send(TALLOC_CTX *mem_ctx,
if (ctdb_db_persistent(state->db)) {
ctdb_req_control_db_attach_persistent(&request,
state->db->db_name);
+ } else if (ctdb_db_replicated(state->db)) {
+ ctdb_req_control_db_attach_replicated(&request,
+ state->db->db_name);
} else {
ctdb_req_control_db_attach(&request, state->db->db_name);
}
@@ -353,7 +365,9 @@ static void ctdb_attach_dbid_done(struct tevent_req *subreq)
state->db->db_name,
(ctdb_db_persistent(state->db)
? "DB_ATTACH_PERSISTENT"
- : "DB_ATTACH"),
+ : (ctdb_db_replicated(state->db)
+ ? "DB_ATTACH_REPLICATED"
+ : "DB_ATTACH")),
ret));
tevent_req_error(req, ret);
return;
@@ -362,6 +376,9 @@ static void ctdb_attach_dbid_done(struct tevent_req *subreq)
if (ctdb_db_persistent(state->db)) {
ret = ctdb_reply_control_db_attach_persistent(
reply, &state->db->db_id);
+ } else if (ctdb_db_replicated(state->db)) {
+ ret = ctdb_reply_control_db_attach_replicated(
+ reply, &state->db->db_id);
} else {
ret = ctdb_reply_control_db_attach(reply, &state->db->db_id);
}