File pacemaker-pengine-guest-node-fencing-doesnt-require-stonith-enabled.patch of Package pacemaker.14737
commit 225d20cacc5643e113d42159fc713071172d88da
Author: Ken Gaillot <kgaillot@redhat.com>
Date: Tue Nov 22 16:40:52 2016 -0600
Fix: pengine: guest node fencing doesn't require stonith enabled
Comments elsewhere say as much, but stage6() didn't get the memo
Index: pacemaker/lib/pengine/utils.c
===================================================================
--- pacemaker.orig/lib/pengine/utils.c
+++ pacemaker/lib/pengine/utils.c
@@ -36,6 +36,19 @@ void unpack_operation(action_t * action,
static xmlNode *find_rsc_op_entry_helper(resource_t * rsc, const char *key,
gboolean include_disabled);
+/*!
+ * \internal
+ * \brief Check whether we can fence a particular node
+ *
+ * \param[in] data_set Working set for cluster
+ * \param[in] node Name of node to check
+ *
+ * \return TRUE if node can be fenced, FALSE otherwise
+ *
+ * \note This function should only be called for cluster nodes and baremetal
+ * remote nodes; guest nodes are fenced by stopping their container
+ * resource, so fence execution requirements do not apply to them.
+ */
bool pe_can_fence(pe_working_set_t * data_set, node_t *node)
{
if(is_not_set(data_set->flags, pe_flag_stonith_enabled)) {
Index: pacemaker/pengine/allocate.c
===================================================================
--- pacemaker.orig/pengine/allocate.c
+++ pacemaker/pengine/allocate.c
@@ -1367,10 +1367,7 @@ stage6(pe_working_set_t * data_set)
/* remote-nodes associated with a container resource (such as a vm) are not fenced */
if (is_container_remote_node(node)) {
- /* Guest */
- if (need_stonith
- && node->details->remote_requires_reset
- && pe_can_fence(data_set, node)) {
+ if (node->details->remote_requires_reset && need_stonith) {
resource_t *container = node->details->remote_rsc->container;
char *key = stop_key(container);
GListPtr stop_list = find_actions(container->actions, key, NULL);