Lines Matching refs:mh
289 struct dlm_mhandle *mh = container_of(rcu, struct dlm_mhandle, rcu); in dlm_mhandle_release() local
291 dlm_lowcomms_put_msg(mh->msg); in dlm_mhandle_release()
292 dlm_free_mhandle(mh); in dlm_mhandle_release()
296 struct dlm_mhandle *mh) in dlm_mhandle_delete() argument
298 list_del_rcu(&mh->list); in dlm_mhandle_delete()
300 call_rcu(&mh->rcu, dlm_mhandle_release); in dlm_mhandle_delete()
305 struct dlm_mhandle *mh; in dlm_send_queue_flush() local
311 list_for_each_entry_rcu(mh, &node->send_queue, list) { in dlm_send_queue_flush()
312 dlm_mhandle_delete(node, mh); in dlm_send_queue_flush()
421 struct dlm_mhandle *mh; in dlm_send_fin() local
424 mh = dlm_midcomms_get_mhandle(node->nodeid, mb_len, GFP_ATOMIC, &ppc); in dlm_send_fin()
425 if (!mh) in dlm_send_fin()
429 mh->ack_rcv = ack_rcv; in dlm_send_fin()
439 dlm_midcomms_commit_mhandle(mh, NULL, 0); in dlm_send_fin()
446 struct dlm_mhandle *mh; in dlm_receive_ack() local
449 list_for_each_entry_rcu(mh, &node->send_queue, list) { in dlm_receive_ack()
450 if (before(mh->seq, seq)) { in dlm_receive_ack()
451 if (mh->ack_rcv) in dlm_receive_ack()
452 mh->ack_rcv(node); in dlm_receive_ack()
460 list_for_each_entry_rcu(mh, &node->send_queue, list) { in dlm_receive_ack()
461 if (before(mh->seq, seq)) { in dlm_receive_ack()
462 dlm_mhandle_delete(node, mh); in dlm_receive_ack()
915 struct dlm_mhandle *mh; in dlm_midcomms_unack_msg_resend() local
935 list_for_each_entry_rcu(mh, &node->send_queue, list) { in dlm_midcomms_unack_msg_resend()
936 if (!mh->committed) in dlm_midcomms_unack_msg_resend()
939 ret = dlm_lowcomms_resend_msg(mh->msg); in dlm_midcomms_unack_msg_resend()
942 mh->seq, node->nodeid); in dlm_midcomms_unack_msg_resend()
960 struct dlm_mhandle *mh = data; in midcomms_new_msg_cb() local
962 atomic_inc(&mh->node->send_queue_cnt); in midcomms_new_msg_cb()
964 spin_lock_bh(&mh->node->send_queue_lock); in midcomms_new_msg_cb()
965 list_add_tail_rcu(&mh->list, &mh->node->send_queue); in midcomms_new_msg_cb()
966 spin_unlock_bh(&mh->node->send_queue_lock); in midcomms_new_msg_cb()
968 mh->seq = atomic_fetch_inc(&mh->node->seq_send); in midcomms_new_msg_cb()
971 static struct dlm_msg *dlm_midcomms_get_msg_3_2(struct dlm_mhandle *mh, int nodeid, in dlm_midcomms_get_msg_3_2() argument
978 allocation, ppc, midcomms_new_msg_cb, mh); in dlm_midcomms_get_msg_3_2()
983 mh->opts = opts; in dlm_midcomms_get_msg_3_2()
986 dlm_fill_opts_header(opts, len, mh->seq); in dlm_midcomms_get_msg_3_2()
989 mh->inner_p = (const union dlm_packet *)*ppc; in dlm_midcomms_get_msg_3_2()
1001 struct dlm_mhandle *mh; in dlm_midcomms_get_mhandle() local
1013 mh = dlm_allocate_mhandle(allocation); in dlm_midcomms_get_mhandle()
1014 if (!mh) in dlm_midcomms_get_mhandle()
1017 mh->committed = false; in dlm_midcomms_get_mhandle()
1018 mh->ack_rcv = NULL; in dlm_midcomms_get_mhandle()
1019 mh->idx = idx; in dlm_midcomms_get_mhandle()
1020 mh->node = node; in dlm_midcomms_get_mhandle()
1027 dlm_free_mhandle(mh); in dlm_midcomms_get_mhandle()
1033 msg = dlm_midcomms_get_msg_3_2(mh, nodeid, len, allocation, in dlm_midcomms_get_mhandle()
1036 dlm_free_mhandle(mh); in dlm_midcomms_get_mhandle()
1044 dlm_free_mhandle(mh); in dlm_midcomms_get_mhandle()
1049 mh->msg = msg; in dlm_midcomms_get_mhandle()
1056 return mh; in dlm_midcomms_get_mhandle()
1064 static void dlm_midcomms_commit_msg_3_2_trace(const struct dlm_mhandle *mh, in dlm_midcomms_commit_msg_3_2_trace() argument
1067 switch (mh->inner_p->header.h_cmd) { in dlm_midcomms_commit_msg_3_2_trace()
1069 trace_dlm_send_message(mh->node->nodeid, mh->seq, in dlm_midcomms_commit_msg_3_2_trace()
1070 &mh->inner_p->message, in dlm_midcomms_commit_msg_3_2_trace()
1074 trace_dlm_send_rcom(mh->node->nodeid, mh->seq, in dlm_midcomms_commit_msg_3_2_trace()
1075 &mh->inner_p->rcom); in dlm_midcomms_commit_msg_3_2_trace()
1083 static void dlm_midcomms_commit_msg_3_2(struct dlm_mhandle *mh, in dlm_midcomms_commit_msg_3_2() argument
1087 mh->opts->o_nextcmd = mh->inner_p->header.h_cmd; in dlm_midcomms_commit_msg_3_2()
1088 mh->committed = true; in dlm_midcomms_commit_msg_3_2()
1089 dlm_midcomms_commit_msg_3_2_trace(mh, name, namelen); in dlm_midcomms_commit_msg_3_2()
1090 dlm_lowcomms_commit_msg(mh->msg); in dlm_midcomms_commit_msg_3_2()
1097 void dlm_midcomms_commit_mhandle(struct dlm_mhandle *mh, in dlm_midcomms_commit_mhandle() argument
1101 switch (mh->node->version) { in dlm_midcomms_commit_mhandle()
1103 srcu_read_unlock(&nodes_srcu, mh->idx); in dlm_midcomms_commit_mhandle()
1105 dlm_lowcomms_commit_msg(mh->msg); in dlm_midcomms_commit_mhandle()
1106 dlm_lowcomms_put_msg(mh->msg); in dlm_midcomms_commit_mhandle()
1108 dlm_free_mhandle(mh); in dlm_midcomms_commit_mhandle()
1117 dlm_midcomms_commit_msg_3_2(mh, name, namelen); in dlm_midcomms_commit_mhandle()
1118 srcu_read_unlock(&nodes_srcu, mh->idx); in dlm_midcomms_commit_mhandle()
1122 srcu_read_unlock(&nodes_srcu, mh->idx); in dlm_midcomms_commit_mhandle()