[Drbd-dev] [PATCH] scripts: Updated rhcs_fence script

Vlastimil Holer holer at ics.muni.cz
Wed Mar 13 15:02:05 CET 2013


cman_tool option -f is obsolete in current RHEL 6.x.
Syntax for kill action allows only:
  -n <nodename>    The name of the node to kill (can specify multiple times)

Although node is successfully fenced, rhcs_fence ends with failure
due to wrong $exit condition handling. Part of debug log:
  rhcs_fence: 253; DEBUG: fence node2.localdomain dev 0.0 agent fence_ipmilan result: success
  fence_node[28511]: fence node2.localdomain success
  rhcs_fence: 253; DEBUG: fence node2.localdomain success
  rhcs_fence: 267; DEBUG: Attempt to fence node: [node2.localdomain] exited with: [0]
  rhcs_fence: 272; Attempt to fence: [node2.localdomain] failed!
  kernel: d-con drbd0: helper command: /sbin/drbdadm fence-peer drbd0 exit code 1 (0x100)
  kernel: d-con drbd0: fence-peer helper broken, returned 1
---
 scripts/rhcs_fence | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/scripts/rhcs_fence b/scripts/rhcs_fence
index ca53678..1294660 100644
--- a/scripts/rhcs_fence
+++ b/scripts/rhcs_fence
@@ -1,8 +1,8 @@
 #!/usr/bin/perl
 #
 # Author:   Digimer (digimer at alteeve.com)
-# Version:  0.2.4
-# Released: 2012-01-20
+# Version:  0.2.5
+# Released: 2013-03-13
 # License:  GPL v2+
 # 
 # This program ties Linbit's DRBD into Red Hat's RHCS's fence daemon via the 
@@ -266,7 +266,7 @@ sub kill_target
 	if ($conf->{sys}{debug}) { to_log($conf, 0, __LINE__, "DEBUG: Attempt to fence node: [$remote_node] exited with: [$sc_exit]"); }
 
 	# Exit.
-	if (not $exit)
+	if ($exit)
 	{
 		if ($conf->{sys}{debug}) { to_log($conf, 1, __LINE__, "Attempt to fence: [$remote_node] failed!"); }
 	}
@@ -300,7 +300,7 @@ sub eject_target
 		# next.
 		if ($conf->{sys}{debug}) { to_log($conf, 0, __LINE__, "Target node: [$remote_node] is a cluster member, attempting to eject."); }
 		$sc=IO::Handle->new();
-		$shell_call="$conf->{path}{cman_tool} kill -f $remote_node";
+		$shell_call="$conf->{path}{cman_tool} kill -n $remote_node";
 		if ($conf->{sys}{debug}) { to_log($conf, 0, __LINE__, "DEBUG: shell call: [$shell_call]"); }
 		open ($sc, "$shell_call 2>&1 |") or to_log($conf, 1, __LINE__, "Failed to call: [$sc], error was: $!");
 		while(<$sc>)
-- 
1.8.1.4



More information about the drbd-dev mailing list