[Cluster-devel] [PATCH] fence_scsi: remove unlink of fence_scsi.dev file

Fabio M. Di Nitto fdinitto at redhat.com
Wed Sep 28 05:31:48 UTC 2011


Oh cool! that was a nice and quick fix for the BZ.

ACK for upstream/master/RHEl, but please hold the cherry pick to RHEL
till next tuesday.

Thanks
Fabio

On 09/28/2011 12:21 AM, Ryan O'Hara wrote:
> This patch removes the call to unlink the fence_scsi.dev file during
> unfencing (action=on). Instead of unlinking the file, check to see if
> the current device is already in the fence_scsi.dev file before writing
> it to the file. Note that since this file exists in /var/run/cluster
> directory, it should be removed on reboot.
> 
> Resolves: rhbz#741339
> 
> Signed-off-by: Ryan O'Hara <rohara at redhat.com>
> ---
>  fence/agents/scsi/fence_scsi.pl |   14 +++++++++++---
>  1 files changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/fence/agents/scsi/fence_scsi.pl b/fence/agents/scsi/fence_scsi.pl
> index 93f5056..87a599c 100644
> --- a/fence/agents/scsi/fence_scsi.pl
> +++ b/fence/agents/scsi/fence_scsi.pl
> @@ -41,7 +41,6 @@ sub do_action_on ($@)
>      my $self = (caller(0))[3];
>      my ($node_key, @devices) = @_;
>  
> -    dev_unlink ();
>      key_write ($node_key);
>  
>      foreach $dev (@devices) {
> @@ -369,8 +368,17 @@ sub dev_write ($)
>  	mkpath ("/var/run/cluster");
>      }
>  
> -    open (\*FILE, ">>$file") or die "$!\n";
> -    print FILE "$dev\n";
> +    open (\*FILE, "+>>$file") or die "$!\n";
> +
> +    ## since the file is opened for read, write and append,
> +    ## we need to seek to the beginning of the file before grep.
> +
> +    seek (FILE, 0, 0);
> +
> +    if (! grep { /^$dev$/ } <FILE>) {
> +	print FILE "$dev\n";
> +    }
> +
>      close (FILE);
>  
>      return;




More information about the Cluster-devel mailing list