From: rohara@sourceware.org <rohara@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] cluster/fence/agents/scsi scsi_reserve
Date: 14 Dec 2006 18:32:43 -0000 [thread overview]
Message-ID: <20061214183243.29709.qmail@sourceware.org> (raw)
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL5
Changes by: rohara at sourceware.org 2006-12-14 18:32:43
Modified files:
fence/agents/scsi: scsi_reserve
Log message:
Allow 'stop' to release the reservation if and only if there are no other
keys registered with a given device. Prior to this fix, if was not possible
for 'scsi_reserve stop' to unregister/release on the node that was holding
the reservation.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/scsi/scsi_reserve.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.2.6&r2=1.1.2.7
--- cluster/fence/agents/scsi/scsi_reserve 2006/12/12 23:20:47 1.1.2.6
+++ cluster/fence/agents/scsi/scsi_reserve 2006/12/14 18:32:43 1.1.2.7
@@ -8,22 +8,22 @@
# check for sg_persist command provided by sg3_utils package
#
if ! sg_persist -V &> /dev/null ; then
- echo "error: sg_persist not found"
- exit 2
+ echo "error: sg_persist not found"
+ exit 2
fi
# check for gethostip command provided by syslinux package
#
if ! gethostip -h &> /dev/null ; then
- echo "error: gethostip not found"
- exit 3
+ echo "error: gethostip not found"
+ exit 3
fi
# get scsi devices that are part of clustered volumes
#
scsi_devices=$( lvs -o vg_attr,devices --noheadings \
- | awk --posix ' $1 ~ /[-a-z]{5}c/ { print $2 } ' \
- | sed -e 's/([0-9]*)//' | sort | uniq )
+ | awk --posix ' $1 ~ /[-a-z]{5}c/ { print $2 } ' \
+ | sed -e 's/([0-9]*)//' | sort | uniq )
# if no scsi devices were found we can exit now
#
@@ -97,13 +97,25 @@
do
echo -n "Unregistering device: $dev"
+ # get list of keys registered for this device
+ #
+ reg_keys=$( sg_persist -d $dev -i -k | grep '^[[:space:]]*0x' )
+
# check if this node/key is the node/key holding the reservation
#
if sg_persist -d $dev -i -r 2>/dev/null | grep -qiE "${key#0}" ; then
- error=1
+ if echo "$reg_keys" | grep -qivE "${key#0}" ; then
+ error=1
+ else
+ for error in 1
+ do
+ sg_persist -d $dev -o -G -K $key -S 0 &>/dev/null || break
+ error=0
+ done
+ fi
else
for error in 1
- do
+ do
sg_persist -d $dev -o -G -K $key -S 0 &>/dev/null || break
error=0
done
@@ -137,7 +149,7 @@
done
if [ -z "$devices" ]; then
- echo "No devices registered."
+ echo "No devices resgistered."
else
echo "Found ${#devices[@]} registered device(s):"
next reply other threads:[~2006-12-14 18:32 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-14 18:32 rohara [this message]
-- strict thread matches above, loose matches on Subject: below --
2008-01-24 22:20 [Cluster-devel] cluster/fence/agents/scsi scsi_reserve cfeist
2007-01-26 17:56 rohara
2006-12-14 18:31 rohara
2006-12-12 23:20 rohara
2006-12-12 23:20 rohara
2006-12-12 21:32 rohara
2006-12-12 21:32 rohara
2006-12-08 22:26 rohara
2006-12-08 22:22 rohara
2006-12-08 17:37 rohara
2006-12-01 20:31 rohara
2006-11-29 20:54 rohara
2006-11-29 20:50 rohara
2006-11-29 16:47 rohara
2006-11-27 23:41 rohara
2006-11-27 22:41 rohara
2006-11-27 22:40 rohara
2006-11-27 22:27 rohara
2006-07-12 22:09 rohara
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20061214183243.29709.qmail@sourceware.org \
--to=rohara@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).