From: Lars Marowsky-Bree <lmb@suse.de>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH] libdlm: fix dlm_controld skipping lock spaces
Date: Mon, 10 Aug 2009 21:44:44 +0200 [thread overview]
Message-ID: <20090810194444.GA15541@suse.de> (raw)
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
Index: libdlm/group/dlm_controld/cpg.c
===================================================================
--- libdlm.orig/group/dlm_controld/cpg.c
+++ libdlm/group/dlm_controld/cpg.c
@@ -653,26 +653,23 @@ static int wait_conditions_done(struct l
just 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);
--
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
reply other threads:[~2009-08-10 19:44 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090810194444.GA15541@suse.de \
--to=lmb@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.