Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP5:Update
lvm2.631
clvmd-Fix-node-up-down-handing-in-corosync-modu...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File clvmd-Fix-node-up-down-handing-in-corosync-module.patch of Package lvm2.631
From 431eda63cc0ebff7c62dacb313cabcffbda6573a Mon Sep 17 00:00:00 2001 From: Christine Caulfield <ccaulfie@redhat.com> Date: Mon, 23 Sep 2013 13:23:00 +0100 Subject: [PATCH] clvmd: Fix node up/down handing in corosync module Git-repo: https://git.fedorahosted.org/git/lvm2.git Git-commit: 431eda63cc0ebff7c62dacb313cabcffbda6573a (partial) Patch-filtered: skipped WHATS_NEW The corosync cluster interface for clvmd did not correctly deal with node up/down events so that when a node was removed from the cluster clvmd would prevent remote operations from happening, as it thought the node was up but not running clvmd. This patch fixes that code by simplifying the case to node being up or down - which was the original intention and is supported by pacemaker and CPG in the higher layers. Signed-off-by: Christine Caulfield <ccaulfie@redhat.com> --- daemons/clvmd/clvmd-corosync.c | 31 ++++--------------------------- 2 files changed, 5 insertions(+), 27 deletions(-) diff --git a/daemons/clvmd/clvmd-corosync.c b/daemons/clvmd/clvmd-corosync.c index d85ec1e..9092c8a 100644 --- a/daemons/clvmd/clvmd-corosync.c +++ b/daemons/clvmd/clvmd-corosync.c @@ -89,7 +89,7 @@ quorum_callbacks_t quorum_callbacks = { struct node_info { - enum {NODE_UNKNOWN, NODE_DOWN, NODE_UP, NODE_CLVMD} state; + enum {NODE_DOWN, NODE_CLVMD} state; int nodeid; }; @@ -255,26 +255,6 @@ static void corosync_cpg_confchg_callback(cpg_handle_t handle, ninfo->state = NODE_DOWN; } - for (i=0; i<member_list_entries; i++) { - if (member_list[i].nodeid == 0) continue; - ninfo = dm_hash_lookup_binary(node_hash, - (char *)&member_list[i].nodeid, - COROSYNC_CSID_LEN); - if (!ninfo) { - ninfo = malloc(sizeof(struct node_info)); - if (!ninfo) { - break; - } - else { - ninfo->nodeid = member_list[i].nodeid; - dm_hash_insert_binary(node_hash, - (char *)&ninfo->nodeid, - COROSYNC_CSID_LEN, ninfo); - } - } - ninfo->state = NODE_CLVMD; - } - num_nodes = member_list_entries; } @@ -440,7 +420,6 @@ static int _cluster_do_node_callback(struct local_client *master_client, { struct dm_hash_node *hn; struct node_info *ninfo; - int somedown = 0; dm_hash_iterate(hn, node_hash) { @@ -452,12 +431,10 @@ static int _cluster_do_node_callback(struct local_client *master_client, DEBUGLOG("down_callback. node %d, state = %d\n", ninfo->nodeid, ninfo->state); - if (ninfo->state != NODE_DOWN) - callback(master_client, csid, ninfo->state == NODE_CLVMD); - if (ninfo->state != NODE_CLVMD) - somedown = -1; + if (ninfo->state == NODE_CLVMD) + callback(master_client, csid, 1); } - return somedown; + return 0; } /* Real locking */ -- 1.8.4.5
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