[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