|
15 | 15 | #include "recover.h" |
16 | 16 | #include "rcom.h" |
17 | 17 | #include "config.h" |
| 18 | +#include "midcomms.h" |
18 | 19 | #include "lowcomms.h" |
19 | 20 |
|
20 | 21 | int dlm_slots_version(struct dlm_header *h) |
@@ -329,6 +330,7 @@ static int dlm_add_member(struct dlm_ls *ls, struct dlm_config_node *node) |
329 | 330 | memb->nodeid = node->nodeid; |
330 | 331 | memb->weight = node->weight; |
331 | 332 | memb->comm_seq = node->comm_seq; |
| 333 | + dlm_midcomms_add_member(node->nodeid); |
332 | 334 | add_ordered_member(ls, memb); |
333 | 335 | ls->ls_num_nodes++; |
334 | 336 | return 0; |
@@ -359,26 +361,34 @@ int dlm_is_removed(struct dlm_ls *ls, int nodeid) |
359 | 361 | return 0; |
360 | 362 | } |
361 | 363 |
|
362 | | -static void clear_memb_list(struct list_head *head) |
| 364 | +static void clear_memb_list(struct list_head *head, |
| 365 | + void (*after_del)(int nodeid)) |
363 | 366 | { |
364 | 367 | struct dlm_member *memb; |
365 | 368 |
|
366 | 369 | while (!list_empty(head)) { |
367 | 370 | memb = list_entry(head->next, struct dlm_member, list); |
368 | 371 | list_del(&memb->list); |
| 372 | + if (after_del) |
| 373 | + after_del(memb->nodeid); |
369 | 374 | kfree(memb); |
370 | 375 | } |
371 | 376 | } |
372 | 377 |
|
| 378 | +static void clear_members_cb(int nodeid) |
| 379 | +{ |
| 380 | + dlm_midcomms_remove_member(nodeid); |
| 381 | +} |
| 382 | + |
373 | 383 | void dlm_clear_members(struct dlm_ls *ls) |
374 | 384 | { |
375 | | - clear_memb_list(&ls->ls_nodes); |
| 385 | + clear_memb_list(&ls->ls_nodes, clear_members_cb); |
376 | 386 | ls->ls_num_nodes = 0; |
377 | 387 | } |
378 | 388 |
|
379 | 389 | void dlm_clear_members_gone(struct dlm_ls *ls) |
380 | 390 | { |
381 | | - clear_memb_list(&ls->ls_nodes_gone); |
| 391 | + clear_memb_list(&ls->ls_nodes_gone, NULL); |
382 | 392 | } |
383 | 393 |
|
384 | 394 | static void make_member_array(struct dlm_ls *ls) |
@@ -552,6 +562,7 @@ int dlm_recover_members(struct dlm_ls *ls, struct dlm_recover *rv, int *neg_out) |
552 | 562 |
|
553 | 563 | neg++; |
554 | 564 | list_move(&memb->list, &ls->ls_nodes_gone); |
| 565 | + dlm_midcomms_remove_member(memb->nodeid); |
555 | 566 | ls->ls_num_nodes--; |
556 | 567 | dlm_lsop_recover_slot(ls, memb); |
557 | 568 | } |
|
0 commit comments