[Ocfs2-tools-commits] mfasheh commits r698 - in trunk/libo2cb: . include

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Fri Mar 18 19:58:05 CST 2005


Author: mfasheh
Signed-off-by: jlbec
Date: 2005-03-18 19:58:03 -0600 (Fri, 18 Mar 2005)
New Revision: 698

Modified:
   trunk/libo2cb/include/o2cb.h
   trunk/libo2cb/o2cb_abi.c
   trunk/libo2cb/o2cb_err.et
Log:
* add o2cb_remove_heartbeat_region_disk

Signed-off-by: jlbec



Modified: trunk/libo2cb/include/o2cb.h
===================================================================
--- trunk/libo2cb/include/o2cb.h	2005-03-19 01:56:03 UTC (rev 697)
+++ trunk/libo2cb/include/o2cb.h	2005-03-19 01:58:03 UTC (rev 698)
@@ -62,6 +62,8 @@
 					    int block_bytes,
 					    uint64_t start_block,
 					    uint64_t blocks);
+errcode_t o2cb_remove_heartbeat_region_disk(const char *cluster_name,
+					    const char *region_name);
 
 
 #endif  /* _O2CB_H */

Modified: trunk/libo2cb/o2cb_abi.c
===================================================================
--- trunk/libo2cb/o2cb_abi.c	2005-03-19 01:56:03 UTC (rev 697)
+++ trunk/libo2cb/o2cb_abi.c	2005-03-19 01:58:03 UTC (rev 698)
@@ -385,9 +385,9 @@
 	errcode_t err;
 
 	if (!cluster_name) {
-		ret = _fake_default_cluster(_fake_cluster_name);
-		if (ret)
-			return ret;
+		err = _fake_default_cluster(_fake_cluster_name);
+		if (err)
+			return err;
 		cluster_name = _fake_cluster_name;
 	}
 
@@ -518,6 +518,62 @@
 	return err;
 }
 
+errcode_t o2cb_remove_heartbeat_region_disk(const char *cluster_name,
+					    const char *region_name)
+{
+	char _fake_cluster_name[NAME_MAX];
+	char region_path[PATH_MAX];
+	int ret;
+	errcode_t err = 0;
+
+	if (!cluster_name) {
+		err = _fake_default_cluster(_fake_cluster_name);
+		if (err)
+			return err;
+		cluster_name = _fake_cluster_name;
+	}
+
+	ret = snprintf(region_path, PATH_MAX - 1,
+		       O2CB_FORMAT_HEARTBEAT_REGION,
+		       cluster_name, region_name);
+	if (ret <= 0 || ret == PATH_MAX - 1) {
+		err = O2CB_ET_INTERNAL_FAILURE;
+		goto out;
+	}
+
+	ret = rmdir(region_path);
+	if (ret) {
+		switch (errno) {
+			case EACCES:
+			case EPERM:
+			case EROFS:
+				err = O2CB_ET_PERMISSION_DENIED;
+				break;
+
+			case ENOMEM:
+				err = O2CB_ET_NO_MEMORY;
+				break;
+
+			case ENOTDIR:
+			case ENOENT:
+				err = O2CB_ET_SERVICE_UNAVAILABLE;
+				break;
+
+			case ENOTEMPTY:
+			case EBUSY:
+				err = O2CB_ET_REGION_IN_USE;
+				break;
+
+			default:
+				err = O2CB_ET_INTERNAL_FAILURE;
+				break;
+		}
+	}
+
+out:
+	return err;
+}
+
 errcode_t o2cb_list_clusters(char ***clusters)
 {
 	errcode_t ret;

Modified: trunk/libo2cb/o2cb_err.et
===================================================================
--- trunk/libo2cb/o2cb_err.et	2005-03-19 01:56:03 UTC (rev 697)
+++ trunk/libo2cb/o2cb_err.et	2005-03-19 01:58:03 UTC (rev 698)
@@ -48,6 +48,9 @@
 ec	O2CB_ET_REGION_EXISTS,
 	"Heartbeat region already exists"
 
+ec	O2CB_ET_REGION_IN_USE,
+	"Heartbeat region in use"
+
 ec	O2CB_ET_INVALID_BLOCK_SIZE,
 	"Block size is invalid"
 



More information about the Ocfs2-tools-commits mailing list