[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