aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/super.c
diff options
context:
space:
mode:
authorJoel Becker <joel.becker@oracle.com>2008-01-29 19:59:56 -0500
committerMark Fasheh <mfasheh@suse.com>2008-04-18 11:56:04 -0400
commit6953b4c008628b945bfe0cee97f6e78a98773859 (patch)
treede00a19f59466d9e83b00112696afa5b02abbd9c /fs/ocfs2/super.c
parent19fdb624dc8ccb663f6e48b3a3a3fa4e4e567fc1 (diff)
ocfs2: Move o2hb functionality into the stack glue.
The last bit of classic stack used directly in ocfs2 code is o2hb. Specifically, the check for heartbeat during mount and the call to ocfs2_hb_ctl during unmount. We create an extra API, ocfs2_cluster_hangup(), to encapsulate the call to ocfs2_hb_ctl. Other stacks will just leave hangup() empty. The check for heartbeat is moved into ocfs2_cluster_connect(). It will be matched by a similar check for other stacks. With this change, only stackglue.c includes cluster/ headers. Signed-off-by: Joel Becker <joel.becker@oracle.com> Signed-off-by: Mark Fasheh <mfasheh@suse.com>
Diffstat (limited to 'fs/ocfs2/super.c')
-rw-r--r--fs/ocfs2/super.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
index d3c4d323fab5..8f536b39ce5b 100644
--- a/fs/ocfs2/super.c
+++ b/fs/ocfs2/super.c
@@ -40,8 +40,7 @@
40#include <linux/crc32.h> 40#include <linux/crc32.h>
41#include <linux/debugfs.h> 41#include <linux/debugfs.h>
42#include <linux/mount.h> 42#include <linux/mount.h>
43 43#include <linux/seq_file.h>
44#include <cluster/nodemanager.h>
45 44
46#define MLOG_MASK_PREFIX ML_SUPER 45#define MLOG_MASK_PREFIX ML_SUPER
47#include <cluster/masklog.h> 46#include <cluster/masklog.h>
@@ -579,15 +578,6 @@ static int ocfs2_fill_super(struct super_block *sb, void *data, int silent)
579 goto read_super_error; 578 goto read_super_error;
580 } 579 }
581 580
582 /* for now we only have one cluster/node, make sure we see it
583 * in the heartbeat universe */
584 if (parsed_options.mount_opt & OCFS2_MOUNT_HB_LOCAL) {
585 if (!o2hb_check_local_node_heartbeating()) {
586 status = -EINVAL;
587 goto read_super_error;
588 }
589 }
590
591 /* probe for superblock */ 581 /* probe for superblock */
592 status = ocfs2_sb_probe(sb, &bh, &sector_size); 582 status = ocfs2_sb_probe(sb, &bh, &sector_size);
593 if (status < 0) { 583 if (status < 0) {
@@ -1275,8 +1265,15 @@ static void ocfs2_dismount_volume(struct super_block *sb, int mnt_err)
1275 1265
1276 debugfs_remove(osb->osb_debug_root); 1266 debugfs_remove(osb->osb_debug_root);
1277 1267
1278 if (!mnt_err) 1268 /*
1279 ocfs2_stop_heartbeat(osb); 1269 * This is a small hack to move ocfs2_hb_ctl into stackglue.
1270 * If we're dismounting due to mount error, mount.ocfs2 will clean
1271 * up heartbeat. If we're a local mount, there is no heartbeat.
1272 * If we failed before we got a uuid_str yet, we can't stop
1273 * heartbeat. Otherwise, do it.
1274 */
1275 if (!mnt_err && !ocfs2_mount_local(osb) && osb->uuid_str)
1276 ocfs2_cluster_hangup(osb->uuid_str, strlen(osb->uuid_str));
1280 1277
1281 atomic_set(&osb->vol_state, VOLUME_DISMOUNTED); 1278 atomic_set(&osb->vol_state, VOLUME_DISMOUNTED);
1282 1279