cluster: STABLE32 - rgmanager: Transmogrify states to expected values

Ryan McCabe rmccabe at fedoraproject.org
Tue May 1 13:43:43 UTC 2012


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=564207f3f2699a567c01f1b395d7a760989b36a0
Commit:        564207f3f2699a567c01f1b395d7a760989b36a0
Parent:        b18d4c2d5282302cf37e752f17aad8ce168acf81
Author:        Lon Hohberger <lhh at redhat.com>
AuthorDate:    Tue Apr 24 10:23:33 2012 -0400
Committer:     Fabio M. Di Nitto <fdinitto at redhat.com>
CommitterDate: Tue Apr 24 17:04:10 2012 +0200

rgmanager: Transmogrify states to expected values

Because central_processing looks for state == 0 and LOCK_HELD is
2, we need to flip the states to match DLM states.

Signed-off-by: Lon Hohberger <lhh at redhat.com>
---
 rgmanager/src/clulib/cpg_lock.c |   23 +++++++++++++++++++++--
 1 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/rgmanager/src/clulib/cpg_lock.c b/rgmanager/src/clulib/cpg_lock.c
index a747419..7cff2a3 100644
--- a/rgmanager/src/clulib/cpg_lock.c
+++ b/rgmanager/src/clulib/cpg_lock.c
@@ -24,15 +24,34 @@ dlm2cpg(struct dlm_lksb *dlm, struct cpg_lock *cpg)
 {
 	memset(cpg, 0, sizeof(*cpg));
 	cpg->local_id = dlm->sb_lkid;
-	cpg->state = dlm->sb_status;
+	switch(dlm->sb_status) {
+	case 0:
+		cpg->state = LOCK_HELD;
+		break;
+	case EINPROG:
+		cpg->state = LOCK_PENDING;
+		break;
+	default:
+		cpg->state = LOCK_FREE;
+		break;
+	}
 }
 
 static void
 cpg2dlm(struct cpg_lock *cpg, struct dlm_lksb *dlm)
 {
 	memset(dlm, 0, sizeof(*dlm));
-	dlm->sb_status = cpg->state;
 	dlm->sb_lkid = cpg->local_id;
+	switch(cpg->state) {
+	case LOCK_HELD:
+		dlm->sb_status = 0;
+		break;
+	case LOCK_PENDING:
+	default:
+		/* XXX LOCK_FREE -> DLM state? */
+		dlm->sb_status = EINPROG;
+		break;
+	}
 }
 
 


More information about the cluster-commits mailing list