summaryrefslogtreecommitdiff
path: root/source4/cluster/ctdb
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2007-02-08 00:58:17 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:44:49 -0500
commit07478016d7354274cd53ff2b4ec1dda3f0f439d1 (patch)
treeae2e3fdfd7a12fab6fc4ca244bda786d7a5bd09b /source4/cluster/ctdb
parentecf2c1effb778a95fd863a5e87ec7e378d228b57 (diff)
downloadsamba-07478016d7354274cd53ff2b4ec1dda3f0f439d1.tar.gz
samba-07478016d7354274cd53ff2b4ec1dda3f0f439d1.tar.bz2
samba-07478016d7354274cd53ff2b4ec1dda3f0f439d1.zip
r21230: added the hooks needed in the cluster layer and the messaging code for
handling messages to remote nodes. Implemented dummy functions in the 'local' cluster backend for the messaging hooks, and modified the messaging layer to check if the destination is remote and redirect messages via the cluster layer (This used to be commit 4474552e8fb73efebef32ad8480d7fe9a1e379ef)
Diffstat (limited to 'source4/cluster/ctdb')
-rw-r--r--source4/cluster/ctdb/brlock_ctdb.c6
-rw-r--r--source4/cluster/ctdb/ctdb_cluster.c38
2 files changed, 40 insertions, 4 deletions
diff --git a/source4/cluster/ctdb/brlock_ctdb.c b/source4/cluster/ctdb/brlock_ctdb.c
index ffc5facbb4..04f617beb9 100644
--- a/source4/cluster/ctdb/brlock_ctdb.c
+++ b/source4/cluster/ctdb/brlock_ctdb.c
@@ -105,7 +105,8 @@ static void show_locks(const char *op, struct lock_struct *locks, int count)
static struct brl_context *brl_ctdb_init(TALLOC_CTX *mem_ctx, struct server_id server,
struct messaging_context *messaging_ctx)
{
- struct ctdb_context *ctdb = talloc_get_type(cluster_private(), struct ctdb_context);
+ struct ctdb_context *ctdb = talloc_get_type(cluster_backend_handle(),
+ struct ctdb_context);
struct brl_context *brl;
brl = talloc(mem_ctx, struct brl_context);
@@ -911,7 +912,8 @@ static const struct brlock_ops brlock_tdb_ops = {
void brl_ctdb_init_ops(void)
{
- struct ctdb_context *ctdb = talloc_get_type(cluster_private(), struct ctdb_context);
+ struct ctdb_context *ctdb = talloc_get_type(cluster_backend_handle(),
+ struct ctdb_context);
brl_set_ops(&brlock_tdb_ops);
diff --git a/source4/cluster/ctdb/ctdb_cluster.c b/source4/cluster/ctdb/ctdb_cluster.c
index 1d8d3a5252..464cb8ecba 100644
--- a/source4/cluster/ctdb/ctdb_cluster.c
+++ b/source4/cluster/ctdb/ctdb_cluster.c
@@ -39,7 +39,8 @@ struct cluster_state {
*/
static struct server_id ctdb_id(struct cluster_ops *ops, uint32_t id)
{
- struct ctdb_context *ctdb = ops->private;
+ struct cluster_state *state = ops->private;
+ struct ctdb_context *ctdb = state->ctdb;
struct server_id server_id;
server_id.node = ctdb_get_vnn(ctdb);
server_id.id = id;
@@ -81,10 +82,43 @@ static struct tdb_wrap *ctdb_tdb_tmp_open(struct cluster_ops *ops,
return w;
}
+/*
+ get at the ctdb handle
+*/
+static void *ctdb_backend_handle(struct cluster_ops *ops)
+{
+ struct cluster_state *state = ops->private;
+ return (void *)state->ctdb;
+}
+
+/*
+ setup a handler for ctdb messages
+*/
+static NTSTATUS ctdb_message_init(struct cluster_ops *ops,
+ struct messaging_context *msg,
+ struct server_id server,
+ cluster_message_fn_t handler)
+{
+ return NT_STATUS_OK;
+}
+
+/*
+ send a ctdb message to another node
+*/
+static NTSTATUS ctdb_message_send(struct cluster_ops *ops,
+ struct server_id server, uint32_t msg_type,
+ DATA_BLOB *data)
+{
+ return NT_STATUS_INVALID_DEVICE_REQUEST;
+}
+
static struct cluster_ops cluster_ctdb_ops = {
.cluster_id = ctdb_id,
.cluster_id_string = ctdb_id_string,
.cluster_tdb_tmp_open = ctdb_tdb_tmp_open,
+ .backend_handle = ctdb_backend_handle,
+ .message_init = ctdb_message_init,
+ .message_send = ctdb_message_send,
.private = NULL
};
@@ -114,7 +148,7 @@ void cluster_ctdb_init(struct event_context *ev)
state->ctdb = ctdb_init(ev);
if (state->ctdb == NULL) goto failed;
- cluster_ctdb_ops.private = state->ctdb;
+ cluster_ctdb_ops.private = state;
ret = ctdb_set_transport(state->ctdb, transport);
if (ret == -1) {