File bug-942491_pacemaker-pengine-multiple-active-block-group.patch of Package pacemaker.3577
commit 4882feeea997cdef23233e8f651404de5984baff
Author: Gao,Yan <ygao@suse.com>
Date: Tue Nov 10 15:24:05 2015 +0100
Feature: pengine: Support of multiple-active=block for resource groups
If the group that a multiple-active resource belongs to is configured
with multiple-active=block, block the whole group.
diff --git a/lib/pengine/native.c b/lib/pengine/native.c
index 3c0f754..58f9c2e 100644
--- a/lib/pengine/native.c
+++ b/lib/pengine/native.c
@@ -90,6 +90,21 @@ native_add_running(resource_t * rsc, node_t * node, pe_working_set_t * data_set)
case recovery_block:
clear_bit(rsc->flags, pe_rsc_managed);
set_bit(rsc->flags, pe_rsc_block);
+
+ /* If the group that the resource belongs to is configured with multiple-active=block, */
+ /* block the whole group. */
+ if (rsc->parent
+ && rsc->parent->variant == pe_group
+ && rsc->parent->recovery_type == recovery_block) {
+ GListPtr gIter = rsc->parent->children;
+
+ for (; gIter != NULL; gIter = gIter->next) {
+ resource_t *child = (resource_t *) gIter->data;
+
+ clear_bit(child->flags, pe_rsc_managed);
+ set_bit(child->flags, pe_rsc_block);
+ }
+ }
break;
}
crm_debug("%s is active on %d nodes including %s: %s",