[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