| 550 | } |
| 551 | |
| 552 | static void |
| 553 | set_role_slave(resource_t * rsc, gboolean current) |
| 554 | { |
| 555 | GListPtr gIter = rsc->children; |
| 556 | |
| 557 | if (current) { |
| 558 | if (rsc->role == RSC_ROLE_STARTED) { |
| 559 | rsc->role = RSC_ROLE_SLAVE; |
| 560 | } |
| 561 | |
| 562 | } else { |
| 563 | GListPtr allocated = NULL; |
| 564 | |
| 565 | rsc->fns->location(rsc, &allocated, FALSE); |
| 566 | |
| 567 | if (allocated) { |
| 568 | rsc->next_role = RSC_ROLE_SLAVE; |
| 569 | |
| 570 | } else { |
| 571 | rsc->next_role = RSC_ROLE_STOPPED; |
| 572 | } |
| 573 | g_list_free(allocated); |
| 574 | } |
| 575 | |
| 576 | for (; gIter != NULL; gIter = gIter->next) { |
| 577 | resource_t *child_rsc = (resource_t *) gIter->data; |
| 578 | |
| 579 | set_role_slave(child_rsc, current); |
| 580 | } |
| 581 | } |
| 582 | |
| 583 | static void |
| 584 | set_role_master(resource_t * rsc) |