Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:Update
pacemaker.3577
bug-977800_pacemaker-pengine-anti-colocation-sl...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bug-977800_pacemaker-pengine-anti-colocation-slave.patch of Package pacemaker.3577
commit 588247ddf36605dce0331fa31d4ae9feb90c28df Author: Gao,Yan <ygao@suse.com> Date: Tue May 3 15:41:37 2016 +0200 Fix: pengine: Organize order of actions for slave resources in anti-colocations diff --git a/pengine/constraints.c b/pengine/constraints.c index 4044c25..6390b21 100644 --- a/pengine/constraints.c +++ b/pengine/constraints.c @@ -1164,25 +1164,41 @@ anti_colocation_order(resource_t * first_rsc, int first_role, resource_t * then_rsc, int then_role, pe_working_set_t * data_set) { - const char *first_task = NULL; - const char *then_task = NULL; + const char *first_tasks[] = { NULL, NULL }; + const char *then_tasks[] = { NULL, NULL }; + int first_lpc = 0; + int then_lpc = 0; + /* Actions to make first_rsc lose first_role */ if (first_role == RSC_ROLE_MASTER) { - first_task = CRMD_ACTION_DEMOTE; + first_tasks[0] = CRMD_ACTION_DEMOTE; } else { - first_task = CRMD_ACTION_STOP; + first_tasks[0] = CRMD_ACTION_STOP; + + if (first_role == RSC_ROLE_SLAVE) { + first_tasks[1] = CRMD_ACTION_PROMOTE; + } } + /* Actions to make then_rsc gain then_role */ if (then_role == RSC_ROLE_MASTER) { - then_task = CRMD_ACTION_PROMOTE; + then_tasks[0] = CRMD_ACTION_PROMOTE; } else { - then_task = CRMD_ACTION_START; + then_tasks[0] = CRMD_ACTION_START; + + if (then_role == RSC_ROLE_SLAVE) { + then_tasks[1] = CRMD_ACTION_DEMOTE; + } } - new_rsc_order(first_rsc, first_task, then_rsc, then_task, - pe_order_anti_colocation, data_set); + for (first_lpc = 0; first_lpc <= 1 && first_tasks[first_lpc] != NULL; first_lpc++) { + for (then_lpc = 0; then_lpc <= 1 && then_tasks[then_lpc] != NULL; then_lpc++) { + new_rsc_order(first_rsc, first_tasks[first_lpc], then_rsc, then_tasks[then_lpc], + pe_order_anti_colocation, data_set); + } + } } gboolean
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor