Commit 0abd6d18 authored by Mark Fasheh's avatar Mark Fasheh

ocfs2: Fill node number during cluster stack init

It doesn't make sense to query for a node number before connecting to the
cluster stack. This should be safe to do because node_num is only just
printed,
and we're actually only moving the setting of node num a small amount
further in the mount process.

[ Disconnect when node query fails -- Joel ]
Reviewed-by: default avatarJoel Becker <joel.becker@oracle.com>
Signed-off-by: default avatarMark Fasheh <mfasheh@suse.com>
parent 6953b4c0
...@@ -2459,8 +2459,10 @@ int ocfs2_dlm_init(struct ocfs2_super *osb) ...@@ -2459,8 +2459,10 @@ int ocfs2_dlm_init(struct ocfs2_super *osb)
mlog_entry_void(); mlog_entry_void();
if (ocfs2_mount_local(osb)) if (ocfs2_mount_local(osb)) {
osb->node_num = 0;
goto local; goto local;
}
status = ocfs2_dlm_init_debug(osb); status = ocfs2_dlm_init_debug(osb);
if (status < 0) { if (status < 0) {
...@@ -2487,6 +2489,15 @@ int ocfs2_dlm_init(struct ocfs2_super *osb) ...@@ -2487,6 +2489,15 @@ int ocfs2_dlm_init(struct ocfs2_super *osb)
goto bail; goto bail;
} }
status = ocfs2_cluster_this_node(&osb->node_num);
if (status < 0) {
mlog_errno(status);
mlog(ML_ERROR,
"could not find this host's node number\n");
ocfs2_cluster_disconnect(conn);
goto bail;
}
local: local:
ocfs2_super_lock_res_init(&osb->osb_super_lockres, osb); ocfs2_super_lock_res_init(&osb->osb_super_lockres, osb);
ocfs2_rename_lock_res_init(&osb->osb_rename_lockres, osb); ocfs2_rename_lock_res_init(&osb->osb_rename_lockres, osb);
......
...@@ -108,7 +108,6 @@ static int ocfs2_sync_fs(struct super_block *sb, int wait); ...@@ -108,7 +108,6 @@ static int ocfs2_sync_fs(struct super_block *sb, int wait);
static int ocfs2_init_global_system_inodes(struct ocfs2_super *osb); static int ocfs2_init_global_system_inodes(struct ocfs2_super *osb);
static int ocfs2_init_local_system_inodes(struct ocfs2_super *osb); static int ocfs2_init_local_system_inodes(struct ocfs2_super *osb);
static void ocfs2_release_system_inodes(struct ocfs2_super *osb); static void ocfs2_release_system_inodes(struct ocfs2_super *osb);
static int ocfs2_fill_local_node_info(struct ocfs2_super *osb);
static int ocfs2_check_volume(struct ocfs2_super *osb); static int ocfs2_check_volume(struct ocfs2_super *osb);
static int ocfs2_verify_volume(struct ocfs2_dinode *di, static int ocfs2_verify_volume(struct ocfs2_dinode *di,
struct buffer_head *bh, struct buffer_head *bh,
...@@ -1126,32 +1125,6 @@ static int ocfs2_get_sector(struct super_block *sb, ...@@ -1126,32 +1125,6 @@ static int ocfs2_get_sector(struct super_block *sb,
return 0; return 0;
} }
/* ocfs2 1.0 only allows one cluster and node identity per kernel image. */
static int ocfs2_fill_local_node_info(struct ocfs2_super *osb)
{
int status;
/* XXX hold a ref on the node while mounte? easy enough, if
* desirable. */
if (ocfs2_mount_local(osb))
osb->node_num = 0;
else {
status = ocfs2_cluster_this_node(&osb->node_num);
if (status < 0) {
mlog_errno(status);
mlog(ML_ERROR,
"could not find this host's node number\n");
goto bail;
}
}
mlog(0, "I am node %u\n", osb->node_num);
status = 0;
bail:
return status;
}
static int ocfs2_mount_volume(struct super_block *sb) static int ocfs2_mount_volume(struct super_block *sb)
{ {
int status = 0; int status = 0;
...@@ -1163,12 +1136,6 @@ static int ocfs2_mount_volume(struct super_block *sb) ...@@ -1163,12 +1136,6 @@ static int ocfs2_mount_volume(struct super_block *sb)
if (ocfs2_is_hard_readonly(osb)) if (ocfs2_is_hard_readonly(osb))
goto leave; goto leave;
status = ocfs2_fill_local_node_info(osb);
if (status < 0) {
mlog_errno(status);
goto leave;
}
status = ocfs2_dlm_init(osb); status = ocfs2_dlm_init(osb);
if (status < 0) { if (status < 0) {
mlog_errno(status); mlog_errno(status);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment