aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKurt Hackel <kurt.hackel@oracle.com>2007-01-17 20:04:25 -0500
committerMark Fasheh <mark.fasheh@oracle.com>2007-02-07 15:06:56 -0500
commitd74c9803a90d733f5fb7270475aa6d14b45796c6 (patch)
tree7f402437667103773cfe7d76b56a621183e84094
parent74aa25856c693d20a886cdb31a004aaca411d135 (diff)
ocfs2: Added post handler callable function in o2net message handler
Currently o2net allows one handler function per message type. This patch adds the ability to call another function to be called after the handler has returned the message to the other node. Handlers are now given the option of returning a context (in the form of a void **) which will be passed back into the post message handler function. Signed-off-by: Kurt Hackel <kurt.hackel@oracle.com> Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com> Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
-rw-r--r--fs/ocfs2/cluster/tcp.c12
-rw-r--r--fs/ocfs2/cluster/tcp.h6
-rw-r--r--fs/ocfs2/cluster/tcp_internal.h2
-rw-r--r--fs/ocfs2/dlm/dlmast.c3
-rw-r--r--fs/ocfs2/dlm/dlmcommon.h42
-rw-r--r--fs/ocfs2/dlm/dlmconvert.c3
-rw-r--r--fs/ocfs2/dlm/dlmdomain.c60
-rw-r--r--fs/ocfs2/dlm/dlmlock.c3
-rw-r--r--fs/ocfs2/dlm/dlmmaster.c12
-rw-r--r--fs/ocfs2/dlm/dlmrecovery.c18
-rw-r--r--fs/ocfs2/dlm/dlmunlock.c3
-rw-r--r--fs/ocfs2/vote.c8
12 files changed, 112 insertions, 60 deletions
diff --git a/fs/ocfs2/cluster/tcp.c b/fs/ocfs2/cluster/tcp.c
index ae4ff4a6636b..7700418d25ec 100644
--- a/fs/ocfs2/cluster/tcp.c
+++ b/fs/ocfs2/cluster/tcp.c
@@ -688,6 +688,7 @@ static void o2net_handler_put(struct o2net_msg_handler *nmh)
688 * be given to the handler if their payload is longer than the max. */ 688 * be given to the handler if their payload is longer than the max. */
689int o2net_register_handler(u32 msg_type, u32 key, u32 max_len, 689int o2net_register_handler(u32 msg_type, u32 key, u32 max_len,
690 o2net_msg_handler_func *func, void *data, 690 o2net_msg_handler_func *func, void *data,
691 o2net_post_msg_handler_func *post_func,
691 struct list_head *unreg_list) 692 struct list_head *unreg_list)
692{ 693{
693 struct o2net_msg_handler *nmh = NULL; 694 struct o2net_msg_handler *nmh = NULL;
@@ -722,6 +723,7 @@ int o2net_register_handler(u32 msg_type, u32 key, u32 max_len,
722 723
723 nmh->nh_func = func; 724 nmh->nh_func = func;
724 nmh->nh_func_data = data; 725 nmh->nh_func_data = data;
726 nmh->nh_post_func = post_func;
725 nmh->nh_msg_type = msg_type; 727 nmh->nh_msg_type = msg_type;
726 nmh->nh_max_len = max_len; 728 nmh->nh_max_len = max_len;
727 nmh->nh_key = key; 729 nmh->nh_key = key;
@@ -1049,6 +1051,7 @@ static int o2net_process_message(struct o2net_sock_container *sc,
1049 int ret = 0, handler_status; 1051 int ret = 0, handler_status;
1050 enum o2net_system_error syserr; 1052 enum o2net_system_error syserr;
1051 struct o2net_msg_handler *nmh = NULL; 1053 struct o2net_msg_handler *nmh = NULL;
1054 void *ret_data = NULL;
1052 1055
1053 msglog(hdr, "processing message\n"); 1056 msglog(hdr, "processing message\n");
1054 1057
@@ -1101,7 +1104,7 @@ static int o2net_process_message(struct o2net_sock_container *sc,
1101 sc->sc_msg_type = be16_to_cpu(hdr->msg_type); 1104 sc->sc_msg_type = be16_to_cpu(hdr->msg_type);
1102 handler_status = (nmh->nh_func)(hdr, sizeof(struct o2net_msg) + 1105 handler_status = (nmh->nh_func)(hdr, sizeof(struct o2net_msg) +
1103 be16_to_cpu(hdr->data_len), 1106 be16_to_cpu(hdr->data_len),
1104 nmh->nh_func_data); 1107 nmh->nh_func_data, &ret_data);
1105 do_gettimeofday(&sc->sc_tv_func_stop); 1108 do_gettimeofday(&sc->sc_tv_func_stop);
1106 1109
1107out_respond: 1110out_respond:
@@ -1112,6 +1115,13 @@ out_respond:
1112 mlog(0, "sending handler status %d, syserr %d returned %d\n", 1115 mlog(0, "sending handler status %d, syserr %d returned %d\n",
1113 handler_status, syserr, ret); 1116 handler_status, syserr, ret);
1114 1117
1118 if (nmh) {
1119 BUG_ON(ret_data != NULL && nmh->nh_post_func == NULL);
1120 if (nmh->nh_post_func)
1121 (nmh->nh_post_func)(handler_status, nmh->nh_func_data,
1122 ret_data);
1123 }
1124
1115out: 1125out:
1116 if (nmh) 1126 if (nmh)
1117 o2net_handler_put(nmh); 1127 o2net_handler_put(nmh);
diff --git a/fs/ocfs2/cluster/tcp.h b/fs/ocfs2/cluster/tcp.h
index 21a4e43df836..da880fc215f0 100644
--- a/fs/ocfs2/cluster/tcp.h
+++ b/fs/ocfs2/cluster/tcp.h
@@ -50,7 +50,10 @@ struct o2net_msg
50 __u8 buf[0]; 50 __u8 buf[0];
51}; 51};
52 52
53typedef int (o2net_msg_handler_func)(struct o2net_msg *msg, u32 len, void *data); 53typedef int (o2net_msg_handler_func)(struct o2net_msg *msg, u32 len, void *data,
54 void **ret_data);
55typedef void (o2net_post_msg_handler_func)(int status, void *data,
56 void *ret_data);
54 57
55#define O2NET_MAX_PAYLOAD_BYTES (4096 - sizeof(struct o2net_msg)) 58#define O2NET_MAX_PAYLOAD_BYTES (4096 - sizeof(struct o2net_msg))
56 59
@@ -99,6 +102,7 @@ int o2net_send_message_vec(u32 msg_type, u32 key, struct kvec *vec,
99 102
100int o2net_register_handler(u32 msg_type, u32 key, u32 max_len, 103int o2net_register_handler(u32 msg_type, u32 key, u32 max_len,
101 o2net_msg_handler_func *func, void *data, 104 o2net_msg_handler_func *func, void *data,
105 o2net_post_msg_handler_func *post_func,
102 struct list_head *unreg_list); 106 struct list_head *unreg_list);
103void o2net_unregister_handler_list(struct list_head *list); 107void o2net_unregister_handler_list(struct list_head *list);
104 108
diff --git a/fs/ocfs2/cluster/tcp_internal.h b/fs/ocfs2/cluster/tcp_internal.h
index 775c911342f4..d74040fac343 100644
--- a/fs/ocfs2/cluster/tcp_internal.h
+++ b/fs/ocfs2/cluster/tcp_internal.h
@@ -161,6 +161,8 @@ struct o2net_msg_handler {
161 u32 nh_key; 161 u32 nh_key;
162 o2net_msg_handler_func *nh_func; 162 o2net_msg_handler_func *nh_func;
163 o2net_msg_handler_func *nh_func_data; 163 o2net_msg_handler_func *nh_func_data;
164 o2net_post_msg_handler_func
165 *nh_post_func;
164 struct kref nh_kref; 166 struct kref nh_kref;
165 struct list_head nh_unregister_item; 167 struct list_head nh_unregister_item;
166}; 168};
diff --git a/fs/ocfs2/dlm/dlmast.c b/fs/ocfs2/dlm/dlmast.c
index ad5e7e1fa1ff..241cad342a48 100644
--- a/fs/ocfs2/dlm/dlmast.c
+++ b/fs/ocfs2/dlm/dlmast.c
@@ -263,7 +263,8 @@ void dlm_do_local_bast(struct dlm_ctxt *dlm, struct dlm_lock_resource *res,
263 263
264 264
265 265
266int dlm_proxy_ast_handler(struct o2net_msg *msg, u32 len, void *data) 266int dlm_proxy_ast_handler(struct o2net_msg *msg, u32 len, void *data,
267 void **ret_data)
267{ 268{
268 int ret; 269 int ret;
269 unsigned int locklen; 270 unsigned int locklen;
diff --git a/fs/ocfs2/dlm/dlmcommon.h b/fs/ocfs2/dlm/dlmcommon.h
index e95ecb2aaf14..2df6fde3e652 100644
--- a/fs/ocfs2/dlm/dlmcommon.h
+++ b/fs/ocfs2/dlm/dlmcommon.h
@@ -707,16 +707,20 @@ void dlm_lock_put(struct dlm_lock *lock);
707void dlm_lock_attach_lockres(struct dlm_lock *lock, 707void dlm_lock_attach_lockres(struct dlm_lock *lock,
708 struct dlm_lock_resource *res); 708 struct dlm_lock_resource *res);
709 709
710int dlm_create_lock_handler(struct o2net_msg *msg, u32 len, void *data); 710int dlm_create_lock_handler(struct o2net_msg *msg, u32 len, void *data,
711int dlm_convert_lock_handler(struct o2net_msg *msg, u32 len, void *data); 711 void **ret_data);
712int dlm_proxy_ast_handler(struct o2net_msg *msg, u32 len, void *data); 712int dlm_convert_lock_handler(struct o2net_msg *msg, u32 len, void *data,
713 void **ret_data);
714int dlm_proxy_ast_handler(struct o2net_msg *msg, u32 len, void *data,
715 void **ret_data);
713 716
714void dlm_revert_pending_convert(struct dlm_lock_resource *res, 717void dlm_revert_pending_convert(struct dlm_lock_resource *res,
715 struct dlm_lock *lock); 718 struct dlm_lock *lock);
716void dlm_revert_pending_lock(struct dlm_lock_resource *res, 719void dlm_revert_pending_lock(struct dlm_lock_resource *res,
717 struct dlm_lock *lock); 720 struct dlm_lock *lock);
718 721
719int dlm_unlock_lock_handler(struct o2net_msg *msg, u32 len, void *data); 722int dlm_unlock_lock_handler(struct o2net_msg *msg, u32 len, void *data,
723 void **ret_data);
720void dlm_commit_pending_cancel(struct dlm_lock_resource *res, 724void dlm_commit_pending_cancel(struct dlm_lock_resource *res,
721 struct dlm_lock *lock); 725 struct dlm_lock *lock);
722void dlm_commit_pending_unlock(struct dlm_lock_resource *res, 726void dlm_commit_pending_unlock(struct dlm_lock_resource *res,
@@ -871,16 +875,26 @@ void dlm_lockres_release_ast(struct dlm_ctxt *dlm,
871 struct dlm_lock_resource *res); 875 struct dlm_lock_resource *res);
872void __dlm_lockres_reserve_ast(struct dlm_lock_resource *res); 876void __dlm_lockres_reserve_ast(struct dlm_lock_resource *res);
873 877
874int dlm_master_request_handler(struct o2net_msg *msg, u32 len, void *data); 878int dlm_master_request_handler(struct o2net_msg *msg, u32 len, void *data,
875int dlm_assert_master_handler(struct o2net_msg *msg, u32 len, void *data); 879 void **ret_data);
876int dlm_deref_lockres_handler(struct o2net_msg *msg, u32 len, void *data); 880int dlm_assert_master_handler(struct o2net_msg *msg, u32 len, void *data,
877int dlm_migrate_request_handler(struct o2net_msg *msg, u32 len, void *data); 881 void **ret_data);
878int dlm_mig_lockres_handler(struct o2net_msg *msg, u32 len, void *data); 882int dlm_deref_lockres_handler(struct o2net_msg *msg, u32 len, void *data,
879int dlm_master_requery_handler(struct o2net_msg *msg, u32 len, void *data); 883 void **ret_data);
880int dlm_request_all_locks_handler(struct o2net_msg *msg, u32 len, void *data); 884int dlm_migrate_request_handler(struct o2net_msg *msg, u32 len, void *data,
881int dlm_reco_data_done_handler(struct o2net_msg *msg, u32 len, void *data); 885 void **ret_data);
882int dlm_begin_reco_handler(struct o2net_msg *msg, u32 len, void *data); 886int dlm_mig_lockres_handler(struct o2net_msg *msg, u32 len, void *data,
883int dlm_finalize_reco_handler(struct o2net_msg *msg, u32 len, void *data); 887 void **ret_data);
888int dlm_master_requery_handler(struct o2net_msg *msg, u32 len, void *data,
889 void **ret_data);
890int dlm_request_all_locks_handler(struct o2net_msg *msg, u32 len, void *data,
891 void **ret_data);
892int dlm_reco_data_done_handler(struct o2net_msg *msg, u32 len, void *data,
893 void **ret_data);
894int dlm_begin_reco_handler(struct o2net_msg *msg, u32 len, void *data,
895 void **ret_data);
896int dlm_finalize_reco_handler(struct o2net_msg *msg, u32 len, void *data,
897 void **ret_data);
884int dlm_do_master_requery(struct dlm_ctxt *dlm, struct dlm_lock_resource *res, 898int dlm_do_master_requery(struct dlm_ctxt *dlm, struct dlm_lock_resource *res,
885 u8 nodenum, u8 *real_master); 899 u8 nodenum, u8 *real_master);
886 900
diff --git a/fs/ocfs2/dlm/dlmconvert.c b/fs/ocfs2/dlm/dlmconvert.c
index 59fb63da8b65..ecb4d997221e 100644
--- a/fs/ocfs2/dlm/dlmconvert.c
+++ b/fs/ocfs2/dlm/dlmconvert.c
@@ -418,7 +418,8 @@ static enum dlm_status dlm_send_remote_convert_request(struct dlm_ctxt *dlm,
418 * returns: DLM_NORMAL, DLM_IVLOCKID, DLM_BADARGS, 418 * returns: DLM_NORMAL, DLM_IVLOCKID, DLM_BADARGS,
419 * status from __dlmconvert_master 419 * status from __dlmconvert_master
420 */ 420 */
421int dlm_convert_lock_handler(struct o2net_msg *msg, u32 len, void *data) 421int dlm_convert_lock_handler(struct o2net_msg *msg, u32 len, void *data,
422 void **ret_data)
422{ 423{
423 struct dlm_ctxt *dlm = data; 424 struct dlm_ctxt *dlm = data;
424 struct dlm_convert_lock *cnv = (struct dlm_convert_lock *)msg->buf; 425 struct dlm_convert_lock *cnv = (struct dlm_convert_lock *)msg->buf;
diff --git a/fs/ocfs2/dlm/dlmdomain.c b/fs/ocfs2/dlm/dlmdomain.c
index 3995de360264..8a208b06fdd7 100644
--- a/fs/ocfs2/dlm/dlmdomain.c
+++ b/fs/ocfs2/dlm/dlmdomain.c
@@ -95,10 +95,14 @@ static DECLARE_WAIT_QUEUE_HEAD(dlm_domain_events);
95 95
96#define DLM_DOMAIN_BACKOFF_MS 200 96#define DLM_DOMAIN_BACKOFF_MS 200
97 97
98static int dlm_query_join_handler(struct o2net_msg *msg, u32 len, void *data); 98static int dlm_query_join_handler(struct o2net_msg *msg, u32 len, void *data,
99static int dlm_assert_joined_handler(struct o2net_msg *msg, u32 len, void *data); 99 void **ret_data);
100static int dlm_cancel_join_handler(struct o2net_msg *msg, u32 len, void *data); 100static int dlm_assert_joined_handler(struct o2net_msg *msg, u32 len, void *data,
101static int dlm_exit_domain_handler(struct o2net_msg *msg, u32 len, void *data); 101 void **ret_data);
102static int dlm_cancel_join_handler(struct o2net_msg *msg, u32 len, void *data,
103 void **ret_data);
104static int dlm_exit_domain_handler(struct o2net_msg *msg, u32 len, void *data,
105 void **ret_data);
102 106
103static void dlm_unregister_domain_handlers(struct dlm_ctxt *dlm); 107static void dlm_unregister_domain_handlers(struct dlm_ctxt *dlm);
104 108
@@ -466,7 +470,8 @@ static void __dlm_print_nodes(struct dlm_ctxt *dlm)
466 printk("\n"); 470 printk("\n");
467} 471}
468 472
469static int dlm_exit_domain_handler(struct o2net_msg *msg, u32 len, void *data) 473static int dlm_exit_domain_handler(struct o2net_msg *msg, u32 len, void *data,
474 void **ret_data)
470{ 475{
471 struct dlm_ctxt *dlm = data; 476 struct dlm_ctxt *dlm = data;
472 unsigned int node; 477 unsigned int node;
@@ -630,7 +635,8 @@ void dlm_unregister_domain(struct dlm_ctxt *dlm)
630} 635}
631EXPORT_SYMBOL_GPL(dlm_unregister_domain); 636EXPORT_SYMBOL_GPL(dlm_unregister_domain);
632 637
633static int dlm_query_join_handler(struct o2net_msg *msg, u32 len, void *data) 638static int dlm_query_join_handler(struct o2net_msg *msg, u32 len, void *data,
639 void **ret_data)
634{ 640{
635 struct dlm_query_join_request *query; 641 struct dlm_query_join_request *query;
636 enum dlm_query_join_response response; 642 enum dlm_query_join_response response;
@@ -707,7 +713,8 @@ respond:
707 return response; 713 return response;
708} 714}
709 715
710static int dlm_assert_joined_handler(struct o2net_msg *msg, u32 len, void *data) 716static int dlm_assert_joined_handler(struct o2net_msg *msg, u32 len, void *data,
717 void **ret_data)
711{ 718{
712 struct dlm_assert_joined *assert; 719 struct dlm_assert_joined *assert;
713 struct dlm_ctxt *dlm = NULL; 720 struct dlm_ctxt *dlm = NULL;
@@ -744,7 +751,8 @@ static int dlm_assert_joined_handler(struct o2net_msg *msg, u32 len, void *data)
744 return 0; 751 return 0;
745} 752}
746 753
747static int dlm_cancel_join_handler(struct o2net_msg *msg, u32 len, void *data) 754static int dlm_cancel_join_handler(struct o2net_msg *msg, u32 len, void *data,
755 void **ret_data)
748{ 756{
749 struct dlm_cancel_join *cancel; 757 struct dlm_cancel_join *cancel;
750 struct dlm_ctxt *dlm = NULL; 758 struct dlm_ctxt *dlm = NULL;
@@ -1086,105 +1094,105 @@ static int dlm_register_domain_handlers(struct dlm_ctxt *dlm)
1086 status = o2net_register_handler(DLM_MASTER_REQUEST_MSG, dlm->key, 1094 status = o2net_register_handler(DLM_MASTER_REQUEST_MSG, dlm->key,
1087 sizeof(struct dlm_master_request), 1095 sizeof(struct dlm_master_request),
1088 dlm_master_request_handler, 1096 dlm_master_request_handler,
1089 dlm, &dlm->dlm_domain_handlers); 1097 dlm, NULL, &dlm->dlm_domain_handlers);
1090 if (status) 1098 if (status)
1091 goto bail; 1099 goto bail;
1092 1100
1093 status = o2net_register_handler(DLM_ASSERT_MASTER_MSG, dlm->key, 1101 status = o2net_register_handler(DLM_ASSERT_MASTER_MSG, dlm->key,
1094 sizeof(struct dlm_assert_master), 1102 sizeof(struct dlm_assert_master),
1095 dlm_assert_master_handler, 1103 dlm_assert_master_handler,
1096 dlm, &dlm->dlm_domain_handlers); 1104 dlm, NULL, &dlm->dlm_domain_handlers);
1097 if (status) 1105 if (status)
1098 goto bail; 1106 goto bail;
1099 1107
1100 status = o2net_register_handler(DLM_CREATE_LOCK_MSG, dlm->key, 1108 status = o2net_register_handler(DLM_CREATE_LOCK_MSG, dlm->key,
1101 sizeof(struct dlm_create_lock), 1109 sizeof(struct dlm_create_lock),
1102 dlm_create_lock_handler, 1110 dlm_create_lock_handler,
1103 dlm, &dlm->dlm_domain_handlers); 1111 dlm, NULL, &dlm->dlm_domain_handlers);
1104 if (status) 1112 if (status)
1105 goto bail; 1113 goto bail;
1106 1114
1107 status = o2net_register_handler(DLM_CONVERT_LOCK_MSG, dlm->key, 1115 status = o2net_register_handler(DLM_CONVERT_LOCK_MSG, dlm->key,
1108 DLM_CONVERT_LOCK_MAX_LEN, 1116 DLM_CONVERT_LOCK_MAX_LEN,
1109 dlm_convert_lock_handler, 1117 dlm_convert_lock_handler,
1110 dlm, &dlm->dlm_domain_handlers); 1118 dlm, NULL, &dlm->dlm_domain_handlers);
1111 if (status) 1119 if (status)
1112 goto bail; 1120 goto bail;
1113 1121
1114 status = o2net_register_handler(DLM_UNLOCK_LOCK_MSG, dlm->key, 1122 status = o2net_register_handler(DLM_UNLOCK_LOCK_MSG, dlm->key,
1115 DLM_UNLOCK_LOCK_MAX_LEN, 1123 DLM_UNLOCK_LOCK_MAX_LEN,
1116 dlm_unlock_lock_handler, 1124 dlm_unlock_lock_handler,
1117 dlm, &dlm->dlm_domain_handlers); 1125 dlm, NULL, &dlm->dlm_domain_handlers);
1118 if (status) 1126 if (status)
1119 goto bail; 1127 goto bail;
1120 1128
1121 status = o2net_register_handler(DLM_PROXY_AST_MSG, dlm->key, 1129 status = o2net_register_handler(DLM_PROXY_AST_MSG, dlm->key,
1122 DLM_PROXY_AST_MAX_LEN, 1130 DLM_PROXY_AST_MAX_LEN,
1123 dlm_proxy_ast_handler, 1131 dlm_proxy_ast_handler,
1124 dlm, &dlm->dlm_domain_handlers); 1132 dlm, NULL, &dlm->dlm_domain_handlers);
1125 if (status) 1133 if (status)
1126 goto bail; 1134 goto bail;
1127 1135
1128 status = o2net_register_handler(DLM_EXIT_DOMAIN_MSG, dlm->key, 1136 status = o2net_register_handler(DLM_EXIT_DOMAIN_MSG, dlm->key,
1129 sizeof(struct dlm_exit_domain), 1137 sizeof(struct dlm_exit_domain),
1130 dlm_exit_domain_handler, 1138 dlm_exit_domain_handler,
1131 dlm, &dlm->dlm_domain_handlers); 1139 dlm, NULL, &dlm->dlm_domain_handlers);
1132 if (status) 1140 if (status)
1133 goto bail; 1141 goto bail;
1134 1142
1135 status = o2net_register_handler(DLM_DEREF_LOCKRES_MSG, dlm->key, 1143 status = o2net_register_handler(DLM_DEREF_LOCKRES_MSG, dlm->key,
1136 sizeof(struct dlm_deref_lockres), 1144 sizeof(struct dlm_deref_lockres),
1137 dlm_deref_lockres_handler, 1145 dlm_deref_lockres_handler,
1138 dlm, &dlm->dlm_domain_handlers); 1146 dlm, NULL, &dlm->dlm_domain_handlers);
1139 if (status) 1147 if (status)
1140 goto bail; 1148 goto bail;
1141 1149
1142 status = o2net_register_handler(DLM_MIGRATE_REQUEST_MSG, dlm->key, 1150 status = o2net_register_handler(DLM_MIGRATE_REQUEST_MSG, dlm->key,
1143 sizeof(struct dlm_migrate_request), 1151 sizeof(struct dlm_migrate_request),
1144 dlm_migrate_request_handler, 1152 dlm_migrate_request_handler,
1145 dlm, &dlm->dlm_domain_handlers); 1153 dlm, NULL, &dlm->dlm_domain_handlers);
1146 if (status) 1154 if (status)
1147 goto bail; 1155 goto bail;
1148 1156
1149 status = o2net_register_handler(DLM_MIG_LOCKRES_MSG, dlm->key, 1157 status = o2net_register_handler(DLM_MIG_LOCKRES_MSG, dlm->key,
1150 DLM_MIG_LOCKRES_MAX_LEN, 1158 DLM_MIG_LOCKRES_MAX_LEN,
1151 dlm_mig_lockres_handler, 1159 dlm_mig_lockres_handler,
1152 dlm, &dlm->dlm_domain_handlers); 1160 dlm, NULL, &dlm->dlm_domain_handlers);
1153 if (status) 1161 if (status)
1154 goto bail; 1162 goto bail;
1155 1163
1156 status = o2net_register_handler(DLM_MASTER_REQUERY_MSG, dlm->key, 1164 status = o2net_register_handler(DLM_MASTER_REQUERY_MSG, dlm->key,
1157 sizeof(struct dlm_master_requery), 1165 sizeof(struct dlm_master_requery),
1158 dlm_master_requery_handler, 1166 dlm_master_requery_handler,
1159 dlm, &dlm->dlm_domain_handlers); 1167 dlm, NULL, &dlm->dlm_domain_handlers);
1160 if (status) 1168 if (status)
1161 goto bail; 1169 goto bail;
1162 1170
1163 status = o2net_register_handler(DLM_LOCK_REQUEST_MSG, dlm->key, 1171 status = o2net_register_handler(DLM_LOCK_REQUEST_MSG, dlm->key,
1164 sizeof(struct dlm_lock_request), 1172 sizeof(struct dlm_lock_request),
1165 dlm_request_all_locks_handler, 1173 dlm_request_all_locks_handler,
1166 dlm, &dlm->dlm_domain_handlers); 1174 dlm, NULL, &dlm->dlm_domain_handlers);
1167 if (status) 1175 if (status)
1168 goto bail; 1176 goto bail;
1169 1177
1170 status = o2net_register_handler(DLM_RECO_DATA_DONE_MSG, dlm->key, 1178 status = o2net_register_handler(DLM_RECO_DATA_DONE_MSG, dlm->key,
1171 sizeof(struct dlm_reco_data_done), 1179 sizeof(struct dlm_reco_data_done),
1172 dlm_reco_data_done_handler, 1180 dlm_reco_data_done_handler,
1173 dlm, &dlm->dlm_domain_handlers); 1181 dlm, NULL, &dlm->dlm_domain_handlers);
1174 if (status) 1182 if (status)
1175 goto bail; 1183 goto bail;
1176 1184
1177 status = o2net_register_handler(DLM_BEGIN_RECO_MSG, dlm->key, 1185 status = o2net_register_handler(DLM_BEGIN_RECO_MSG, dlm->key,
1178 sizeof(struct dlm_begin_reco), 1186 sizeof(struct dlm_begin_reco),
1179 dlm_begin_reco_handler, 1187 dlm_begin_reco_handler,
1180 dlm, &dlm->dlm_domain_handlers); 1188 dlm, NULL, &dlm->dlm_domain_handlers);
1181 if (status) 1189 if (status)
1182 goto bail; 1190 goto bail;
1183 1191
1184 status = o2net_register_handler(DLM_FINALIZE_RECO_MSG, dlm->key, 1192 status = o2net_register_handler(DLM_FINALIZE_RECO_MSG, dlm->key,
1185 sizeof(struct dlm_finalize_reco), 1193 sizeof(struct dlm_finalize_reco),
1186 dlm_finalize_reco_handler, 1194 dlm_finalize_reco_handler,
1187 dlm, &dlm->dlm_domain_handlers); 1195 dlm, NULL, &dlm->dlm_domain_handlers);
1188 if (status) 1196 if (status)
1189 goto bail; 1197 goto bail;
1190 1198
@@ -1478,21 +1486,21 @@ static int dlm_register_net_handlers(void)
1478 status = o2net_register_handler(DLM_QUERY_JOIN_MSG, DLM_MOD_KEY, 1486 status = o2net_register_handler(DLM_QUERY_JOIN_MSG, DLM_MOD_KEY,
1479 sizeof(struct dlm_query_join_request), 1487 sizeof(struct dlm_query_join_request),
1480 dlm_query_join_handler, 1488 dlm_query_join_handler,
1481 NULL, &dlm_join_handlers); 1489 NULL, NULL, &dlm_join_handlers);
1482 if (status) 1490 if (status)
1483 goto bail; 1491 goto bail;
1484 1492
1485 status = o2net_register_handler(DLM_ASSERT_JOINED_MSG, DLM_MOD_KEY, 1493 status = o2net_register_handler(DLM_ASSERT_JOINED_MSG, DLM_MOD_KEY,
1486 sizeof(struct dlm_assert_joined), 1494 sizeof(struct dlm_assert_joined),
1487 dlm_assert_joined_handler, 1495 dlm_assert_joined_handler,
1488 NULL, &dlm_join_handlers); 1496 NULL, NULL, &dlm_join_handlers);
1489 if (status) 1497 if (status)
1490 goto bail; 1498 goto bail;
1491 1499
1492 status = o2net_register_handler(DLM_CANCEL_JOIN_MSG, DLM_MOD_KEY, 1500 status = o2net_register_handler(DLM_CANCEL_JOIN_MSG, DLM_MOD_KEY,
1493 sizeof(struct dlm_cancel_join), 1501 sizeof(struct dlm_cancel_join),
1494 dlm_cancel_join_handler, 1502 dlm_cancel_join_handler,
1495 NULL, &dlm_join_handlers); 1503 NULL, NULL, &dlm_join_handlers);
1496 1504
1497bail: 1505bail:
1498 if (status < 0) 1506 if (status < 0)
diff --git a/fs/ocfs2/dlm/dlmlock.c b/fs/ocfs2/dlm/dlmlock.c
index ac91a76b1e78..52578d907d9a 100644
--- a/fs/ocfs2/dlm/dlmlock.c
+++ b/fs/ocfs2/dlm/dlmlock.c
@@ -441,7 +441,8 @@ struct dlm_lock * dlm_new_lock(int type, u8 node, u64 cookie,
441 * held on exit: none 441 * held on exit: none
442 * returns: DLM_NORMAL, DLM_SYSERR, DLM_IVLOCKID, DLM_NOTQUEUED 442 * returns: DLM_NORMAL, DLM_SYSERR, DLM_IVLOCKID, DLM_NOTQUEUED
443 */ 443 */
444int dlm_create_lock_handler(struct o2net_msg *msg, u32 len, void *data) 444int dlm_create_lock_handler(struct o2net_msg *msg, u32 len, void *data,
445 void **ret_data)
445{ 446{
446 struct dlm_ctxt *dlm = data; 447 struct dlm_ctxt *dlm = data;
447 struct dlm_create_lock *create = (struct dlm_create_lock *)msg->buf; 448 struct dlm_create_lock *create = (struct dlm_create_lock *)msg->buf;
diff --git a/fs/ocfs2/dlm/dlmmaster.c b/fs/ocfs2/dlm/dlmmaster.c
index 6cfbdf282d46..bd1268778b66 100644
--- a/fs/ocfs2/dlm/dlmmaster.c
+++ b/fs/ocfs2/dlm/dlmmaster.c
@@ -1469,7 +1469,8 @@ out:
1469 * 1469 *
1470 * if possible, TRIM THIS DOWN!!! 1470 * if possible, TRIM THIS DOWN!!!
1471 */ 1471 */
1472int dlm_master_request_handler(struct o2net_msg *msg, u32 len, void *data) 1472int dlm_master_request_handler(struct o2net_msg *msg, u32 len, void *data,
1473 void **ret_data)
1473{ 1474{
1474 u8 response = DLM_MASTER_RESP_MAYBE; 1475 u8 response = DLM_MASTER_RESP_MAYBE;
1475 struct dlm_ctxt *dlm = data; 1476 struct dlm_ctxt *dlm = data;
@@ -1800,7 +1801,8 @@ again:
1800 * 1801 *
1801 * if possible, TRIM THIS DOWN!!! 1802 * if possible, TRIM THIS DOWN!!!
1802 */ 1803 */
1803int dlm_assert_master_handler(struct o2net_msg *msg, u32 len, void *data) 1804int dlm_assert_master_handler(struct o2net_msg *msg, u32 len, void *data,
1805 void **ret_data)
1804{ 1806{
1805 struct dlm_ctxt *dlm = data; 1807 struct dlm_ctxt *dlm = data;
1806 struct dlm_master_list_entry *mle = NULL; 1808 struct dlm_master_list_entry *mle = NULL;
@@ -2265,7 +2267,8 @@ int dlm_drop_lockres_ref(struct dlm_ctxt *dlm, struct dlm_lock_resource *res)
2265 return ret; 2267 return ret;
2266} 2268}
2267 2269
2268int dlm_deref_lockres_handler(struct o2net_msg *msg, u32 len, void *data) 2270int dlm_deref_lockres_handler(struct o2net_msg *msg, u32 len, void *data,
2271 void **ret_data)
2269{ 2272{
2270 struct dlm_ctxt *dlm = data; 2273 struct dlm_ctxt *dlm = data;
2271 struct dlm_deref_lockres *deref = (struct dlm_deref_lockres *)msg->buf; 2274 struct dlm_deref_lockres *deref = (struct dlm_deref_lockres *)msg->buf;
@@ -2948,7 +2951,8 @@ static int dlm_do_migrate_request(struct dlm_ctxt *dlm,
2948 * we will have no mle in the list to start with. now we can add an mle for 2951 * we will have no mle in the list to start with. now we can add an mle for
2949 * the migration and this should be the only one found for those scanning the 2952 * the migration and this should be the only one found for those scanning the
2950 * list. */ 2953 * list. */
2951int dlm_migrate_request_handler(struct o2net_msg *msg, u32 len, void *data) 2954int dlm_migrate_request_handler(struct o2net_msg *msg, u32 len, void *data,
2955 void **ret_data)
2952{ 2956{
2953 struct dlm_ctxt *dlm = data; 2957 struct dlm_ctxt *dlm = data;
2954 struct dlm_lock_resource *res = NULL; 2958 struct dlm_lock_resource *res = NULL;
diff --git a/fs/ocfs2/dlm/dlmrecovery.c b/fs/ocfs2/dlm/dlmrecovery.c
index 38d714645309..6d4a83d50152 100644
--- a/fs/ocfs2/dlm/dlmrecovery.c
+++ b/fs/ocfs2/dlm/dlmrecovery.c
@@ -818,7 +818,8 @@ static int dlm_request_all_locks(struct dlm_ctxt *dlm, u8 request_from,
818 818
819} 819}
820 820
821int dlm_request_all_locks_handler(struct o2net_msg *msg, u32 len, void *data) 821int dlm_request_all_locks_handler(struct o2net_msg *msg, u32 len, void *data,
822 void **ret_data)
822{ 823{
823 struct dlm_ctxt *dlm = data; 824 struct dlm_ctxt *dlm = data;
824 struct dlm_lock_request *lr = (struct dlm_lock_request *)msg->buf; 825 struct dlm_lock_request *lr = (struct dlm_lock_request *)msg->buf;
@@ -975,7 +976,8 @@ static int dlm_send_all_done_msg(struct dlm_ctxt *dlm, u8 dead_node, u8 send_to)
975} 976}
976 977
977 978
978int dlm_reco_data_done_handler(struct o2net_msg *msg, u32 len, void *data) 979int dlm_reco_data_done_handler(struct o2net_msg *msg, u32 len, void *data,
980 void **ret_data)
979{ 981{
980 struct dlm_ctxt *dlm = data; 982 struct dlm_ctxt *dlm = data;
981 struct dlm_reco_data_done *done = (struct dlm_reco_data_done *)msg->buf; 983 struct dlm_reco_data_done *done = (struct dlm_reco_data_done *)msg->buf;
@@ -1331,7 +1333,8 @@ error:
1331 * do we spin? returning an error only delays the problem really 1333 * do we spin? returning an error only delays the problem really
1332 */ 1334 */
1333 1335
1334int dlm_mig_lockres_handler(struct o2net_msg *msg, u32 len, void *data) 1336int dlm_mig_lockres_handler(struct o2net_msg *msg, u32 len, void *data,
1337 void **ret_data)
1335{ 1338{
1336 struct dlm_ctxt *dlm = data; 1339 struct dlm_ctxt *dlm = data;
1337 struct dlm_migratable_lockres *mres = 1340 struct dlm_migratable_lockres *mres =
@@ -1624,7 +1627,8 @@ int dlm_do_master_requery(struct dlm_ctxt *dlm, struct dlm_lock_resource *res,
1624/* this function cannot error, so unless the sending 1627/* this function cannot error, so unless the sending
1625 * or receiving of the message failed, the owner can 1628 * or receiving of the message failed, the owner can
1626 * be trusted */ 1629 * be trusted */
1627int dlm_master_requery_handler(struct o2net_msg *msg, u32 len, void *data) 1630int dlm_master_requery_handler(struct o2net_msg *msg, u32 len, void *data,
1631 void **ret_data)
1628{ 1632{
1629 struct dlm_ctxt *dlm = data; 1633 struct dlm_ctxt *dlm = data;
1630 struct dlm_master_requery *req = (struct dlm_master_requery *)msg->buf; 1634 struct dlm_master_requery *req = (struct dlm_master_requery *)msg->buf;
@@ -2600,7 +2604,8 @@ retry:
2600 return ret; 2604 return ret;
2601} 2605}
2602 2606
2603int dlm_begin_reco_handler(struct o2net_msg *msg, u32 len, void *data) 2607int dlm_begin_reco_handler(struct o2net_msg *msg, u32 len, void *data,
2608 void **ret_data)
2604{ 2609{
2605 struct dlm_ctxt *dlm = data; 2610 struct dlm_ctxt *dlm = data;
2606 struct dlm_begin_reco *br = (struct dlm_begin_reco *)msg->buf; 2611 struct dlm_begin_reco *br = (struct dlm_begin_reco *)msg->buf;
@@ -2728,7 +2733,8 @@ stage2:
2728 return ret; 2733 return ret;
2729} 2734}
2730 2735
2731int dlm_finalize_reco_handler(struct o2net_msg *msg, u32 len, void *data) 2736int dlm_finalize_reco_handler(struct o2net_msg *msg, u32 len, void *data,
2737 void **ret_data)
2732{ 2738{
2733 struct dlm_ctxt *dlm = data; 2739 struct dlm_ctxt *dlm = data;
2734 struct dlm_finalize_reco *fr = (struct dlm_finalize_reco *)msg->buf; 2740 struct dlm_finalize_reco *fr = (struct dlm_finalize_reco *)msg->buf;
diff --git a/fs/ocfs2/dlm/dlmunlock.c b/fs/ocfs2/dlm/dlmunlock.c
index fc8baa3e9539..86ca085ef324 100644
--- a/fs/ocfs2/dlm/dlmunlock.c
+++ b/fs/ocfs2/dlm/dlmunlock.c
@@ -383,7 +383,8 @@ static enum dlm_status dlm_send_remote_unlock_request(struct dlm_ctxt *dlm,
383 * returns: DLM_NORMAL, DLM_BADARGS, DLM_IVLOCKID, 383 * returns: DLM_NORMAL, DLM_BADARGS, DLM_IVLOCKID,
384 * return value from dlmunlock_master 384 * return value from dlmunlock_master
385 */ 385 */
386int dlm_unlock_lock_handler(struct o2net_msg *msg, u32 len, void *data) 386int dlm_unlock_lock_handler(struct o2net_msg *msg, u32 len, void *data,
387 void **ret_data)
387{ 388{
388 struct dlm_ctxt *dlm = data; 389 struct dlm_ctxt *dlm = data;
389 struct dlm_unlock_lock *unlock = (struct dlm_unlock_lock *)msg->buf; 390 struct dlm_unlock_lock *unlock = (struct dlm_unlock_lock *)msg->buf;
diff --git a/fs/ocfs2/vote.c b/fs/ocfs2/vote.c
index 0afd8b9af70f..f30e63b9910c 100644
--- a/fs/ocfs2/vote.c
+++ b/fs/ocfs2/vote.c
@@ -887,7 +887,7 @@ static inline int ocfs2_translate_response(int response)
887 887
888static int ocfs2_handle_response_message(struct o2net_msg *msg, 888static int ocfs2_handle_response_message(struct o2net_msg *msg,
889 u32 len, 889 u32 len,
890 void *data) 890 void *data, void **ret_data)
891{ 891{
892 unsigned int response_id, node_num; 892 unsigned int response_id, node_num;
893 int response_status; 893 int response_status;
@@ -943,7 +943,7 @@ bail:
943 943
944static int ocfs2_handle_vote_message(struct o2net_msg *msg, 944static int ocfs2_handle_vote_message(struct o2net_msg *msg,
945 u32 len, 945 u32 len,
946 void *data) 946 void *data, void **ret_data)
947{ 947{
948 int status; 948 int status;
949 struct ocfs2_super *osb = data; 949 struct ocfs2_super *osb = data;
@@ -1007,7 +1007,7 @@ int ocfs2_register_net_handlers(struct ocfs2_super *osb)
1007 osb->net_key, 1007 osb->net_key,
1008 sizeof(struct ocfs2_response_msg), 1008 sizeof(struct ocfs2_response_msg),
1009 ocfs2_handle_response_message, 1009 ocfs2_handle_response_message,
1010 osb, &osb->osb_net_handlers); 1010 osb, NULL, &osb->osb_net_handlers);
1011 if (status) { 1011 if (status) {
1012 mlog_errno(status); 1012 mlog_errno(status);
1013 goto bail; 1013 goto bail;
@@ -1017,7 +1017,7 @@ int ocfs2_register_net_handlers(struct ocfs2_super *osb)
1017 osb->net_key, 1017 osb->net_key,
1018 sizeof(struct ocfs2_vote_msg), 1018 sizeof(struct ocfs2_vote_msg),
1019 ocfs2_handle_vote_message, 1019 ocfs2_handle_vote_message,
1020 osb, &osb->osb_net_handlers); 1020 osb, NULL, &osb->osb_net_handlers);
1021 if (status) { 1021 if (status) {
1022 mlog_errno(status); 1022 mlog_errno(status);
1023 goto bail; 1023 goto bail;