All of lore.kernel.org
 help / color / mirror / Atom feed
From: jbrassow@sourceware.org <jbrassow@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] cluster/cmirror/src Makefile cluster.c
Date: 21 Feb 2008 14:45:50 -0000	[thread overview]
Message-ID: <20080221144550.4870.qmail@sourceware.org> (raw)

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;
 }
 



                 reply	other threads:[~2008-02-21 14:45 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080221144550.4870.qmail@sourceware.org \
    --to=jbrassow@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.