Lines Matching +full:shutdown +full:- +full:ack
1 // SPDX-License-Identifier: GPL-2.0-only
5 ** Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
6 ** Copyright (C) 2004-2021 Red Hat, Inc. All rights reserved.
15 * This is the appallingly named "mid-level" comms layer. It takes care about
29 * Due the fact that dlm has pre-configured node addresses on every side
33 * compatibility these messages are not covered by the midcomms re-transmission
34 * layer. These messages have their own re-transmission handling in the dlm
43 * like TCP supports it with half-closed socket support. SCTP doesn't support
44 * half-closed socket, so we do it on DLM layer. Also socket shutdown() can be
61 * +---------+
63 * +---------+
67 * +---------+
69 * +---------+
71 * ------- | | -------
72 * +---------+ snd FIN / \ snd ACK +---------+
73 * | FIN |<----------------- ------------------>| CLOSE |
74 * | WAIT-1 |------------------ | WAIT |
75 * +---------+ rcv FIN \ +---------+
76 * | rcv ACK of FIN ------- | CLOSE | member
77 * | -------------- snd ACK | ------- | removal
79 * +---------+ +---------+ +---------+
80 * |FINWAIT-2| | CLOSING | | LAST-ACK|
81 * +---------+ +---------+ +---------+
82 * | rcv ACK of FIN | rcv ACK of FIN |
83 * | rcv FIN -------------- | -------------- |
84 * | ------- x V x V
85 * \ snd ACK +---------+ +---------+
86 * ------------------------>| CLOSED | | CLOSED |
87 * +---------+ +---------+
255 return dlm_state_str(node->state); in dlm_midcomms_state()
260 return node->flags; in dlm_midcomms_flags()
265 return atomic_read(&node->send_queue_cnt); in dlm_midcomms_send_queue_cnt()
270 return node->version; in dlm_midcomms_version()
278 if (node->nodeid == nodeid) in __find_node()
289 dlm_lowcomms_put_msg(mh->msg); in dlm_mhandle_release()
296 list_del_rcu(&mh->list); in dlm_mhandle_delete()
297 atomic_dec(&node->send_queue_cnt); in dlm_mhandle_delete()
298 call_rcu(&mh->rcu, dlm_mhandle_release); in dlm_mhandle_delete()
305 pr_debug("flush midcomms send queue of node %d\n", node->nodeid); in dlm_send_queue_flush()
308 spin_lock(&node->send_queue_lock); in dlm_send_queue_flush()
309 list_for_each_entry_rcu(mh, &node->send_queue, list) { in dlm_send_queue_flush()
312 spin_unlock(&node->send_queue_lock); in dlm_send_queue_flush()
318 pr_debug("reset node %d\n", node->nodeid); in midcomms_node_reset()
320 node->seq_next = DLM_SEQ_INIT; in midcomms_node_reset()
321 node->seq_send = DLM_SEQ_INIT; in midcomms_node_reset()
322 node->version = DLM_VERSION_NOT_SET; in midcomms_node_reset()
323 node->flags = 0; in midcomms_node_reset()
326 node->state = DLM_CLOSED; in midcomms_node_reset()
327 wake_up(&node->shutdown_wait); in midcomms_node_reset()
343 node->nodeid = nodeid; in nodeid2node()
344 spin_lock_init(&node->state_lock); in nodeid2node()
345 spin_lock_init(&node->send_queue_lock); in nodeid2node()
346 atomic_set(&node->send_queue_cnt, 0); in nodeid2node()
347 INIT_LIST_HEAD(&node->send_queue); in nodeid2node()
348 init_waitqueue_head(&node->shutdown_wait); in nodeid2node()
349 node->users = 0; in nodeid2node()
363 hlist_add_head_rcu(&node->hlist, &node_hash[r]); in nodeid2node()
366 node->debugfs = dlm_create_debug_comms_file(nodeid, node); in nodeid2node()
380 return -ENOMEM; in dlm_send_ack()
384 m_header->h_version = cpu_to_le32(DLM_HEADER_MAJOR | DLM_HEADER_MINOR); in dlm_send_ack()
385 m_header->h_nodeid = cpu_to_le32(dlm_our_nodeid()); in dlm_send_ack()
386 m_header->h_length = cpu_to_le16(mb_len); in dlm_send_ack()
387 m_header->h_cmd = DLM_ACK; in dlm_send_ack()
388 m_header->u.h_seq = cpu_to_le32(seq); in dlm_send_ack()
404 mh = dlm_midcomms_get_mhandle(node->nodeid, mb_len, GFP_NOFS, &ppc); in dlm_send_fin()
406 return -ENOMEM; in dlm_send_fin()
408 mh->ack_rcv = ack_rcv; in dlm_send_fin()
412 m_header->h_version = cpu_to_le32(DLM_HEADER_MAJOR | DLM_HEADER_MINOR); in dlm_send_fin()
413 m_header->h_nodeid = cpu_to_le32(dlm_our_nodeid()); in dlm_send_fin()
414 m_header->h_length = cpu_to_le16(mb_len); in dlm_send_fin()
415 m_header->h_cmd = DLM_FIN; in dlm_send_fin()
417 pr_debug("sending fin msg to node %d\n", node->nodeid); in dlm_send_fin()
419 set_bit(DLM_NODE_FLAG_STOP_TX, &node->flags); in dlm_send_fin()
429 list_for_each_entry_rcu(mh, &node->send_queue, list) { in dlm_receive_ack()
430 if (before(mh->seq, seq)) { in dlm_receive_ack()
431 if (mh->ack_rcv) in dlm_receive_ack()
432 mh->ack_rcv(node); in dlm_receive_ack()
439 spin_lock(&node->send_queue_lock); in dlm_receive_ack()
440 list_for_each_entry_rcu(mh, &node->send_queue, list) { in dlm_receive_ack()
441 if (before(mh->seq, seq)) { in dlm_receive_ack()
448 spin_unlock(&node->send_queue_lock); in dlm_receive_ack()
454 spin_lock(&node->state_lock); in dlm_pas_fin_ack_rcv()
455 pr_debug("receive passive fin ack from node %d with state %s\n", in dlm_pas_fin_ack_rcv()
456 node->nodeid, dlm_state_str(node->state)); in dlm_pas_fin_ack_rcv()
458 switch (node->state) { in dlm_pas_fin_ack_rcv()
465 wake_up(&node->shutdown_wait); in dlm_pas_fin_ack_rcv()
468 spin_unlock(&node->state_lock); in dlm_pas_fin_ack_rcv()
470 __func__, node->state); in dlm_pas_fin_ack_rcv()
474 spin_unlock(&node->state_lock); in dlm_pas_fin_ack_rcv()
481 if (seq == node->seq_next) { in dlm_midcomms_receive_buffer()
482 node->seq_next++; in dlm_midcomms_receive_buffer()
484 switch (p->header.h_cmd) { in dlm_midcomms_receive_buffer()
486 /* send ack before fin */ in dlm_midcomms_receive_buffer()
487 dlm_send_ack(node->nodeid, node->seq_next); in dlm_midcomms_receive_buffer()
489 spin_lock(&node->state_lock); in dlm_midcomms_receive_buffer()
491 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_receive_buffer()
493 switch (node->state) { in dlm_midcomms_receive_buffer()
495 node->state = DLM_CLOSE_WAIT; in dlm_midcomms_receive_buffer()
497 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_receive_buffer()
498 /* passive shutdown DLM_LAST_ACK case 1 in dlm_midcomms_receive_buffer()
502 if (node->users == 0) { in dlm_midcomms_receive_buffer()
503 node->state = DLM_LAST_ACK; in dlm_midcomms_receive_buffer()
505 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_receive_buffer()
506 spin_unlock(&node->state_lock); in dlm_midcomms_receive_buffer()
511 node->state = DLM_CLOSING; in dlm_midcomms_receive_buffer()
513 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_receive_buffer()
518 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_receive_buffer()
519 wake_up(&node->shutdown_wait); in dlm_midcomms_receive_buffer()
525 spin_unlock(&node->state_lock); in dlm_midcomms_receive_buffer()
527 __func__, node->state); in dlm_midcomms_receive_buffer()
531 spin_unlock(&node->state_lock); in dlm_midcomms_receive_buffer()
533 set_bit(DLM_NODE_FLAG_STOP_RX, &node->flags); in dlm_midcomms_receive_buffer()
536 WARN_ON(test_bit(DLM_NODE_FLAG_STOP_RX, &node->flags)); in dlm_midcomms_receive_buffer()
537 dlm_receive_buffer(p, node->nodeid); in dlm_midcomms_receive_buffer()
538 set_bit(DLM_NODE_ULP_DELIVERED, &node->flags); in dlm_midcomms_receive_buffer()
542 /* retry to ack message which we already have by sending back in dlm_midcomms_receive_buffer()
543 * current node->seq_next number as ack. in dlm_midcomms_receive_buffer()
545 if (seq < node->seq_next) in dlm_midcomms_receive_buffer()
546 dlm_send_ack(node->nodeid, node->seq_next); in dlm_midcomms_receive_buffer()
549 seq, node->seq_next, node->nodeid); in dlm_midcomms_receive_buffer()
555 set_bit(DLM_NODE_FLAG_STOP_RX, &node->flags); in dlm_midcomms_receive_buffer()
567 switch (p->header.h_cmd) { in dlm_midcomms_recv_node_lookup()
575 switch (p->rcom.rc_type) { in dlm_midcomms_recv_node_lookup()
585 spin_lock(&node->state_lock); in dlm_midcomms_recv_node_lookup()
586 if (node->state != DLM_ESTABLISHED) in dlm_midcomms_recv_node_lookup()
588 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_recv_node_lookup()
590 switch (node->state) { in dlm_midcomms_recv_node_lookup()
592 node->state = DLM_ESTABLISHED; in dlm_midcomms_recv_node_lookup()
594 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_recv_node_lookup()
599 /* some invalid state passive shutdown in dlm_midcomms_recv_node_lookup()
603 log_print("reset node %d because shutdown stuck", in dlm_midcomms_recv_node_lookup()
604 node->nodeid); in dlm_midcomms_recv_node_lookup()
607 node->state = DLM_ESTABLISHED; in dlm_midcomms_recv_node_lookup()
610 spin_unlock(&node->state_lock); in dlm_midcomms_recv_node_lookup()
626 switch (p->header.h_cmd) { in dlm_midcomms_recv_node_lookup()
635 p->opts.o_nextcmd, nodeid); in dlm_midcomms_recv_node_lookup()
639 p->header.h_cmd, nodeid); in dlm_midcomms_recv_node_lookup()
655 switch (node->version) { in dlm_midcomms_version_check_3_2()
657 node->version = DLM_VERSION_3_2; in dlm_midcomms_version_check_3_2()
659 node->nodeid); in dlm_midcomms_version_check_3_2()
665 DLM_VERSION_3_2, node->nodeid, node->version); in dlm_midcomms_version_check_3_2()
666 return -1; in dlm_midcomms_version_check_3_2()
680 return -1; in dlm_opts_check_msglen()
681 len -= sizeof(struct dlm_opts); in dlm_opts_check_msglen()
683 if (len < le16_to_cpu(p->opts.o_optlen)) in dlm_opts_check_msglen()
684 return -1; in dlm_opts_check_msglen()
685 len -= le16_to_cpu(p->opts.o_optlen); in dlm_opts_check_msglen()
687 switch (p->opts.o_nextcmd) { in dlm_opts_check_msglen()
692 return -1; in dlm_opts_check_msglen()
700 return -1; in dlm_opts_check_msglen()
708 return -1; in dlm_opts_check_msglen()
714 p->opts.o_nextcmd, nodeid); in dlm_opts_check_msglen()
715 return -1; in dlm_opts_check_msglen()
723 uint16_t msglen = le16_to_cpu(p->header.h_length); in dlm_midcomms_receive_buffer_3_2()
734 switch (p->header.h_cmd) { in dlm_midcomms_receive_buffer_3_2()
742 switch (p->rcom.rc_type) { in dlm_midcomms_receive_buffer_3_2()
753 le32_to_cpu(p->rcom.rc_type), nodeid); in dlm_midcomms_receive_buffer_3_2()
757 WARN_ON(test_bit(DLM_NODE_FLAG_STOP_RX, &node->flags)); in dlm_midcomms_receive_buffer_3_2()
761 seq = le32_to_cpu(p->header.u.h_seq); in dlm_midcomms_receive_buffer_3_2()
770 p = (union dlm_packet *)((unsigned char *)p->opts.o_opts + in dlm_midcomms_receive_buffer_3_2()
771 le16_to_cpu(p->opts.o_optlen)); in dlm_midcomms_receive_buffer_3_2()
774 msglen = le16_to_cpu(p->header.h_length); in dlm_midcomms_receive_buffer_3_2()
775 switch (p->header.h_cmd) { in dlm_midcomms_receive_buffer_3_2()
809 seq = le32_to_cpu(p->header.u.h_seq); in dlm_midcomms_receive_buffer_3_2()
814 p->header.h_cmd, nodeid); in dlm_midcomms_receive_buffer_3_2()
824 switch (node->version) { in dlm_midcomms_version_check_3_1()
826 node->version = DLM_VERSION_3_1; in dlm_midcomms_version_check_3_1()
828 node->nodeid); in dlm_midcomms_version_check_3_1()
834 DLM_VERSION_3_1, node->nodeid, node->version); in dlm_midcomms_version_check_3_1()
835 return -1; in dlm_midcomms_version_check_3_1()
843 uint16_t msglen = le16_to_cpu(p->header.h_length); in dlm_midcomms_receive_buffer_3_1()
856 switch (p->header.h_cmd) { in dlm_midcomms_receive_buffer_3_1()
870 p->header.h_cmd, nodeid); in dlm_midcomms_receive_buffer_3_1()
878 * Called from the low-level comms layer to process a buffer of
903 msglen = le16_to_cpu(hd->h_length); in dlm_process_incoming_buffer()
908 return -EBADMSG; in dlm_process_incoming_buffer()
917 switch (hd->h_version) { in dlm_process_incoming_buffer()
926 le32_to_cpu(hd->h_version), nodeid); in dlm_process_incoming_buffer()
931 len -= msglen; in dlm_process_incoming_buffer()
951 switch (node->version) { in dlm_midcomms_receive_done()
961 &node->flags)) { in dlm_midcomms_receive_done()
966 spin_lock(&node->state_lock); in dlm_midcomms_receive_done()
967 /* we only ack if state is ESTABLISHED */ in dlm_midcomms_receive_done()
968 switch (node->state) { in dlm_midcomms_receive_done()
970 spin_unlock(&node->state_lock); in dlm_midcomms_receive_done()
971 dlm_send_ack(node->nodeid, node->seq_next); in dlm_midcomms_receive_done()
974 spin_unlock(&node->state_lock); in dlm_midcomms_receive_done()
975 /* do nothing FIN has it's own ack send */ in dlm_midcomms_receive_done()
995 switch (node->version) { in dlm_midcomms_unack_msg_resend()
1004 list_for_each_entry_rcu(mh, &node->send_queue, list) { in dlm_midcomms_unack_msg_resend()
1005 if (!mh->committed) in dlm_midcomms_unack_msg_resend()
1008 ret = dlm_lowcomms_resend_msg(mh->msg); in dlm_midcomms_unack_msg_resend()
1011 mh->seq, node->nodeid); in dlm_midcomms_unack_msg_resend()
1020 opts->o_header.h_cmd = DLM_OPTS; in dlm_fill_opts_header()
1021 opts->o_header.h_version = cpu_to_le32(DLM_HEADER_MAJOR | DLM_HEADER_MINOR); in dlm_fill_opts_header()
1022 opts->o_header.h_nodeid = cpu_to_le32(dlm_our_nodeid()); in dlm_fill_opts_header()
1023 opts->o_header.h_length = cpu_to_le16(DLM_MIDCOMMS_OPT_LEN + inner_len); in dlm_fill_opts_header()
1024 opts->o_header.u.h_seq = cpu_to_le32(seq); in dlm_fill_opts_header()
1031 atomic_inc(&mh->node->send_queue_cnt); in midcomms_new_msg_cb()
1033 spin_lock(&mh->node->send_queue_lock); in midcomms_new_msg_cb()
1034 list_add_tail_rcu(&mh->list, &mh->node->send_queue); in midcomms_new_msg_cb()
1035 spin_unlock(&mh->node->send_queue_lock); in midcomms_new_msg_cb()
1037 mh->seq = mh->node->seq_send++; in midcomms_new_msg_cb()
1052 mh->opts = opts; in dlm_midcomms_get_msg_3_2()
1055 dlm_fill_opts_header(opts, len, mh->seq); in dlm_midcomms_get_msg_3_2()
1058 mh->inner_hd = (const struct dlm_header *)*ppc; in dlm_midcomms_get_msg_3_2()
1082 WARN_ON(test_bit(DLM_NODE_FLAG_STOP_TX, &node->flags)); in dlm_midcomms_get_mhandle()
1088 mh->committed = false; in dlm_midcomms_get_mhandle()
1089 mh->ack_rcv = NULL; in dlm_midcomms_get_mhandle()
1090 mh->idx = idx; in dlm_midcomms_get_mhandle()
1091 mh->node = node; in dlm_midcomms_get_mhandle()
1093 switch (node->version) { in dlm_midcomms_get_mhandle()
1118 mh->msg = msg; in dlm_midcomms_get_mhandle()
1122 * nodes_srcu using mh->idx which is assumed in dlm_midcomms_get_mhandle()
1136 mh->opts->o_nextcmd = mh->inner_hd->h_cmd; in dlm_midcomms_commit_msg_3_2()
1137 mh->committed = true; in dlm_midcomms_commit_msg_3_2()
1138 dlm_lowcomms_commit_msg(mh->msg); in dlm_midcomms_commit_msg_3_2()
1147 switch (mh->node->version) { in dlm_midcomms_commit_mhandle()
1149 srcu_read_unlock(&nodes_srcu, mh->idx); in dlm_midcomms_commit_mhandle()
1151 dlm_lowcomms_commit_msg(mh->msg); in dlm_midcomms_commit_mhandle()
1152 dlm_lowcomms_put_msg(mh->msg); in dlm_midcomms_commit_mhandle()
1158 srcu_read_unlock(&nodes_srcu, mh->idx); in dlm_midcomms_commit_mhandle()
1161 srcu_read_unlock(&nodes_srcu, mh->idx); in dlm_midcomms_commit_mhandle()
1180 spin_lock(&node->state_lock); in dlm_act_fin_ack_rcv()
1181 pr_debug("receive active fin ack from node %d with state %s\n", in dlm_act_fin_ack_rcv()
1182 node->nodeid, dlm_state_str(node->state)); in dlm_act_fin_ack_rcv()
1184 switch (node->state) { in dlm_act_fin_ack_rcv()
1186 node->state = DLM_FIN_WAIT2; in dlm_act_fin_ack_rcv()
1188 node->nodeid, dlm_state_str(node->state)); in dlm_act_fin_ack_rcv()
1193 node->nodeid, dlm_state_str(node->state)); in dlm_act_fin_ack_rcv()
1194 wake_up(&node->shutdown_wait); in dlm_act_fin_ack_rcv()
1198 wake_up(&node->shutdown_wait); in dlm_act_fin_ack_rcv()
1201 spin_unlock(&node->state_lock); in dlm_act_fin_ack_rcv()
1203 __func__, node->state); in dlm_act_fin_ack_rcv()
1207 spin_unlock(&node->state_lock); in dlm_act_fin_ack_rcv()
1225 spin_lock(&node->state_lock); in dlm_midcomms_add_member()
1226 if (!node->users) { in dlm_midcomms_add_member()
1228 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_add_member()
1229 switch (node->state) { in dlm_midcomms_add_member()
1233 node->state = DLM_ESTABLISHED; in dlm_midcomms_add_member()
1235 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_add_member()
1238 /* some invalid state passive shutdown in dlm_midcomms_add_member()
1242 log_print("reset node %d because shutdown stuck", in dlm_midcomms_add_member()
1243 node->nodeid); in dlm_midcomms_add_member()
1246 node->state = DLM_ESTABLISHED; in dlm_midcomms_add_member()
1251 node->users++; in dlm_midcomms_add_member()
1252 pr_debug("node %d users inc count %d\n", nodeid, node->users); in dlm_midcomms_add_member()
1253 spin_unlock(&node->state_lock); in dlm_midcomms_add_member()
1273 spin_lock(&node->state_lock); in dlm_midcomms_remove_member()
1274 node->users--; in dlm_midcomms_remove_member()
1275 pr_debug("node %d users dec count %d\n", nodeid, node->users); in dlm_midcomms_remove_member()
1281 if (node->users == 0) { in dlm_midcomms_remove_member()
1283 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_remove_member()
1284 switch (node->state) { in dlm_midcomms_remove_member()
1288 /* passive shutdown DLM_LAST_ACK case 2 */ in dlm_midcomms_remove_member()
1289 node->state = DLM_LAST_ACK; in dlm_midcomms_remove_member()
1290 spin_unlock(&node->state_lock); in dlm_midcomms_remove_member()
1293 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_remove_member()
1303 __func__, node->state); in dlm_midcomms_remove_member()
1307 spin_unlock(&node->state_lock); in dlm_midcomms_remove_member()
1313 set_bit(DLM_NODE_FLAG_STOP_RX, &node->flags); in dlm_midcomms_remove_member()
1322 WARN_ON(atomic_read(&node->send_queue_cnt)); in midcomms_node_release()
1331 switch (node->version) { in midcomms_shutdown()
1338 spin_lock(&node->state_lock); in midcomms_shutdown()
1339 pr_debug("receive active shutdown for node %d with state %s\n", in midcomms_shutdown()
1340 node->nodeid, dlm_state_str(node->state)); in midcomms_shutdown()
1341 switch (node->state) { in midcomms_shutdown()
1343 node->state = DLM_FIN_WAIT1; in midcomms_shutdown()
1345 node->nodeid, dlm_state_str(node->state)); in midcomms_shutdown()
1349 spin_unlock(&node->state_lock); in midcomms_shutdown()
1357 spin_unlock(&node->state_lock); in midcomms_shutdown()
1359 if (node->state == DLM_FIN_WAIT1) { in midcomms_shutdown()
1367 ret = wait_event_timeout(node->shutdown_wait, in midcomms_shutdown()
1368 node->state == DLM_CLOSED || in midcomms_shutdown()
1369 test_bit(DLM_NODE_FLAG_CLOSE, &node->flags), in midcomms_shutdown()
1371 if (!ret || test_bit(DLM_NODE_FLAG_CLOSE, &node->flags)) { in midcomms_shutdown()
1372 pr_debug("active shutdown timed out for node %d with state %s\n", in midcomms_shutdown()
1373 node->nodeid, dlm_state_str(node->state)); in midcomms_shutdown()
1378 pr_debug("active shutdown done for node %d with state %s\n", in midcomms_shutdown()
1379 node->nodeid, dlm_state_str(node->state)); in midcomms_shutdown()
1393 dlm_delete_debug_comms_file(node->debugfs); in dlm_midcomms_shutdown()
1396 hlist_del_rcu(&node->hlist); in dlm_midcomms_shutdown()
1399 call_srcu(&nodes_srcu, &node->rcu, midcomms_node_release); in dlm_midcomms_shutdown()
1422 /* let shutdown waiters leave */ in dlm_midcomms_close()
1423 set_bit(DLM_NODE_FLAG_CLOSE, &node->flags); in dlm_midcomms_close()
1424 wake_up(&node->shutdown_wait); in dlm_midcomms_close()
1440 spin_lock(&node->state_lock); in dlm_midcomms_close()
1442 spin_unlock(&node->state_lock); in dlm_midcomms_close()
1458 struct dlm_header *h = rd->buf; in midcomms_new_rawmsg_cb()
1460 switch (h->h_version) { in midcomms_new_rawmsg_cb()
1464 switch (h->h_cmd) { in midcomms_new_rawmsg_cb()
1466 if (!h->u.h_seq) in midcomms_new_rawmsg_cb()
1467 h->u.h_seq = cpu_to_le32(rd->node->seq_send++); in midcomms_new_rawmsg_cb()
1486 msg = dlm_lowcomms_new_msg(node->nodeid, buflen, GFP_NOFS, in dlm_midcomms_rawmsg_send()
1489 return -ENOMEM; in dlm_midcomms_rawmsg_send()