libdlm: fix dlm_controld skipping lock spaces
PATCH 1/1 libdlm: fix dlm_controld skipping lock spaces
With several lock spaces, there was a chance that poll_fencing, poll_quorum, or poll_fs were reset after the earlier lock spaces had been iterated over by process_lockspace_changes(). This would cause the earlier lock spaces to not be recovered, since process_lockspace_changes() would not be called again from the main loop.
This fixes bugzilla.novell.com #528425.
Acked-by teigland at redhat.com
group/dlm_controld/cpg.c +6 -6
@@ -653,26 +653,23 @@ static int wait_conditions_done(struct ljust the latest change */ if (!check_fencing_done (ls)) { - poll_fencing =1 ; + poll_fencing++;return 0 ; } - poll_fencing =0 ;/* even though fencing also waits for quorum, checking fencing isn't sufficient because we don't want to start new lockspaces in an inquorate cluster */ if (!check_quorum_done (ls)) { - poll_quorum =1 ; + poll_quorum++;return 0 ; } - poll_quorum =0 ;if (!check_fs_done (ls)) { - poll_fs =1 ; + poll_fs++;return 0 ; } - poll_fs =0 ;return 1 ; }
@@ -1168,6 +1165,9 @@ void process_lockspace_changes(void) {struct lockspace *ls, *safe; + poll_fencing =0 ; + poll_quorum =0 ; + poll_fs =0 ;list_for_each_entry_safe (ls, safe, &lockspaces, list) {if (!list_empty (&ls->changes))apply_changes (ls);
Signature · 3 lines
Architect Storage/HA, OPS Engineering, Novell, Inc. SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG N?rnberg) "Experience is the name everyone gives to their mistakes." -- Oscar Wilde