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

Lars Ellenberg lars.ellenberg at linbit.com
Wed Mar 13 20:54:34 CET 2013


On Wed, Mar 13, 2013 at 03:02:05PM +0100, Vlastimil Holer wrote:
> 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

Nope, see upstream of that script:
https://github.com/digimer/rhcs_fence/commits/master


>  # 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!"); }
>  	}

That part has been fixed by the original Author already,
in a better way. We just did not notice, and did not update the
rhcs_fence as shipped with the DRBD source and package.

But that one:

> @@ -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";

digimer, what do you say?


>  		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


Thanks,

	Lars


More information about the drbd-dev mailing list