[Ocfs2-tools-commits] jlbec commits r680 - trunk/libo2cb

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Fri Mar 18 14:27:34 CST 2005


Author: jlbec
Signed-off-by: zab
Date: 2005-03-18 14:27:32 -0600 (Fri, 18 Mar 2005)
New Revision: 680

Modified:
   trunk/libo2cb/o2cb_abi.c
Log:

o Move the open/io/close portions of getting and setting attributes
  into a helper.

Signed-off-by: zab



Modified: trunk/libo2cb/o2cb_abi.c
===================================================================
--- trunk/libo2cb/o2cb_abi.c	2005-03-18 18:14:24 UTC (rev 679)
+++ trunk/libo2cb/o2cb_abi.c	2005-03-18 20:27:32 UTC (rev 680)
@@ -135,21 +135,12 @@
 	return err;
 }
 
-static errcode_t o2cb_set_node_attribute(const char *cluster_name,
-					 const char *node_name,
-					 const char *attr_name,
-					 const char *attr_value)
+static errcode_t o2cb_set_attribute(const char *attr_path,
+				    const char *attr_value)
 {
-	int ret;
 	errcode_t err = 0;
-	char attr_path[PATH_MAX];
 	int fd;
 
-	ret = snprintf(attr_path, PATH_MAX - 1, O2CB_FORMAT_NODE_ATTR,
-		       cluster_name, node_name, attr_name);
-	if ((ret <= 0) || (ret == (PATH_MAX - 1)))
-		return O2CB_ET_INTERNAL_FAILURE;
-
 	fd = open(attr_path, O_WRONLY);
 	if (fd < 0) {
 		switch (errno) {
@@ -177,22 +168,14 @@
 	return err;
 }
 
-static errcode_t o2cb_get_node_attribute(const char *cluster_name,
-					 const char *node_name,
-					 const char *attr_name,
-					 char *attr_value,
-					 size_t count)
+static errcode_t o2cb_get_attribute(const char *attr_path,
+				    char *attr_value,
+				    size_t count)
 {
 	int ret;
 	errcode_t err = 0;
-	char attr_path[PATH_MAX];
 	int fd;
 
-	ret = snprintf(attr_path, PATH_MAX - 1, O2CB_FORMAT_NODE_ATTR,
-		       cluster_name, node_name, attr_name);
-	if ((ret <= 0) || (ret == (PATH_MAX - 1)))
-		return O2CB_ET_INTERNAL_FAILURE;
-
 	fd = open(attr_path, O_RDONLY);
 	if (fd < 0) {
 		switch (errno) {
@@ -226,6 +209,41 @@
 	return err;
 }
 
+
+
+static errcode_t o2cb_set_node_attribute(const char *cluster_name,
+					 const char *node_name,
+					 const char *attr_name,
+					 const char *attr_value)
+{
+	int ret;
+	char attr_path[PATH_MAX];
+
+	ret = snprintf(attr_path, PATH_MAX - 1, O2CB_FORMAT_NODE_ATTR,
+		       cluster_name, node_name, attr_name);
+	if ((ret <= 0) || (ret == (PATH_MAX - 1)))
+		return O2CB_ET_INTERNAL_FAILURE;
+
+	return o2cb_set_attribute(attr_path, attr_value);
+}
+
+static errcode_t o2cb_get_node_attribute(const char *cluster_name,
+					 const char *node_name,
+					 const char *attr_name,
+					 char *attr_value,
+					 size_t count)
+{
+	int ret;
+	char attr_path[PATH_MAX];
+
+	ret = snprintf(attr_path, PATH_MAX - 1, O2CB_FORMAT_NODE_ATTR,
+		       cluster_name, node_name, attr_name);
+	if ((ret <= 0) || (ret == (PATH_MAX - 1)))
+		return O2CB_ET_INTERNAL_FAILURE;
+
+	return o2cb_get_attribute(attr_path, attr_value, count);
+}
+
 /* XXX there is no commit yet, so this just creates the node in place
  * and then sets the attributes in order.  if the ipaddr is set
  * successfully then the node is live */
@@ -308,9 +326,7 @@
 					   const char *attr_value)
 {
 	int ret;
-	errcode_t err = 0;
 	char attr_path[PATH_MAX];
-	int fd;
 
 	ret = snprintf(attr_path, PATH_MAX - 1,
 		       O2CB_FORMAT_HEARTBEAT_REGION_ATTR,
@@ -318,31 +334,7 @@
 	if ((ret <= 0) || (ret == (PATH_MAX - 1)))
 		return O2CB_ET_INTERNAL_FAILURE;
 
-	fd = open(attr_path, O_WRONLY);
-	if (fd < 0) {
-		switch (errno) {
-			default:
-				err = O2CB_ET_INTERNAL_FAILURE;
-				break;
-
-			case ENOTDIR:
-			case ENOENT:
-			case EISDIR:
-				err = O2CB_ET_SERVICE_UNAVAILABLE;
-				break;
-
-			case EACCES:
-			case EPERM:
-			case EROFS:
-				err = O2CB_ET_PERMISSION_DENIED;
-				break;
-		}
-	} else {
-		err = do_write(fd, attr_value, strlen(attr_value));
-		close(fd);
-	}
-
-	return err;
+	return o2cb_set_attribute(attr_path, attr_value);
 }
 
 static errcode_t o2cb_get_region_attribute(const char *cluster_name,
@@ -352,9 +344,7 @@
 					   size_t count)
 {
 	int ret;
-	errcode_t err = 0;
 	char attr_path[PATH_MAX];
-	int fd;
 
 	ret = snprintf(attr_path, PATH_MAX - 1,
 		       O2CB_FORMAT_HEARTBEAT_REGION_ATTR,
@@ -362,37 +352,7 @@
 	if ((ret <= 0) || (ret == (PATH_MAX - 1)))
 		return O2CB_ET_INTERNAL_FAILURE;
 
-	fd = open(attr_path, O_RDONLY);
-	if (fd < 0) {
-		switch (errno) {
-			default:
-				err = O2CB_ET_INTERNAL_FAILURE;
-				break;
-
-			case ENOTDIR:
-			case ENOENT:
-			case EISDIR:
-				err = O2CB_ET_SERVICE_UNAVAILABLE;
-				break;
-
-			case EACCES:
-			case EPERM:
-			case EROFS:
-				err = O2CB_ET_PERMISSION_DENIED;
-				break;
-		}
-	} else {
-		ret = do_read(fd, attr_value, count);
-		close(fd);
-		if (ret == -EIO)
-			err = O2CB_ET_IO;
-		else if (ret < 0)
-			err = O2CB_ET_INTERNAL_FAILURE;
-		else if (ret < count)
-			attr_value[ret] = '\0';
-	}
-
-	return err;
+	return o2cb_get_attribute(attr_path, attr_value, count);
 }
 
 static errcode_t _fake_default_cluster(char *cluster)



More information about the Ocfs2-tools-commits mailing list