From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ryan O'Hara Date: Tue, 1 Mar 2011 09:55:21 -0600 Subject: [Cluster-devel] [PATCH 2/2] fence_scsi: write devices to tmp file on unfence Message-ID: <1298994921-32503-1-git-send-email-rohara@redhat.com> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit When unfencing occurs (action=on), write list of devices that were successfully registered to /var/run/cluster/fence_scsi.dev file. This file will be used by the optional watchdog script. Note that the devices are not added to the tmp file until the verification step. Signed-off-by: Ryan O'Hara --- fence/agents/scsi/fence_scsi.pl | 38 +++++++++++++++++++++++++++++++++++--- 1 files changed, 35 insertions(+), 3 deletions(-) diff --git a/fence/agents/scsi/fence_scsi.pl b/fence/agents/scsi/fence_scsi.pl index e162dfe..56653fc 100644 --- a/fence/agents/scsi/fence_scsi.pl +++ b/fence/agents/scsi/fence_scsi.pl @@ -40,6 +40,7 @@ sub do_action_on ($@) my $self = (caller(0))[3]; my ($node_key, @devices) = @_; + dev_unlink (); key_write ($node_key); foreach $dev (@devices) { @@ -126,6 +127,9 @@ sub do_verify_on ($@) next; } + ## write dev to device file once registration is verified + dev_write ($dev); + ## check that a reservation exists if (!get_reservation_key ($dev)) { log_debug ("no reservation exists on device $dev"); @@ -337,12 +341,38 @@ sub do_reset (S) return; } +sub dev_unlink () +{ + my $self = (caller(0))[3]; + my $file = "/var/run/cluster/fence_scsi.dev"; + + if (-e $file) { + unlink ($file) or die "$!\n"; + } + + return; +} + +sub dev_write ($) +{ + my $self = (caller(0))[3]; + my $file = "/var/run/cluster/fence_scsi.dev"; + my $dev = shift; + + open (\*FILE, ">>$file") or die "$!\n"; + print FILE "$dev\n"; + close (FILE); + + return; +} + sub key_read () { my $self = (caller(0))[3]; + my $file = "/var/run/cluster/fence_scsi.key"; my $key; - open (\*FILE, "); close (FILE); @@ -352,9 +382,11 @@ sub key_read () sub key_write ($) { my $self = (caller(0))[3]; + my $file = "/var/run/cluster/fence_scsi.key"; + my $key = shift; - open (\*FILE, ">/var/run/cluster/fence_scsi.key") or die "$!\n"; - print FILE "$_[0]\n"; + open (\*FILE, ">$file") or die "$!\n"; + print FILE "$key\n"; close (FILE); return; -- 1.7.3.4