[Ocfs2-tools-devel] [PATCH 1/8] o2cb: Handle failure to register heartbeat mode

Sunil Mushran sunil.mushran at oracle.com
Thu Jun 23 15:17:44 PDT 2011


Kernels older than 2.6.37 do not support heartbeat mode. The o2cb tool should
ignore errors when failing to register local heartbeat in older kernels.

Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
---
 libo2cb/o2cb_abi.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/libo2cb/o2cb_abi.c b/libo2cb/o2cb_abi.c
index 149889a..d789620 100644
--- a/libo2cb/o2cb_abi.c
+++ b/libo2cb/o2cb_abi.c
@@ -2115,6 +2115,7 @@ errcode_t o2cb_set_heartbeat_mode(char *cluster_name, char *hbmode)
 	char attr_path[PATH_MAX];
 	char _fake_cluster_name[NAME_MAX];
 	errcode_t ret;
+	int local = 0;
 
 	if (!cluster_name) {
 		ret = _fake_default_cluster(_fake_cluster_name);
@@ -2123,12 +2124,17 @@ errcode_t o2cb_set_heartbeat_mode(char *cluster_name, char *hbmode)
 		cluster_name = _fake_cluster_name;
 	}
 
+	if (!strcmp(hbmode, O2CB_LOCAL_HEARTBEAT_TAG))
+		local = 1;
+
 	ret = snprintf(attr_path, PATH_MAX - 1, O2CB_FORMAT_HEARTBEAT_MODE,
 		       configfs_path, cluster_name);
 	if ((ret <= 0) || (ret == (PATH_MAX - 1)))
 		return O2CB_ET_INTERNAL_FAILURE;
 
 	ret = o2cb_set_attribute(attr_path, hbmode);
+	if (ret && ret == O2CB_ET_SERVICE_UNAVAILABLE && local)
+		ret = 0;
 
 	return ret;
 }
-- 
1.7.4.1




More information about the Ocfs2-tools-devel mailing list