[Cluster-devel] [PATCH] fence_scsi: remove unlink of fence_scsi.dev file
Ryan O'Hara
rohara at redhat.com
Tue Sep 27 22:21:35 UTC 2011
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;
--
1.7.3.4
More information about the Cluster-devel
mailing list