[Sheepdog] [PATCH 1/3] sheep: add helpers for message handling
Liu Yuan
namei.unix at gmail.com
Mon Sep 26 12:57:23 CEST 2011
From: Liu Yuan <tailai.ly at taobao.com>
Signed-off-by: Liu Yuan <tailai.ly at taobao.com>
---
sheep/group.c | 34 +++++++++++++++++++++++++++-------
1 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/sheep/group.c b/sheep/group.c
index 812f6a0..4bf275e 100644
--- a/sheep/group.c
+++ b/sheep/group.c
@@ -142,6 +142,26 @@ CPG_EVENT_WORK_FNS(RUNNING, running)
CPG_EVENT_WORK_FNS(SUSPENDED, suspended)
CPG_EVENT_WORK_FNS(JOINING, joining)
+static inline int join_message(struct message_header *m)
+{
+ return m->op == SD_MSG_JOIN;
+}
+
+static inline int vdi_op_message(struct message_header *m)
+{
+ return m->op == SD_MSG_VDI_OP;
+}
+
+static inline int master_chg_message(struct message_header *m)
+{
+ return m->op == SD_MSG_MASTER_CHANGED;
+}
+
+static inline int leave_message(struct message_header *m)
+{
+ return m->op == SD_MSG_LEAVE;
+}
+
static int send_message(cpg_handle_t handle, struct message_header *msg)
{
struct iovec iov;
@@ -443,7 +463,7 @@ static int add_node_to_leave_list(struct message_header *msg)
struct node *n, *t;
struct join_message *jm;
- if (msg->op == SD_MSG_LEAVE ) {
+ if (leave_message(msg)) {
n = zalloc(sizeof(*n));
if (!n) {
ret = SD_RES_NO_MEM;
@@ -461,7 +481,7 @@ static int add_node_to_leave_list(struct message_header *msg)
list_add_tail(&n->list, &sys->leave_list);
goto ret;
- } else if (msg->op == SD_MSG_JOIN ) {
+ } else if (join_message(msg)) {
jm = (struct join_message *)msg;
nr = jm->nr_leave_nodes;
for (i = 0; i < nr; i++) {
@@ -986,7 +1006,7 @@ static void __sd_deliver(struct cpg_event *cevent)
}
}
- if (m->op == SD_MSG_JOIN) {
+ if (join_message(m)) {
uint32_t nodeid = m->nodeid;
uint32_t pid = m->pid;
@@ -1111,7 +1131,7 @@ static void __sd_deliver_done(struct cpg_event *cevent)
}
do_recovery = (m->state == DM_FIN &&
- (m->op == SD_MSG_JOIN || m->op == SD_MSG_LEAVE));
+ (join_message(m) || leave_message(m)));
dprintf("op: %d, state: %u, size: %d, from: %s\n",
m->op, m->state, m->msg_length,
@@ -1171,7 +1191,7 @@ static void sd_deliver(cpg_handle_t handle, const struct cpg_name *group_name,
if (cpg_event_suspended() && m->state == DM_FIN) {
list_add(&cevent->cpg_event_list, &sys->cpg_event_siblings);
cpg_event_clear_suspended();
- if (m->op == SD_MSG_JOIN)
+ if (join_message(m))
cpg_event_clear_joining();
} else
list_add_tail(&cevent->cpg_event_list, &sys->cpg_event_siblings);
@@ -1494,7 +1514,7 @@ static void cpg_event_done(struct work *work, int idx)
{
struct work_deliver *w = container_of(cevent, struct work_deliver, cev);
- if (w->msg->state == DM_FIN && w->msg->op == SD_MSG_VDI_OP)
+ if (w->msg->state == DM_FIN && vdi_op_message(w->msg))
vdi_op_done((struct vdi_op_message *)w->msg);
/*
@@ -1522,7 +1542,7 @@ static void cpg_event_done(struct work *work, int idx)
}
}
cpg_event_set_suspended();
- if (w->msg->op == SD_MSG_JOIN)
+ if (join_message(w->msg))
cpg_event_set_joining();
}
got_fin:
--
1.7.6.1
More information about the sheepdog
mailing list