[Ocfs2-tools-commits] jlbec commits r1396 - branches/cman-based/libo2cb

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Fri Aug 17 18:42:34 PDT 2007


Author: jlbec
Date: 2007-08-17 18:42:33 -0700 (Fri, 17 Aug 2007)
New Revision: 1396

Modified:
   branches/cman-based/libo2cb/client_proto.c
   branches/cman-based/libo2cb/o2cb_abi.c
Log:

Give cman_begin_group_join() a reasonable set of errcode_ts.



Modified: branches/cman-based/libo2cb/client_proto.c
===================================================================
--- branches/cman-based/libo2cb/client_proto.c	2007-08-18 00:10:36 UTC (rev 1395)
+++ branches/cman-based/libo2cb/client_proto.c	2007-08-18 01:42:33 UTC (rev 1396)
@@ -163,7 +163,7 @@
 
 	/* Safety first */
 	buf[OCFS2_CONTROLD_MAXLINE - 1] = '\0';
-	fprintf(stderr, "Got messsage \"%s\"\n", buf);
+	/* fprintf(stderr, "Got messsage \"%s\"\n", buf); */
 
 
 	for (i = 0; i < message_list_len; i++) {
@@ -183,8 +183,8 @@
 	if (count != message_list[msg].cm_argcount) {
 		rc = -EBADMSG;
 	} else {
-		for (i = 0; i < count; i++)
-			fprintf(stderr, "Arg %d: \"%s\"\n", i, argv[i]);
+		/* for (i = 0; i < count; i++)
+			fprintf(stderr, "Arg %d: \"%s\"\n", i, argv[i]); */
 		if (message)
 			*message = msg;
 		if (rest)

Modified: branches/cman-based/libo2cb/o2cb_abi.c
===================================================================
--- branches/cman-based/libo2cb/o2cb_abi.c	2007-08-18 00:10:36 UTC (rev 1395)
+++ branches/cman-based/libo2cb/o2cb_abi.c	2007-08-18 01:42:33 UTC (rev 1396)
@@ -1324,32 +1324,31 @@
 }
 
 #ifdef HAVE_CMAN
-static int parse_status(char **args, int *error, char **error_msg)
+static errcode_t parse_status(char **args, int *error, char **error_msg)
 {
-	int rc = 0;
-	long err;
+	errcode_t err = O2CB_ET_IO;
+	long result;
 	char *ptr = NULL;
 
-	err = strtol(args[0], &ptr, 10);
+	result = strtol(args[0], &ptr, 10);
 	if (ptr && *ptr != '\0') {
 		/* fprintf(stderr, "Invalid error code string: %s", args[0]); */
-		rc = -EINVAL;
-	} else if ((err == LONG_MIN) || (err == LONG_MAX) ||
-		   (err < INT_MIN) || (err > INT_MAX)) {
+	} else if ((result == LONG_MIN) || (result == LONG_MAX) ||
+		   (result < INT_MIN) || (result > INT_MAX)) {
 		/* fprintf(stderr, "Error code %ld out of range", err); */
-		rc = -ERANGE;
 	} else {
 		*error_msg = args[1];
-		*error = err;
+		*error = result;
+		err = 0;
 	}
 
-	return rc;
+	return err;
 }
 
 static errcode_t cman_begin_group_join(const char *cluster_name,
 				       struct o2cb_region_desc *desc)
 {
-	errcode_t err = O2CB_ET_SERVICE_UNAVAILABLE;
+	errcode_t err;
 	int rc;
 	int error;
 	char *error_msg;
@@ -1359,7 +1358,7 @@
 
 	if (controld_fd != -1) {
 		/* fprintf(stderr, "Join already in progress!\n"); */
-		rc = -EINPROGRESS;
+		err = O2CB_ET_INTERNAL_FAILURE;
 		goto out;
 	}
 
@@ -1367,6 +1366,16 @@
 	if (rc < 0) {
 		/* fprintf(stderr, "Unable to connect to ocfs2_controld: %s\n",
 			strerror(-rc)); */
+		switch (rc) {
+			case -EACCES:
+			case -EPERM:
+				err = O2CB_ET_PERMISSION_DENIED;
+				break;
+
+			default:
+				err = O2CB_ET_SERVICE_UNAVAILABLE;
+				break;
+		}
 		goto out;
 	}
 	controld_fd = rc;
@@ -1377,6 +1386,7 @@
 	if (rc) {
 		/* fprintf(stderr, "Unable to send MOUNT message: %s\n",
 			strerror(-rc)); */
+		err = O2CB_ET_IO;
 		goto out;
 	}
 
@@ -1384,13 +1394,14 @@
 	if (rc < 0) {
 		/* fprintf(stderr, "Error reading from daemon: %s\n",
 			strerror(-rc)); */
+		err = O2CB_ET_IO;
 		goto out;
 	}
 
 	switch (message) {
 		case CM_STATUS:
-			rc = parse_status(argv, &error, &error_msg);
-			if (rc) {
+			err = parse_status(argv, &error, &error_msg);
+			if (err) {
 				/* fprintf(stderr, "Bad status message: %s\n",
 					strerror(-rc)); */
 				goto out;
@@ -1399,6 +1410,7 @@
 				/* fprintf(stderr,
 					"Error %d from daemon: %s\n",
 					error, error_msg); */
+				err = O2CB_ET_CONFIGURATION_ERROR;
 				goto out;
 			}
 			break;
@@ -1407,6 +1419,7 @@
 			/* fprintf(stderr,
 				"Unexpected message %s from daemon\n",
 				message_to_string(message)); */
+			err = O2CB_ET_INTERNAL_FAILURE;
 			goto out;
 			break;
 	}
@@ -1457,8 +1470,8 @@
 
 	switch (message) {
 		case CM_STATUS:
-			rc = parse_status(argv, &error, &error_msg);
-			if (rc) {
+			err = parse_status(argv, &error, &error_msg);
+			if (err) {
 				/* fprintf(stderr, "Bad status message: %s\n",
 					strerror(-rc)); */
 				goto out;
@@ -1531,8 +1544,8 @@
 
 	switch (message) {
 		case CM_STATUS:
-			rc = parse_status(argv, &error, &error_msg);
-			if (rc) {
+			err = parse_status(argv, &error, &error_msg);
+			if (err) {
 				/* fprintf(stderr, "Bad status message: %s\n",
 					strerror(-rc)); */
 				goto out;




More information about the Ocfs2-tools-commits mailing list