[Ocfs2-devel] [PATCH 10/11] ocfs2: add the ability to switch between heartbeat group modes

Jeff Mahoney jeffm at suse.com
Mon Jan 9 16:39:43 CST 2006


 This patch allows the user to switch heartbeat modes by writing the desired
 mode into /sys/o2cb/heartbeat_mode.

 The mode cannot be switched when another is in use. This means that
 <configfs>/cluster/ must be empty.

 fs/ocfs2/cluster/heartbeat.h |    3 +++
 fs/ocfs2/cluster/sys.c       |   15 +++++++++++++++
 2 files changed, 18 insertions(+)

Signed-off-by: Jeff Mahoney <jeffm at suse.com>

diff -ruNpX dontdiff linux-2.6.15-staging1/fs/ocfs2/cluster/heartbeat.h linux-2.6.15-staging2/fs/ocfs2/cluster/heartbeat.h
--- linux-2.6.15-staging1/fs/ocfs2/cluster/heartbeat.h	2006-01-08 20:11:12.799132416 -0500
+++ linux-2.6.15-staging2/fs/ocfs2/cluster/heartbeat.h	2006-01-08 20:05:01.787534752 -0500
@@ -110,6 +110,9 @@ int o2hb_check_local_node_heartbeating(c
 void o2hb_notify(enum o2hb_callback_type type, struct o2nm_node *node,
                  int node_num);
 
+const char *o2hb_heartbeat_mode(void);
+int o2hb_set_heartbeat_mode(const char *type, size_t count);
+
 struct o2hb_heartbeat_resource *o2hb_heartbeat_resource_get_by_name(const char * name);
 
 static inline struct o2hb_heartbeat_group *to_o2hb_heartbeat_group(struct config_group *group)
diff -ruNpX dontdiff linux-2.6.15-staging1/fs/ocfs2/cluster/sys.c linux-2.6.15-staging2/fs/ocfs2/cluster/sys.c
--- linux-2.6.15-staging1/fs/ocfs2/cluster/sys.c	2006-01-08 19:23:29.343443848 -0500
+++ linux-2.6.15-staging2/fs/ocfs2/cluster/sys.c	2006-01-08 19:52:16.793831472 -0500
@@ -29,6 +29,7 @@
 #include <linux/kobject.h>
 #include <linux/sysfs.h>
 
+#include "heartbeat.h"
 #include "ocfs2_nodemanager.h"
 #include "masklog.h"
 #include "sys.h"
@@ -52,8 +53,22 @@ static ssize_t o2cb_interface_revision_s
 
 static O2CB_ATTR(interface_revision, S_IFREG | S_IRUGO, o2cb_interface_revision_show, NULL);
 
+static ssize_t o2cb_heartbeat_mode_show(char *buf)
+{
+	return snprintf(buf, PAGE_SIZE, "%s\n", o2hb_heartbeat_mode());
+}
+
+static ssize_t o2cb_heartbeat_mode_store(const char * buffer, size_t count)
+{
+	return o2hb_set_heartbeat_mode(buffer, count);
+}
+
+static O2CB_ATTR(heartbeat_mode, S_IFREG | S_IRUGO | S_IWUSR,
+                 o2cb_heartbeat_mode_show, o2cb_heartbeat_mode_store);
+
 static struct attribute *o2cb_attrs[] = {
 	&o2cb_attr_interface_revision.attr,
+	&o2cb_attr_heartbeat_mode.attr,
 	NULL,
 };
 


More information about the Ocfs2-devel mailing list