diff options
Diffstat (limited to 'fs/ocfs2/stackglue.c')
| -rw-r--r-- | fs/ocfs2/stackglue.c | 50 | 
1 files changed, 36 insertions, 14 deletions
diff --git a/fs/ocfs2/stackglue.c b/fs/ocfs2/stackglue.c index 39abf89697e..5d965e83bd4 100644 --- a/fs/ocfs2/stackglue.c +++ b/fs/ocfs2/stackglue.c @@ -309,6 +309,8 @@ int ocfs2_plock(struct ocfs2_cluster_connection *conn, u64 ino,  EXPORT_SYMBOL_GPL(ocfs2_plock);  int ocfs2_cluster_connect(const char *stack_name, +			  const char *cluster_name, +			  int cluster_name_len,  			  const char *group,  			  int grouplen,  			  struct ocfs2_locking_protocol *lproto, @@ -342,8 +344,12 @@ int ocfs2_cluster_connect(const char *stack_name,  		goto out;  	} -	memcpy(new_conn->cc_name, group, grouplen); +	strlcpy(new_conn->cc_name, group, GROUP_NAME_MAX + 1);  	new_conn->cc_namelen = grouplen; +	if (cluster_name_len) +		strlcpy(new_conn->cc_cluster_name, cluster_name, +			CLUSTER_NAME_MAX + 1); +	new_conn->cc_cluster_name_len = cluster_name_len;  	new_conn->cc_recovery_handler = recovery_handler;  	new_conn->cc_recovery_data = recovery_data; @@ -386,8 +392,9 @@ int ocfs2_cluster_connect_agnostic(const char *group,  	if (cluster_stack_name[0])  		stack_name = cluster_stack_name; -	return ocfs2_cluster_connect(stack_name, group, grouplen, lproto, -				     recovery_handler, recovery_data, conn); +	return ocfs2_cluster_connect(stack_name, NULL, 0, group, grouplen, +				     lproto, recovery_handler, recovery_data, +				     conn);  }  EXPORT_SYMBOL_GPL(ocfs2_cluster_connect_agnostic); @@ -460,9 +467,10 @@ void ocfs2_cluster_hangup(const char *group, int grouplen)  }  EXPORT_SYMBOL_GPL(ocfs2_cluster_hangup); -int ocfs2_cluster_this_node(unsigned int *node) +int ocfs2_cluster_this_node(struct ocfs2_cluster_connection *conn, +			    unsigned int *node)  { -	return active_stack->sp_ops->this_node(node); +	return active_stack->sp_ops->this_node(conn, node);  }  EXPORT_SYMBOL_GPL(ocfs2_cluster_this_node); @@ -488,7 +496,7 @@ static ssize_t ocfs2_max_locking_protocol_show(struct kobject *kobj,  }  static struct kobj_attribute ocfs2_attr_max_locking_protocol = -	__ATTR(max_locking_protocol, S_IFREG | S_IRUGO, +	__ATTR(max_locking_protocol, S_IRUGO,  	       ocfs2_max_locking_protocol_show, NULL);  static ssize_t ocfs2_loaded_cluster_plugins_show(struct kobject *kobj, @@ -520,7 +528,7 @@ static ssize_t ocfs2_loaded_cluster_plugins_show(struct kobject *kobj,  }  static struct kobj_attribute ocfs2_attr_loaded_cluster_plugins = -	__ATTR(loaded_cluster_plugins, S_IFREG | S_IRUGO, +	__ATTR(loaded_cluster_plugins, S_IRUGO,  	       ocfs2_loaded_cluster_plugins_show, NULL);  static ssize_t ocfs2_active_cluster_plugin_show(struct kobject *kobj, @@ -542,7 +550,7 @@ static ssize_t ocfs2_active_cluster_plugin_show(struct kobject *kobj,  }  static struct kobj_attribute ocfs2_attr_active_cluster_plugin = -	__ATTR(active_cluster_plugin, S_IFREG | S_IRUGO, +	__ATTR(active_cluster_plugin, S_IRUGO,  	       ocfs2_active_cluster_plugin_show, NULL);  static ssize_t ocfs2_cluster_stack_show(struct kobject *kobj, @@ -591,15 +599,29 @@ static ssize_t ocfs2_cluster_stack_store(struct kobject *kobj,  static struct kobj_attribute ocfs2_attr_cluster_stack = -	__ATTR(cluster_stack, S_IFREG | S_IRUGO | S_IWUSR, +	__ATTR(cluster_stack, S_IRUGO | S_IWUSR,  	       ocfs2_cluster_stack_show,  	       ocfs2_cluster_stack_store); + + +static ssize_t ocfs2_dlm_recover_show(struct kobject *kobj, +					struct kobj_attribute *attr, +					char *buf) +{ +	return snprintf(buf, PAGE_SIZE, "1\n"); +} + +static struct kobj_attribute ocfs2_attr_dlm_recover_support = +	__ATTR(dlm_recover_callback_support, S_IRUGO, +	       ocfs2_dlm_recover_show, NULL); +  static struct attribute *ocfs2_attrs[] = {  	&ocfs2_attr_max_locking_protocol.attr,  	&ocfs2_attr_loaded_cluster_plugins.attr,  	&ocfs2_attr_active_cluster_plugin.attr,  	&ocfs2_attr_cluster_stack.attr, +	&ocfs2_attr_dlm_recover_support.attr,  	NULL,  }; @@ -643,7 +665,7 @@ error:  #define FS_OCFS2_NM		1 -static ctl_table ocfs2_nm_table[] = { +static struct ctl_table ocfs2_nm_table[] = {  	{  		.procname	= "hb_ctl_path",  		.data		= ocfs2_hb_ctl_path, @@ -654,7 +676,7 @@ static ctl_table ocfs2_nm_table[] = {  	{ }  }; -static ctl_table ocfs2_mod_table[] = { +static struct ctl_table ocfs2_mod_table[] = {  	{  		.procname	= "nm",  		.data		= NULL, @@ -665,7 +687,7 @@ static ctl_table ocfs2_mod_table[] = {  	{ }  }; -static ctl_table ocfs2_kern_table[] = { +static struct ctl_table ocfs2_kern_table[] = {  	{  		.procname	= "ocfs2",  		.data		= NULL, @@ -676,7 +698,7 @@ static ctl_table ocfs2_kern_table[] = {  	{ }  }; -static ctl_table ocfs2_root_table[] = { +static struct ctl_table ocfs2_root_table[] = {  	{  		.procname	= "fs",  		.data		= NULL, @@ -687,7 +709,7 @@ static ctl_table ocfs2_root_table[] = {  	{ }  }; -static struct ctl_table_header *ocfs2_table_header = NULL; +static struct ctl_table_header *ocfs2_table_header;  /*  | 
