[PATCH] Fix qdiskd re-registration

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Chrissie,

This (I think) should fix the qdiskd registration issue.

-- Lon
diff --git a/cman/qdisk/main.c b/cman/qdisk/main.c
index a6be5a8..83892a3 100644
--- a/cman/qdisk/main.c
+++ b/cman/qdisk/main.c
@@ -1777,29 +1777,32 @@ main(int argc, char **argv)
 
 	if (!_running)
 		goto out;
-	
-	cman_register_quorum_device(ctx.qc_cman_admin,
-				    (ctx.qc_flags&RF_CMAN_LABEL)? 
-				        ctx.qc_cman_label:
-                                        ctx.qc_device,
-				    ctx.qc_votes);
-	/*
-		XXX this always returns -1 / EBUSY even when it works?!!!
-		
-	if ((rv = cman_register_quorum_device(ctx.qc_cman_admin, ctx.qc_device,
-					      ctx.qc_votes)) < 0) {
+
+	while ((rv = cman_register_quorum_device(ctx.qc_cman_admin,
+						(ctx.qc_flags&RF_CMAN_LABEL)? 
+						ctx.qc_cman_label:
+						ctx.qc_device,
+						ctx.qc_votes)) < 0) {
+
+		if (errno == EBUSY) {
+			cman_poll_quorum_device(ctx.qc_cman_admin, 0);
+			cman_unregister_quorum_device(ctx.qc_cman_admin);
+			continue;
+		}
+
 		logt_print(LOG_CRIT,
 				 "Could not register %s with CMAN; "
 				 "return = %d; error = %s\n",
 				 ctx.qc_device, rv, strerror(errno));
 		goto out;
 	}
-	*/
 
 	io_nanny_start(ctx.qc_tko * ctx.qc_interval);
 
-	if (quorum_loop(&ctx, ni, MAX_NODES_DISK) == 0)
+	if (quorum_loop(&ctx, ni, MAX_NODES_DISK) == 0) {
+		cman_poll_quorum_device(ctx.qc_cman_admin, 0);
 		cman_unregister_quorum_device(ctx.qc_cman_admin);
+	}
 
 	io_nanny_stop();
 
--
Linux-cluster mailing list
Linux-cluster@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/linux-cluster

[Index of Archives]     [Corosync Cluster Engine]     [GFS]     [Linux Virtualization]     [Centos Virtualization]     [Centos]     [Linux RAID]     [Fedora Users]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite Camping]

  Powered by Linux