Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.2
libdlm
0001-dlm_controld-outputs-explicit-info-about-s...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-dlm_controld-outputs-explicit-info-about-stateful-me.patch of Package libdlm
From f8aa09a9d6e5f3fe33355db606553579e11cb692 Mon Sep 17 00:00:00 2001 From: Eric Ren <zren@suse.com> Date: Tue, 17 May 2016 13:36:02 +0800 Subject: [[DLM PATCH]] dlm_controld: outputs explicit info about stateful merging When there are 3 or more partitions that merge, none may see enough clean nodes. Therefore, DLM would be stuck there forever unitl administrator manually reset/restart enough nodes to produce sufficient clean nodes. Therefore, output explicit information for higher code (e.g. pcmk) about the stateful merging state. Now, higher code can use `dlm status -v` to get "stateful_merge_wait". If it equals "1", we know dlm is waiting manual intervention. Then, higher code can choose one of nodes to fence. DLM will continue to work if "clean nodes >= stateful merged nodes" becomes true. David advised me to do the right thing;-) Thanks a lot! Signed-off-by: Eric Ren <zren@suse.com> --- dlm_controld/daemon_cpg.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/dlm_controld/daemon_cpg.c b/dlm_controld/daemon_cpg.c index 356e80d..8f6434f 100644 --- a/dlm_controld/daemon_cpg.c +++ b/dlm_controld/daemon_cpg.c @@ -118,6 +118,7 @@ static int zombie_count; static int fence_result_pid; static unsigned int fence_result_try; +static int stateful_merge_wait; /* cluster is stuck in waiting for manual intervention */ static void send_fence_result(int nodeid, int result, uint32_t flags, uint64_t walltime); static void send_fence_clear(int nodeid, int result, uint32_t flags, uint64_t walltime); @@ -847,10 +848,13 @@ static void daemon_fence_work(void) if ((clean_count >= merge_count) && !part_count && (low == our_nodeid)) kick_stateful_merge_members(); + if ((clean_count < merge_count) && !part_count) + stateful_merge_wait = 1; retry = 1; goto out; } + stateful_merge_wait = 0; /* where should this line go? */ /* * startup fencing @@ -2382,7 +2386,8 @@ static int print_state_daemon(char *str) "fence_pid=%d " "fence_in_progress_unknown=%d " "zombie_count=%d " - "monotime=%llu ", + "monotime=%llu " + "stateful_merge_wait=%d ", daemon_member_count, daemon_joined_count, daemon_remove_count, @@ -2392,7 +2397,8 @@ static int print_state_daemon(char *str) daemon_fence_pid, fence_in_progress_unknown, zombie_count, - (unsigned long long)monotime()); + (unsigned long long)monotime(), + stateful_merge_wait); return strlen(str) + 1; } -- 2.6.6
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