* [Cluster-devel] cluster/cmirror/src Makefile cluster.c
@ 2008-02-21 14:45 jbrassow
0 siblings, 0 replies; only message in thread
From: jbrassow @ 2008-02-21 14:45 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL5
Changes by: jbrassow at sourceware.org 2008-02-21 14:45:49
Modified files:
cmirror/src : Makefile cluster.c
Log message:
- couple fixes for checking error codes from openais
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cmirror/src/Makefile.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.3.2.5&r2=1.3.2.6
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cmirror/src/cluster.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.2.16&r2=1.1.2.17
--- cluster/cmirror/src/Attic/Makefile 2008/01/18 20:32:09 1.3.2.5
+++ cluster/cmirror/src/Attic/Makefile 2008/02/21 14:45:49 1.3.2.6
@@ -44,7 +44,6 @@
all: ${TARGET}
-#clogd: rbtree.c link_mon.c logging.c queues.c local.c cluster.c functions.c clogd.c
clogd: ${SOURCES}
${CC} ${CFLAGS} -o $@ $^ ${LDFLAGS}
--- cluster/cmirror/src/Attic/cluster.c 2008/02/08 14:30:10 1.1.2.16
+++ cluster/cmirror/src/Attic/cluster.c 2008/02/21 14:45:49 1.1.2.17
@@ -104,6 +104,7 @@
return -EBADE;
}
+/* FIXME: this is here for debugging... remove */
int cluster_send_helper(struct clog_tfr *tfr, int line, char *file, const char *function)
{
int r;
@@ -121,10 +122,10 @@
static int clog_tfr_cmp(struct clog_tfr *a, struct clog_tfr *b)
{
int r = 0;
- ENTER();
+
if (a->seq == b->seq)
r = 1;
- EXIT("%s", r ? "[MATCH]" : "");
+
return r;
}
@@ -132,8 +133,6 @@
{
int r = 0;
- ENTER("%s", RQ_TYPE(tfr->request_type));
-
/*
* With resumes, we only handle our own.
* Resume is a special case that requires
@@ -152,16 +151,15 @@
* Errors from previous functions are in the tfr struct.
*/
if (printz)
- LOG_DBG("[%s] Sending response to %u on cluster: [%s/%llu]",
- SHORT_UUID(tfr->uuid), tfr->originator,
- RQ_TYPE(tfr->request_type & ~DM_CLOG_RESPONSE),
- (unsigned long long)tfr->seq);
+ LOG_PRINT("[%s] Sending response to %u on cluster: [%s/%llu]",
+ SHORT_UUID(tfr->uuid), tfr->originator,
+ RQ_TYPE(tfr->request_type & ~DM_CLOG_RESPONSE),
+ (unsigned long long)tfr->seq);
r = cluster_send(tfr);
if (r)
LOG_ERROR("cluster_send failed: %s", strerror(-r));
}
- EXIT();
return r;
}
@@ -170,7 +168,6 @@
int r = 0;
struct clog_tfr *orig_tfr;
- ENTER("%s", RQ_TYPE(tfr->request_type & ~DM_CLOG_RESPONSE));
/*
* If I didn't send it, then I don't care about the response
*/
@@ -217,7 +214,6 @@
LOG_ERROR("Failed to send response to kernel");
out:
- EXIT();
return r;
}
@@ -298,6 +294,8 @@
new->bitmap_size = 0;
}
+ LOG_DBG("[%s] Checkpoint prepared for %u",
+ SHORT_UUID(new->uuid), cp_requester);
return new;
}
@@ -327,7 +325,6 @@
int len;
char buf[32];
- ENTER();
LOG_DBG("Sending checkpointed data to %u", cp->requester);
len = snprintf((char *)(name.value), SA_MAX_NAME_LENGTH, "bitmaps_%s_%u",
@@ -355,12 +352,12 @@
if (rv == SA_AIS_ERR_EXIST) {
LOG_DBG("export_checkpoint: checkpoint already exists");
- EXIT();
return -EEXIST;
}
if (rv != SA_AIS_OK) {
- EXIT();
+ LOG_ERROR("[%s] Failed to open checkpoint for %u",
+ SHORT_UUID(cp->uuid), cp->requester);
return -EIO; /* FIXME: better error */
}
@@ -382,13 +379,13 @@
if (rv == SA_AIS_ERR_EXIST) {
LOG_DBG("export_checkpoint: sync checkpoint section already exists");
- EXIT();
+ saCkptCheckpointClose(h);
return -EEXIST;
}
if (rv != SA_AIS_OK) {
LOG_ERROR("export_checkpoint: sync checkpoint section creation failed");
- EXIT();
+ saCkptCheckpointClose(h);
return -EIO; /* FIXME: better error */
}
@@ -410,13 +407,13 @@
if (rv == SA_AIS_ERR_EXIST) {
LOG_DBG("export_checkpoint: clean checkpoint section already exists");
- EXIT();
+ saCkptCheckpointClose(h);
return -EEXIST;
}
if (rv != SA_AIS_OK) {
LOG_ERROR("export_checkpoint: clean checkpoint section creation failed");
- EXIT();
+ saCkptCheckpointClose(h);
return -EIO; /* FIXME: better error */
}
@@ -439,13 +436,13 @@
if (rv == SA_AIS_ERR_EXIST) {
LOG_DBG("export_checkpoint: RR checkpoint section already exists");
- EXIT();
+ saCkptCheckpointClose(h);
return -EEXIST;
}
if (rv != SA_AIS_OK) {
LOG_ERROR("export_checkpoint: RR checkpoint section creation failed");
- EXIT();
+ saCkptCheckpointClose(h);
return -EIO; /* FIXME: better error */
}
@@ -474,10 +471,27 @@
}
queue_add(tfr, free_queue);
- EXIT();
+ LOG_DBG("[%s] Checkpoint ready, notification sent to %u",
+ SHORT_UUID(cp->uuid), cp->requester);
+
return 0;
}
+void ckpt_print (char *str, SaCkptCheckpointHandleT handle)
+{
+ SaCkptCheckpointDescriptorT descriptor;
+ SaAisErrorT rv;
+
+retry_statusget:
+ rv = saCkptCheckpointStatusGet (handle, &descriptor);
+ if (rv == SA_AIS_ERR_TRY_AGAIN)
+ goto retry_statusget;
+
+ LOG_DBG("printing [%s] sections [%d] result [%d]",
+ str, descriptor.numberOfSections, rv);
+}
+
+
static int import_checkpoint(struct clog_cpg *entry, int no_read)
{
int rtn = 0;
@@ -490,8 +504,6 @@
char *bitmap = NULL;
int len;
- ENTER();
-
bitmap = malloc(1024*1024);
if (!bitmap)
return -ENOMEM;
@@ -511,10 +523,11 @@
if (rv != SA_AIS_OK) {
LOG_ERROR("Failed to open checkpoint");
- EXIT();
return -EIO; /* FIXME: better error */
}
+ ckpt_print ("Before unlink", h);
+
saCkptCheckpointUnlink(ckpt_handle, &name);
if (no_read) {
@@ -522,8 +535,10 @@
goto no_read;
}
+ ckpt_print ("After unlink", h);
+
init_retry:
- rv = saCkptSectionIterationInitialize(h, SA_CKPT_SECTIONS_ANY, 0, &itr);
+ rv = saCkptSectionIterationInitialize(h, SA_CKPT_SECTIONS_ANY, SA_TIME_END, &itr);
if (rv == SA_AIS_ERR_TRY_AGAIN) {
LOG_ERROR("import_checkpoint: sync create retry");
sleep(1);
@@ -532,7 +547,6 @@
if (rv != SA_AIS_OK) {
LOG_ERROR("import_checkpoint: sync checkpoint section creation failed");
- EXIT();
return -EIO; /* FIXME: better error */
}
@@ -541,8 +555,10 @@
rv = saCkptSectionIterationNext(itr, &desc);
if (rv == SA_AIS_OK)
len++;
- else
+ else if (rv != SA_AIS_ERR_TRY_AGAIN) {
+ LOG_ERROR("saCkptSectionIterationNext failure: %d", rv);
break;
+ }
}
saCkptSectionIterationFinalize(itr);
if (len != 3) {
@@ -550,7 +566,7 @@
sleep(1);
goto init_retry;
}
- saCkptSectionIterationInitialize(h, SA_CKPT_SECTIONS_ANY, 0, &itr);
+ saCkptSectionIterationInitialize(h, SA_CKPT_SECTIONS_ANY, SA_TIME_END, &itr);
while (1) {
rv = saCkptSectionIterationNext(itr, &desc);
@@ -620,8 +636,18 @@
no_read:
saCkptCheckpointClose(h);
+ /*
+ LOG_PRINT("Testing if chkpoint exists after unlink/close");
+ rv = saCkptCheckpointOpen(ckpt_handle, &name, NULL,
+ SA_CKPT_CHECKPOINT_READ, 0, &h);
+ if (rv != SA_AIS_OK) {
+ LOG_PRINT("Checkpoint was not removed!!!");
+ saCkptCheckpointClose(h);
+ } else
+ LOG_PRINT(" rv == %d", rv);
+ */
+
free(bitmap);
- EXIT();
return rtn;
}
@@ -631,7 +657,6 @@
struct clog_cpg *entry, *tmp;
struct checkpoint_data *cp;
- ENTER();
list_for_each_entry_safe(entry, tmp, &clog_cpg_list, list) {
r = cpg_dispatch(entry->handle, CPG_DISPATCH_ALL);
if (r != SA_AIS_OK)
@@ -666,7 +691,6 @@
}
}
}
- EXIT();
return (r == SA_AIS_OK) ? 0 : -1; /* FIXME: good error number? */
}
@@ -681,8 +705,6 @@
struct clog_tfr *startup_tfr = NULL;
struct clog_cpg *match;
- ENTER();
-
if (msg_len != (sizeof(*tfr) + tfr->data_size))
LOG_ERROR("Badly sized message recieved from cluster.");
@@ -835,7 +857,6 @@
if (response)
sprintf(debugging[idx] + len, ", RSPR=%u", nodeid);
}
- EXIT();
}
static void cpg_config_callback(cpg_handle_t handle, struct cpg_name *gname,
@@ -849,8 +870,6 @@
struct clog_cpg *match, *tmp;
uint32_t lowest = 0xDEAD;
- ENTER();
-
memberz = member_list_entries;
LOG_DBG("****** CPG config callback **[%s]**",
@@ -990,21 +1009,20 @@
out:
if (lowest != match->lowest_id)
- LOG_DBG("[%s] Server change %u -> %u (%u %s)",
- SHORT_UUID(match->name.value),
- lowest, match->lowest_id,
- (joined_list_entries) ? joined_list[0].nodeid : left_list[0].nodeid,
- (joined_list_entries && (member_list_entries == 1)) ?
- "is first to join" : (joined_list_entries) ? "joined" : "left");
+ LOG_PRINT("[%s] Server change %u -> %u (%u %s)",
+ SHORT_UUID(match->name.value),
+ lowest, match->lowest_id,
+ (joined_list_entries) ? joined_list[0].nodeid : left_list[0].nodeid,
+ (joined_list_entries && (member_list_entries == 1)) ?
+ "is first to join" : (joined_list_entries) ? "joined" : "left");
else
- LOG_DBG("[%s] Server unchanged at %u (%u %s)",
- SHORT_UUID(match->name.value), lowest,
- (joined_list_entries) ? joined_list[0].nodeid : left_list[0].nodeid,
- (joined_list_entries) ? "joined" : "left");
+ LOG_PRINT("[%s] Server unchanged at %u (%u %s)",
+ SHORT_UUID(match->name.value), lowest,
+ (joined_list_entries) ? joined_list[0].nodeid : left_list[0].nodeid,
+ (joined_list_entries) ? "joined" : "left");
if (joined_list_entries && (joined_list[0].nodeid == my_cluster_id))
doit = 25;
- EXIT();
}
cpg_callbacks_t cpg_callbacks = {
@@ -1019,8 +1037,6 @@
struct clog_cpg *new;
struct clog_cpg *tmp, *tmp2;
- ENTER();
-
list_for_each_entry_safe(tmp, tmp2, &clog_cpg_list, list)
if (!strncmp(tmp->name.value, str, CPG_MAX_NAME_LENGTH)) {
LOG_ERROR("Log entry already exists: %s", str);
@@ -1030,7 +1046,6 @@
new = malloc(sizeof(*new));
if (!new) {
LOG_ERROR("Unable to allocate memory for clog_cpg");
- EXIT();
return -ENOMEM;
}
memset(new, 0, sizeof(*new));
@@ -1041,7 +1056,6 @@
if (!new->startup_queue) {
free(new);
LOG_ERROR("Unable to allocate memory for clog_cpg");
- EXIT();
return -ENOMEM;
}
INIT_LIST_HEAD(&(new->startup_queue->list));
@@ -1056,14 +1070,12 @@
r = cpg_initialize(&new->handle, &cpg_callbacks);
if (r != SA_AIS_OK) {
LOG_ERROR("cpg_initialize failed: Cannot join cluster");
- EXIT();
return -EPERM;
}
r = cpg_join(new->handle, &new->name);
if (r != SA_AIS_OK) {
LOG_ERROR("cpg_join failed: Cannot join cluster");
- EXIT();
return -EPERM;
}
@@ -1075,7 +1087,6 @@
cpg_fd_get(new->handle, &r);
links_register(r, "cluster", do_cluster_work, NULL);
- EXIT();
return 0;
}
@@ -1084,7 +1095,6 @@
int r;
struct clog_cpg *del, *tmp;
- ENTER();
list_for_each_entry_safe(del, tmp, &clog_cpg_list, list)
if (!strncmp(del->name.value, str, CPG_MAX_NAME_LENGTH)) {
r = cpg_leave(del->handle, &del->name);
@@ -1093,7 +1103,6 @@
break;
}
- EXIT();
return 0;
}
@@ -1101,8 +1110,6 @@
{
SaAisErrorT rv;
- ENTER();
-
{
int i;
for(i = 0; i < DEBUGGING_HISTORY; i++)
@@ -1112,12 +1119,9 @@
INIT_LIST_HEAD(&clog_cpg_list);
rv = saCkptInitialize(&ckpt_handle, &callbacks, &version);
- if (rv != SA_AIS_OK) {
- EXIT("saCkptInitialize failure");
+ if (rv != SA_AIS_OK)
return EXIT_CLUSTER_CKPT_INIT;
- }
- EXIT();
return 0;
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2008-02-21 14:45 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-21 14:45 [Cluster-devel] cluster/cmirror/src Makefile cluster.c jbrassow
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.