Lines Matching full:node
29 * Due the fact that dlm has pre-configured node addresses on every side
35 * application layer. The version field of every node will be set on these RCOM
36 * messages as soon as they arrived and the node isn't yet part of the nodes
47 * compatibility. A node cannot send anything to another node when a DLM_FIN
51 * manager removed the node from internal lists, at this point DLM does not
52 * send any message to the other node. There exists two cases:
160 * We could send a fence signal for a specific node to the cluster
185 /* counts how many lockspaces are using this node
187 * node wants to disconnect.
200 struct midcomms_node *node; member
206 void (*ack_rcv)(struct midcomms_node *node);
254 const char *dlm_midcomms_state(struct midcomms_node *node) in dlm_midcomms_state() argument
256 return dlm_state_str(node->state); in dlm_midcomms_state()
259 unsigned long dlm_midcomms_flags(struct midcomms_node *node) in dlm_midcomms_flags() argument
261 return node->flags; in dlm_midcomms_flags()
264 int dlm_midcomms_send_queue_cnt(struct midcomms_node *node) in dlm_midcomms_send_queue_cnt() argument
266 return atomic_read(&node->send_queue_cnt); in dlm_midcomms_send_queue_cnt()
269 uint32_t dlm_midcomms_version(struct midcomms_node *node) in dlm_midcomms_version() argument
271 return node->version; in dlm_midcomms_version()
276 struct midcomms_node *node; in __find_node() local
278 hlist_for_each_entry_rcu(node, &node_hash[r], hlist) { in __find_node()
279 if (node->nodeid == nodeid) in __find_node()
280 return node; in __find_node()
294 static void dlm_mhandle_delete(struct midcomms_node *node, in dlm_mhandle_delete() argument
298 atomic_dec(&node->send_queue_cnt); in dlm_mhandle_delete()
302 static void dlm_send_queue_flush(struct midcomms_node *node) in dlm_send_queue_flush() argument
306 pr_debug("flush midcomms send queue of node %d\n", node->nodeid); in dlm_send_queue_flush()
309 spin_lock_bh(&node->send_queue_lock); in dlm_send_queue_flush()
310 list_for_each_entry_rcu(mh, &node->send_queue, list) { in dlm_send_queue_flush()
311 dlm_mhandle_delete(node, mh); in dlm_send_queue_flush()
313 spin_unlock_bh(&node->send_queue_lock); in dlm_send_queue_flush()
317 static void midcomms_node_reset(struct midcomms_node *node) in midcomms_node_reset() argument
319 pr_debug("reset node %d\n", node->nodeid); in midcomms_node_reset()
321 atomic_set(&node->seq_next, DLM_SEQ_INIT); in midcomms_node_reset()
322 atomic_set(&node->seq_send, DLM_SEQ_INIT); in midcomms_node_reset()
323 atomic_set(&node->ulp_delivered, 0); in midcomms_node_reset()
324 node->version = DLM_VERSION_NOT_SET; in midcomms_node_reset()
325 node->flags = 0; in midcomms_node_reset()
327 dlm_send_queue_flush(node); in midcomms_node_reset()
328 node->state = DLM_CLOSED; in midcomms_node_reset()
329 wake_up(&node->shutdown_wait); in midcomms_node_reset()
340 struct midcomms_node *node; in dlm_midcomms_addr() local
347 node = __find_node(nodeid, r); in dlm_midcomms_addr()
348 if (node) { in dlm_midcomms_addr()
354 node = kmalloc(sizeof(*node), GFP_NOFS); in dlm_midcomms_addr()
355 if (!node) in dlm_midcomms_addr()
358 node->nodeid = nodeid; in dlm_midcomms_addr()
359 spin_lock_init(&node->state_lock); in dlm_midcomms_addr()
360 spin_lock_init(&node->send_queue_lock); in dlm_midcomms_addr()
361 atomic_set(&node->send_queue_cnt, 0); in dlm_midcomms_addr()
362 INIT_LIST_HEAD(&node->send_queue); in dlm_midcomms_addr()
363 init_waitqueue_head(&node->shutdown_wait); in dlm_midcomms_addr()
364 node->users = 0; in dlm_midcomms_addr()
365 midcomms_node_reset(node); in dlm_midcomms_addr()
368 hlist_add_head_rcu(&node->hlist, &node_hash[r]); in dlm_midcomms_addr()
371 node->debugfs = dlm_create_debug_comms_file(nodeid, node); in dlm_midcomms_addr()
400 static void dlm_send_ack_threshold(struct midcomms_node *node, in dlm_send_ack_threshold() argument
408 oval = atomic_read(&node->ulp_delivered); in dlm_send_ack_threshold()
416 } while (atomic_cmpxchg(&node->ulp_delivered, oval, nval) != oval); in dlm_send_ack_threshold()
419 dlm_send_ack(node->nodeid, atomic_read(&node->seq_next)); in dlm_send_ack_threshold()
422 static int dlm_send_fin(struct midcomms_node *node, in dlm_send_fin() argument
423 void (*ack_rcv)(struct midcomms_node *node)) in dlm_send_fin() argument
430 mh = dlm_midcomms_get_mhandle(node->nodeid, mb_len, &ppc); in dlm_send_fin()
434 set_bit(DLM_NODE_FLAG_STOP_TX, &node->flags); in dlm_send_fin()
444 pr_debug("sending fin msg to node %d\n", node->nodeid); in dlm_send_fin()
450 static void dlm_receive_ack(struct midcomms_node *node, uint32_t seq) in dlm_receive_ack() argument
455 list_for_each_entry_rcu(mh, &node->send_queue, list) { in dlm_receive_ack()
458 mh->ack_rcv(node); in dlm_receive_ack()
465 spin_lock_bh(&node->send_queue_lock); in dlm_receive_ack()
466 list_for_each_entry_rcu(mh, &node->send_queue, list) { in dlm_receive_ack()
468 dlm_mhandle_delete(node, mh); in dlm_receive_ack()
474 spin_unlock_bh(&node->send_queue_lock); in dlm_receive_ack()
478 static void dlm_pas_fin_ack_rcv(struct midcomms_node *node) in dlm_pas_fin_ack_rcv() argument
480 spin_lock_bh(&node->state_lock); in dlm_pas_fin_ack_rcv()
481 pr_debug("receive passive fin ack from node %d with state %s\n", in dlm_pas_fin_ack_rcv()
482 node->nodeid, dlm_state_str(node->state)); in dlm_pas_fin_ack_rcv()
484 switch (node->state) { in dlm_pas_fin_ack_rcv()
487 midcomms_node_reset(node); in dlm_pas_fin_ack_rcv()
491 wake_up(&node->shutdown_wait); in dlm_pas_fin_ack_rcv()
494 spin_unlock_bh(&node->state_lock); in dlm_pas_fin_ack_rcv()
496 __func__, node->state); in dlm_pas_fin_ack_rcv()
500 spin_unlock_bh(&node->state_lock); in dlm_pas_fin_ack_rcv()
519 struct midcomms_node *node, in dlm_midcomms_receive_buffer() argument
526 oval = atomic_read(&node->seq_next); in dlm_midcomms_receive_buffer()
532 } while (atomic_cmpxchg(&node->seq_next, oval, nval) != oval); in dlm_midcomms_receive_buffer()
537 spin_lock_bh(&node->state_lock); in dlm_midcomms_receive_buffer()
538 pr_debug("receive fin msg from node %d with state %s\n", in dlm_midcomms_receive_buffer()
539 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_receive_buffer()
541 switch (node->state) { in dlm_midcomms_receive_buffer()
543 dlm_send_ack(node->nodeid, nval); in dlm_midcomms_receive_buffer()
546 * additional we check if the node is used by in dlm_midcomms_receive_buffer()
549 if (node->users == 0) { in dlm_midcomms_receive_buffer()
550 node->state = DLM_LAST_ACK; in dlm_midcomms_receive_buffer()
551 pr_debug("switch node %d to state %s case 1\n", in dlm_midcomms_receive_buffer()
552 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_receive_buffer()
553 set_bit(DLM_NODE_FLAG_STOP_RX, &node->flags); in dlm_midcomms_receive_buffer()
554 dlm_send_fin(node, dlm_pas_fin_ack_rcv); in dlm_midcomms_receive_buffer()
556 node->state = DLM_CLOSE_WAIT; in dlm_midcomms_receive_buffer()
557 pr_debug("switch node %d to state %s\n", in dlm_midcomms_receive_buffer()
558 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_receive_buffer()
562 dlm_send_ack(node->nodeid, nval); in dlm_midcomms_receive_buffer()
563 node->state = DLM_CLOSING; in dlm_midcomms_receive_buffer()
564 set_bit(DLM_NODE_FLAG_STOP_RX, &node->flags); in dlm_midcomms_receive_buffer()
565 pr_debug("switch node %d to state %s\n", in dlm_midcomms_receive_buffer()
566 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_receive_buffer()
569 dlm_send_ack(node->nodeid, nval); in dlm_midcomms_receive_buffer()
570 midcomms_node_reset(node); in dlm_midcomms_receive_buffer()
571 pr_debug("switch node %d to state %s\n", in dlm_midcomms_receive_buffer()
572 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_receive_buffer()
578 spin_unlock_bh(&node->state_lock); in dlm_midcomms_receive_buffer()
580 __func__, node->state); in dlm_midcomms_receive_buffer()
584 spin_unlock_bh(&node->state_lock); in dlm_midcomms_receive_buffer()
587 WARN_ON_ONCE(test_bit(DLM_NODE_FLAG_STOP_RX, &node->flags)); in dlm_midcomms_receive_buffer()
589 dlm_receive_buffer(p, node->nodeid); in dlm_midcomms_receive_buffer()
590 atomic_inc(&node->ulp_delivered); in dlm_midcomms_receive_buffer()
592 dlm_send_ack_threshold(node, DLM_RECV_ACK_BACK_MSG_THRESHOLD); in dlm_midcomms_receive_buffer()
597 * current node->seq_next number as ack. in dlm_midcomms_receive_buffer()
600 dlm_send_ack(node->nodeid, oval); in dlm_midcomms_receive_buffer()
603 seq, oval, node->nodeid); in dlm_midcomms_receive_buffer()
626 log_print("fin too small: %d, will skip this message from node %d", in dlm_opts_check_msglen()
634 log_print("msg too small: %d, will skip this message from node %d", in dlm_opts_check_msglen()
642 log_print("rcom msg too small: %d, will skip this message from node %d", in dlm_opts_check_msglen()
649 log_print("unsupported o_nextcmd received: %u, will skip this message from node %d", in dlm_opts_check_msglen()
660 struct midcomms_node *node; in dlm_midcomms_receive_buffer_3_2() local
665 node = nodeid2node(nodeid); in dlm_midcomms_receive_buffer_3_2()
666 if (WARN_ON_ONCE(!node)) in dlm_midcomms_receive_buffer_3_2()
669 switch (node->version) { in dlm_midcomms_receive_buffer_3_2()
671 node->version = DLM_VERSION_3_2; in dlm_midcomms_receive_buffer_3_2()
672 wake_up(&node->shutdown_wait); in dlm_midcomms_receive_buffer_3_2()
673 log_print("version 0x%08x for node %d detected", DLM_VERSION_3_2, in dlm_midcomms_receive_buffer_3_2()
674 node->nodeid); in dlm_midcomms_receive_buffer_3_2()
676 spin_lock(&node->state_lock); in dlm_midcomms_receive_buffer_3_2()
677 switch (node->state) { in dlm_midcomms_receive_buffer_3_2()
679 node->state = DLM_ESTABLISHED; in dlm_midcomms_receive_buffer_3_2()
680 pr_debug("switch node %d to state %s\n", in dlm_midcomms_receive_buffer_3_2()
681 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_receive_buffer_3_2()
686 spin_unlock(&node->state_lock); in dlm_midcomms_receive_buffer_3_2()
692 log_print_ratelimited("version mismatch detected, assumed 0x%08x but node %d has 0x%08x", in dlm_midcomms_receive_buffer_3_2()
693 DLM_VERSION_3_2, node->nodeid, node->version); in dlm_midcomms_receive_buffer_3_2()
715 log_print("unsupported rcom type received: %u, will skip this message from node %d", in dlm_midcomms_receive_buffer_3_2()
720 WARN_ON_ONCE(test_bit(DLM_NODE_FLAG_STOP_RX, &node->flags)); in dlm_midcomms_receive_buffer_3_2()
728 log_print("opts msg too small: %u, will skip this message from node %d", in dlm_midcomms_receive_buffer_3_2()
741 log_print("inner rcom msg too small: %u, will skip this message from node %d", in dlm_midcomms_receive_buffer_3_2()
749 log_print("inner msg too small: %u, will skip this message from node %d", in dlm_midcomms_receive_buffer_3_2()
757 log_print("inner fin too small: %u, will skip this message from node %d", in dlm_midcomms_receive_buffer_3_2()
764 log_print("unsupported inner h_cmd received: %u, will skip this message from node %d", in dlm_midcomms_receive_buffer_3_2()
769 dlm_midcomms_receive_buffer(p, node, seq); in dlm_midcomms_receive_buffer_3_2()
773 dlm_receive_ack(node, seq); in dlm_midcomms_receive_buffer_3_2()
776 log_print("unsupported h_cmd received: %u, will skip this message from node %d", in dlm_midcomms_receive_buffer_3_2()
788 struct midcomms_node *node; in dlm_midcomms_receive_buffer_3_1() local
792 node = nodeid2node(nodeid); in dlm_midcomms_receive_buffer_3_1()
793 if (WARN_ON_ONCE(!node)) { in dlm_midcomms_receive_buffer_3_1()
798 switch (node->version) { in dlm_midcomms_receive_buffer_3_1()
800 node->version = DLM_VERSION_3_1; in dlm_midcomms_receive_buffer_3_1()
801 wake_up(&node->shutdown_wait); in dlm_midcomms_receive_buffer_3_1()
802 log_print("version 0x%08x for node %d detected", DLM_VERSION_3_1, in dlm_midcomms_receive_buffer_3_1()
803 node->nodeid); in dlm_midcomms_receive_buffer_3_1()
808 log_print_ratelimited("version mismatch detected, assumed 0x%08x but node %d has 0x%08x", in dlm_midcomms_receive_buffer_3_1()
809 DLM_VERSION_3_1, node->nodeid, node->version); in dlm_midcomms_receive_buffer_3_1()
821 log_print("msg too small: %u, will skip this message from node %d", in dlm_midcomms_receive_buffer_3_1()
828 log_print("unsupported h_cmd received: %u, will skip this message from node %d", in dlm_midcomms_receive_buffer_3_1()
860 log_print("received invalid length header: %u from node %d, will abort message parsing", in dlm_validate_incoming_buffer()
905 log_print("received invalid version header: %u from node %d, will skip this message", in dlm_process_incoming_buffer()
920 struct midcomms_node *node; in dlm_midcomms_unack_msg_resend() local
925 node = nodeid2node(nodeid); in dlm_midcomms_unack_msg_resend()
926 if (WARN_ON_ONCE(!node)) { in dlm_midcomms_unack_msg_resend()
932 switch (node->version) { in dlm_midcomms_unack_msg_resend()
941 list_for_each_entry_rcu(mh, &node->send_queue, list) { in dlm_midcomms_unack_msg_resend()
948 mh->seq, node->nodeid); in dlm_midcomms_unack_msg_resend()
968 atomic_inc(&mh->node->send_queue_cnt); in midcomms_new_msg_cb()
970 spin_lock_bh(&mh->node->send_queue_lock); in midcomms_new_msg_cb()
971 list_add_tail_rcu(&mh->list, &mh->node->send_queue); in midcomms_new_msg_cb()
972 spin_unlock_bh(&mh->node->send_queue_lock); in midcomms_new_msg_cb()
974 mh->seq = atomic_fetch_inc(&mh->node->seq_send); in midcomms_new_msg_cb()
1005 struct midcomms_node *node; in dlm_midcomms_get_mhandle() local
1011 node = nodeid2node(nodeid); in dlm_midcomms_get_mhandle()
1012 if (WARN_ON_ONCE(!node)) in dlm_midcomms_get_mhandle()
1016 WARN_ON_ONCE(test_bit(DLM_NODE_FLAG_STOP_TX, &node->flags)); in dlm_midcomms_get_mhandle()
1025 mh->node = node; in dlm_midcomms_get_mhandle()
1027 switch (node->version) { in dlm_midcomms_get_mhandle()
1038 dlm_send_ack_threshold(node, DLM_SEND_ACK_BACK_MSG_THRESHOLD); in dlm_midcomms_get_mhandle()
1072 trace_dlm_send_message(mh->node->nodeid, mh->seq, in dlm_midcomms_commit_msg_3_2_trace()
1077 trace_dlm_send_rcom(mh->node->nodeid, mh->seq, in dlm_midcomms_commit_msg_3_2_trace()
1104 switch (mh->node->version) { in dlm_midcomms_commit_mhandle()
1154 struct midcomms_node *node = container_of(rcu, struct midcomms_node, rcu); in midcomms_node_release() local
1156 WARN_ON_ONCE(atomic_read(&node->send_queue_cnt)); in midcomms_node_release()
1157 dlm_send_queue_flush(node); in midcomms_node_release()
1158 kfree(node); in midcomms_node_release()
1163 struct midcomms_node *node; in dlm_midcomms_exit() local
1168 hlist_for_each_entry_rcu(node, &node_hash[i], hlist) { in dlm_midcomms_exit()
1169 dlm_delete_debug_comms_file(node->debugfs); in dlm_midcomms_exit()
1172 hlist_del_rcu(&node->hlist); in dlm_midcomms_exit()
1175 call_srcu(&nodes_srcu, &node->rcu, midcomms_node_release); in dlm_midcomms_exit()
1183 static void dlm_act_fin_ack_rcv(struct midcomms_node *node) in dlm_act_fin_ack_rcv() argument
1185 spin_lock_bh(&node->state_lock); in dlm_act_fin_ack_rcv()
1186 pr_debug("receive active fin ack from node %d with state %s\n", in dlm_act_fin_ack_rcv()
1187 node->nodeid, dlm_state_str(node->state)); in dlm_act_fin_ack_rcv()
1189 switch (node->state) { in dlm_act_fin_ack_rcv()
1191 node->state = DLM_FIN_WAIT2; in dlm_act_fin_ack_rcv()
1192 pr_debug("switch node %d to state %s\n", in dlm_act_fin_ack_rcv()
1193 node->nodeid, dlm_state_str(node->state)); in dlm_act_fin_ack_rcv()
1196 midcomms_node_reset(node); in dlm_act_fin_ack_rcv()
1197 pr_debug("switch node %d to state %s\n", in dlm_act_fin_ack_rcv()
1198 node->nodeid, dlm_state_str(node->state)); in dlm_act_fin_ack_rcv()
1202 wake_up(&node->shutdown_wait); in dlm_act_fin_ack_rcv()
1205 spin_unlock_bh(&node->state_lock); in dlm_act_fin_ack_rcv()
1207 __func__, node->state); in dlm_act_fin_ack_rcv()
1211 spin_unlock_bh(&node->state_lock); in dlm_act_fin_ack_rcv()
1216 struct midcomms_node *node; in dlm_midcomms_add_member() local
1220 node = nodeid2node(nodeid); in dlm_midcomms_add_member()
1221 if (WARN_ON_ONCE(!node)) { in dlm_midcomms_add_member()
1226 spin_lock_bh(&node->state_lock); in dlm_midcomms_add_member()
1227 if (!node->users) { in dlm_midcomms_add_member()
1228 pr_debug("receive add member from node %d with state %s\n", in dlm_midcomms_add_member()
1229 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_add_member()
1230 switch (node->state) { in dlm_midcomms_add_member()
1234 node->state = DLM_ESTABLISHED; in dlm_midcomms_add_member()
1235 pr_debug("switch node %d to state %s\n", in dlm_midcomms_add_member()
1236 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_add_member()
1243 log_print("reset node %d because shutdown stuck", in dlm_midcomms_add_member()
1244 node->nodeid); in dlm_midcomms_add_member()
1246 midcomms_node_reset(node); in dlm_midcomms_add_member()
1247 node->state = DLM_ESTABLISHED; in dlm_midcomms_add_member()
1252 node->users++; in dlm_midcomms_add_member()
1253 pr_debug("node %d users inc count %d\n", nodeid, node->users); in dlm_midcomms_add_member()
1254 spin_unlock_bh(&node->state_lock); in dlm_midcomms_add_member()
1261 struct midcomms_node *node; in dlm_midcomms_remove_member() local
1265 node = nodeid2node(nodeid); in dlm_midcomms_remove_member()
1266 /* in case of dlm_midcomms_close() removes node */ in dlm_midcomms_remove_member()
1267 if (!node) { in dlm_midcomms_remove_member()
1272 spin_lock_bh(&node->state_lock); in dlm_midcomms_remove_member()
1273 /* case of dlm_midcomms_addr() created node but in dlm_midcomms_remove_member()
1275 * removed the node in dlm_midcomms_remove_member()
1277 if (!node->users) { in dlm_midcomms_remove_member()
1278 spin_unlock_bh(&node->state_lock); in dlm_midcomms_remove_member()
1283 node->users--; in dlm_midcomms_remove_member()
1284 pr_debug("node %d users dec count %d\n", nodeid, node->users); in dlm_midcomms_remove_member()
1290 if (node->users == 0) { in dlm_midcomms_remove_member()
1291 pr_debug("receive remove member from node %d with state %s\n", in dlm_midcomms_remove_member()
1292 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_remove_member()
1293 switch (node->state) { in dlm_midcomms_remove_member()
1298 node->state = DLM_LAST_ACK; in dlm_midcomms_remove_member()
1299 pr_debug("switch node %d to state %s case 2\n", in dlm_midcomms_remove_member()
1300 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_remove_member()
1301 set_bit(DLM_NODE_FLAG_STOP_RX, &node->flags); in dlm_midcomms_remove_member()
1302 dlm_send_fin(node, dlm_pas_fin_ack_rcv); in dlm_midcomms_remove_member()
1312 __func__, node->state); in dlm_midcomms_remove_member()
1316 spin_unlock_bh(&node->state_lock); in dlm_midcomms_remove_member()
1323 struct midcomms_node *node; in dlm_midcomms_version_wait() local
1328 hlist_for_each_entry_rcu(node, &node_hash[i], hlist) { in dlm_midcomms_version_wait()
1329 ret = wait_event_timeout(node->shutdown_wait, in dlm_midcomms_version_wait()
1330 node->version != DLM_VERSION_NOT_SET || in dlm_midcomms_version_wait()
1331 node->state == DLM_CLOSED || in dlm_midcomms_version_wait()
1332 test_bit(DLM_NODE_FLAG_CLOSE, &node->flags), in dlm_midcomms_version_wait()
1334 if (!ret || test_bit(DLM_NODE_FLAG_CLOSE, &node->flags)) in dlm_midcomms_version_wait()
1335 pr_debug("version wait timed out for node %d with state %s\n", in dlm_midcomms_version_wait()
1336 node->nodeid, dlm_state_str(node->state)); in dlm_midcomms_version_wait()
1342 static void midcomms_shutdown(struct midcomms_node *node) in midcomms_shutdown() argument
1347 switch (node->version) { in midcomms_shutdown()
1354 spin_lock_bh(&node->state_lock); in midcomms_shutdown()
1355 pr_debug("receive active shutdown for node %d with state %s\n", in midcomms_shutdown()
1356 node->nodeid, dlm_state_str(node->state)); in midcomms_shutdown()
1357 switch (node->state) { in midcomms_shutdown()
1359 node->state = DLM_FIN_WAIT1; in midcomms_shutdown()
1360 pr_debug("switch node %d to state %s case 2\n", in midcomms_shutdown()
1361 node->nodeid, dlm_state_str(node->state)); in midcomms_shutdown()
1362 dlm_send_fin(node, dlm_act_fin_ack_rcv); in midcomms_shutdown()
1373 spin_unlock_bh(&node->state_lock); in midcomms_shutdown()
1379 ret = wait_event_timeout(node->shutdown_wait, in midcomms_shutdown()
1380 node->state == DLM_CLOSED || in midcomms_shutdown()
1381 test_bit(DLM_NODE_FLAG_CLOSE, &node->flags), in midcomms_shutdown()
1384 pr_debug("active shutdown timed out for node %d with state %s\n", in midcomms_shutdown()
1385 node->nodeid, dlm_state_str(node->state)); in midcomms_shutdown()
1387 pr_debug("active shutdown done for node %d with state %s\n", in midcomms_shutdown()
1388 node->nodeid, dlm_state_str(node->state)); in midcomms_shutdown()
1393 struct midcomms_node *node; in dlm_midcomms_shutdown() local
1399 hlist_for_each_entry_rcu(node, &node_hash[i], hlist) { in dlm_midcomms_shutdown()
1400 midcomms_shutdown(node); in dlm_midcomms_shutdown()
1407 hlist_for_each_entry_rcu(node, &node_hash[i], hlist) { in dlm_midcomms_shutdown()
1408 midcomms_node_reset(node); in dlm_midcomms_shutdown()
1417 struct midcomms_node *node; in dlm_midcomms_close() local
1422 node = nodeid2node(nodeid); in dlm_midcomms_close()
1423 if (node) { in dlm_midcomms_close()
1425 set_bit(DLM_NODE_FLAG_CLOSE, &node->flags); in dlm_midcomms_close()
1426 wake_up(&node->shutdown_wait); in dlm_midcomms_close()
1434 node = nodeid2node(nodeid); in dlm_midcomms_close()
1435 if (!node) { in dlm_midcomms_close()
1442 dlm_delete_debug_comms_file(node->debugfs); in dlm_midcomms_close()
1445 hlist_del_rcu(&node->hlist); in dlm_midcomms_close()
1453 * this function get called when the node is fenced in dlm_midcomms_close()
1455 dlm_send_queue_flush(node); in dlm_midcomms_close()
1457 call_srcu(&nodes_srcu, &node->rcu, midcomms_node_release); in dlm_midcomms_close()
1465 struct midcomms_node *node; member
1481 h->u.h_seq = cpu_to_le32(atomic_fetch_inc(&rd->node->seq_send)); in midcomms_new_rawmsg_cb()
1490 int dlm_midcomms_rawmsg_send(struct midcomms_node *node, void *buf, in dlm_midcomms_rawmsg_send() argument
1497 rd.node = node; in dlm_midcomms_rawmsg_send()
1500 msg = dlm_lowcomms_new_msg(node->nodeid, buflen, &msgbuf, in dlm_midcomms_rawmsg_send()