cluster: STABLE3 - resource-agents: Kill correct PIDs during force_unmount
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: c5f279928da14f72fac458bd2439b43ea95e66df
Parent: 5631b25dd1762aea5be57178c4c6515dee3d4240
Author: Shane Bradley <sbradley(a)redhat.com>
AuthorDate: Mon Feb 15 16:16:55 2010 -0500
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Tue Feb 16 12:55:42 2010 -0500
resource-agents: Kill correct PIDs during force_unmount
When stopping a service that contains a filesystem resource that is
managed by fs.sh, on a stop operation it can kill a process that is
not located on that mount point.
There was a couple of scenarios that would kill a process that was
not on that mount point when it was stopped:
These processes should not have been killed:
$ less /tmp/media/demo1/tmp.txt
$ less /tmp/test\ /media/demo1/tmp.txt
These processes was and should have been killed:
$ less /media/demo1/tmp.txt
Resolves: rhbz#555901
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
rgmanager/src/resources/fs.sh.in | 27 ++++++++++++++-------------
1 files changed, 14 insertions(+), 13 deletions(-)
diff --git a/rgmanager/src/resources/fs.sh.in b/rgmanager/src/resources/fs.sh.in
index 1454295..b037796 100644
--- a/rgmanager/src/resources/fs.sh.in
+++ b/rgmanager/src/resources/fs.sh.in
@@ -691,6 +691,7 @@ killMountProcesses()
typeset have_lsof=""
typeset have_fuser=""
typeset try
+ typeset command pid user line
if [ $# -ne 1 ]; then
ocf_log err \
@@ -727,30 +728,30 @@ killMountProcesses()
#
# Use lsof to free up mount point
#
- while read command pid user
+ while read line
do
- if [ -z "$pid" ]; then
+ path=$(echo $line | awk '{for (i=9;i<NF+1;i++) {printf "%s ",$i};}')
+ #if [ -z $(echo $path | grep -E "$mp(/| |$)") ]
+ if [ -z $(echo $path | grep -E "^$mp/.*") ]; then
continue
fi
-
+ command=$(echo $line | awk '{print $1}')
+ pid=$(echo $line | awk '{print $2}')
+ user=$(echo $line | awk '{print $3}')
if [ $try -eq 1 ]; then
- ocf_log warn \
- "killing process $pid ($user $command $mp)"
+ ocf_log warn "killing process $pid ($user $command $mp)"
elif [ $try -eq 3 ]; then
- ocf_log crit \
- "Could not clean up mountpoint $mp"
- ret=$FAIL
+ ocf_log crit "Could not clean up mountpoint $mp"
+ ret=$FAIL
fi
-
if [ $try -gt 1 ]; then
kill -9 $pid
else
kill -TERM $pid
fi
- done < <(lsof -bn 2>/dev/null | \
- grep -E " $mp(/| |$)" | \
- awk '{print $1,$2,$3}' | \
- sort -u -k 1,3)
+ done< <(lsof -bn 2>/dev/null | \
+ grep -E " $mp(/| |$)" | \
+ sort -u -k 1,3)
elif [ -n "$have_fuser" ]; then
#
# Use fuser to free up mount point
14 years, 2 months
cluster: STABLE3 - resource-agents: SAPDatabase: remove $TEMPFILE
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 5631b25dd1762aea5be57178c4c6515dee3d4240
Parent: 689d4267ec0b32f3bdc2db32265e3bd5dc0081f5
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Mon Feb 15 16:14:50 2010 -0500
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Tue Feb 16 12:55:42 2010 -0500
resource-agents: SAPDatabase: remove $TEMPFILE
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
rgmanager/src/resources/SAPDatabase | 52 +++++++++++++++++++++++------------
1 files changed, 34 insertions(+), 18 deletions(-)
diff --git a/rgmanager/src/resources/SAPDatabase b/rgmanager/src/resources/SAPDatabase
index d6972fd..8ac3005 100644
--- a/rgmanager/src/resources/SAPDatabase
+++ b/rgmanager/src/resources/SAPDatabase
@@ -184,6 +184,19 @@ trap_handler() {
}
+do_exit() {
+ # If we've got a tempfile variable and the tempfile exists...
+ # ... if the return code is 0 *or* the temp file is empty
+ # remove it.
+ if [ -n "$TEMPFILE" ] && [ -e "$TEMPFILE" ]; then
+ if [ $1 -eq 0 ] || [ "$(stat -c %s $TEMPFILE)" = "0" ]; then
+ rm -f $TEMPFILE
+ fi
+ fi
+ exit $1
+}
+
+
#
# listener_start: Start the given listener
#
@@ -822,10 +835,6 @@ then
exit $OCF_ERR_ARGS
fi
-# Set a tempfile and make sure to clean it up again
-TEMPFILE="$(mktemp /tmp/SAPDatabase.tmp.XXXXXX)"
-trap trap_handler INT TERM
-
# These operations don't require OCF instance parameters to be set
case "$1" in
meta-data) meta_data
@@ -840,25 +849,32 @@ case "$1" in
*);;
esac
+# Set a tempfile and make sure to clean it up again
+TEMPFILE="$(mktemp /tmp/SAPDatabase.tmp.XXXXXX)"
+trap trap_handler INT TERM
+
+# Everything after here must call do_exit to remove temp file
+
+
US=`id -u -n`
US=`echo $US`
if
[ $US != root ]
then
ocf_log err "$0 must be run as root"
- exit $OCF_ERR_PERM
+ do_exit $OCF_ERR_PERM
fi
# mandatory parameter check
if [ -z "$OCF_RESKEY_SID" ]; then
ocf_log err "Please set OCF_RESKEY_SID to the SAP system id!"
- exit $OCF_ERR_ARGS
+ do_exit $OCF_ERR_ARGS
fi
SID=`echo "$OCF_RESKEY_SID"`
if [ -z "$OCF_RESKEY_DBTYPE" ]; then
ocf_log err "Please set OCF_RESKEY_DBTYPE to the database vendor specific tag (ORA,ADA,DB6)!"
- exit $OCF_ERR_ARGS
+ do_exit $OCF_ERR_ARGS
fi
DBTYPE=`echo "$OCF_RESKEY_DBTYPE" | tr "[a-z]" "[A-Z]"`
@@ -877,7 +893,7 @@ else
;;
0|false|FALSE|no|NO) DBJ2EE_ONLY=0;;
*) ocf_log err "Parsing parameter DBJ2EE_ONLY: '$DBJ2EE_ONLY' is not a boolean value!"
- exit $OCF_ERR_ARGS ;;
+ do_exit $OCF_ERR_ARGS ;;
esac
fi
@@ -897,7 +913,7 @@ else
1|true|TRUE|yes|YES) OCF_RESKEY_STRICT_MONITORING=1;;
0|false|FALSE|no|NO) OCF_RESKEY_STRICT_MONITORING=0;;
*) ocf_log err "Parsing parameter STRICT_MONITORING: '$OCF_RESKEY_STRICT_MONITORING' is not a boolean value!"
- exit $OCF_ERR_ARGS ;;
+ do_exit $OCF_ERR_ARGS ;;
esac
fi
@@ -922,7 +938,7 @@ done
if [ -z "$DIR_EXECUTABLE" ]
then
ocf_log warn "Cannot find $EXESTARTDB,$EXESTOPDB and $EXEDBCONNECT executable, please set DIR_EXECUTABLE parameter!"
- exit $OCF_NOT_RUNNING
+ do_exit $OCF_NOT_RUNNING
fi
if [ $DBJ2EE_ONLY -eq 1 ]
@@ -951,7 +967,7 @@ then
PATH=$JAVA_HOME/bin:$PATH
else
ocf_log err "Cannot find JAVA_HOME directory, please set JAVA_HOME parameter!"
- exit $OCF_NOT_RUNNING
+ do_exit $OCF_NOT_RUNNING
fi
fi
@@ -985,25 +1001,25 @@ sidadm="`echo $SID | tr [:upper:] [:lower:]`adm"
case "$1" in
start) sapdatabase_start
- exit $?;;
+ do_exit $?;;
stop) sapdatabase_stop
- exit $?;;
+ do_exit $?;;
monitor)
sapdatabase_monitor $OCF_RESKEY_STRICT_MONITORING
- exit $?;;
+ do_exit $?;;
status)
sapdatabase_status
- exit $?;;
+ do_exit $?;;
recover) sapdatabase_recover
- exit $?;;
+ do_exit $?;;
validate-all) sapdatabase_validate
- exit $?;;
+ do_exit $?;;
*) sapdatabase_methods
- exit $OCF_ERR_UNIMPLEMENTED;;
+ do_exit $OCF_ERR_UNIMPLEMENTED;;
esac
14 years, 2 months
cluster: STABLE3 - release script rework
by Fabio M. Di Nitto
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 689d4267ec0b32f3bdc2db32265e3bd5dc0081f5
Parent: dc37a1fe8217a5e29d6b0c5377761cb7f745492a
Author: Fabio M. Di Nitto <fdinitto(a)redhat.com>
AuthorDate: Tue Feb 16 12:25:55 2010 +0100
Committer: Fabio M. Di Nitto <fdinitto(a)redhat.com>
CommitterDate: Tue Feb 16 12:25:55 2010 +0100
release script rework
- build .bz2 tarballs
- push changelog to the release area
- create sha256 file to verify checksums
- sign sha256 with gpg
Signed-off-by: Fabio M. Di Nitto <fdinitto(a)redhat.com>
---
make/release.mk | 295 ++++++++++++++++++++++++++++++++++---------------------
1 files changed, 181 insertions(+), 114 deletions(-)
diff --git a/make/release.mk b/make/release.mk
index 0bfb217..5aae153 100644
--- a/make/release.mk
+++ b/make/release.mk
@@ -1,135 +1,202 @@
-# NOTE: this make file snippet is only used by the release manager
+# NOTE: this make file snippet is only used by the release managers
# to build official release tarballs, handle tagging and publish.
#
+# this script is NOT "make -j" safe
+#
# do _NOT_ use for anything else!!!!!!!!!
-## do sanity checks
-
-ifndef VERSION
-
-all:
- @echo WARNING: VERSION= is not defined!
- @exit 1
-
-else ifndef OLDVER
-
-all:
- @echo WARNING: OLDVER= is not defined!
- @exit 1
-
+# setup tons of vars
+
+# signing key
+gpgsignkey=0x6CE95CA7
+
+# project layout
+project=cluster
+projectver=$(project)-$(version)
+projecttar=$(projectver).tar
+projectgz=$(projecttar).gz
+projectbz=$(projecttar).bz2
+
+fenceproject=fence-agents
+fenceprojectver=$(fenceproject)-$(version)
+fenceprojecttar=$(fenceprojectver).tar
+fenceprojectgz=$(fenceprojecttar).gz
+fenceprojectbz=$(fenceprojecttar).bz2
+
+rasproject=resource-agents
+rasprojectver=$(rasproject)-$(version)
+rasprojecttar=$(rasprojectver).tar
+rasprojectgz=$(rasprojecttar).gz
+rasprojectbz=$(rasprojecttar).bz2
+
+rgmproject=rgmanager
+rgmprojectver=$(rgmproject)-$(version)
+rgmprojecttar=$(rgmprojectver).tar
+rgmprojectgz=$(rgmprojecttar).gz
+rgmprojectbz=$(rgmprojecttar).bz2
+
+# temp dirs
+
+ifdef release
+reldir=release
+gitver=$(projectver)
+forceclean=clean
else
+reldir=release-candidate
+gitver=HEAD
+forceclean=
+endif
-## setup stuff
+releasearea=$(shell pwd)/../$(projectver)-$(reldir)
-MASTERPROJECT=cluster
+all: $(forceclean) checks setup tag tarballs changelog sha256 sign
-ifdef RELEASE
-MASTERPV=$(MASTERPROJECT)-$(VERSION)
-TEST=""
-else
-MASTERPV=HEAD
-TEST="test"
+checks:
+ifeq (,$(version))
+ @echo ERROR: need to define version=
+ @exit 1
endif
-MASTERTGZ=$(TEST)$(MASTERPROJECT)-$(VERSION).tar.gz
-
-# fence-agents
-FENCEPROJECT=fence-agents
-FENCEPV=$(FENCEPROJECT)-$(VERSION)
-FENCETGZ=$(TEST)$(FENCEPV).tar.gz
-
-# resource-agents
-RASPROJECT=resource-agents
-RASPV=$(RASPROJECT)-$(VERSION)
-RASTGZ=$(TEST)$(RASPV).tar.gz
+ifeq (,$(oldversion))
+ @echo ERROR: need to define oldversion=
+ @exit 1
+endif
+ @if [ ! -d .git ]; then \
+ echo This script needs to be executed from top level cluster git tree; \
+ exit 1; \
+ fi
-# rgmanager
-RGMPROJECT=rgmanager
-RGMPV=$(RGMPROJECT)-$(VERSION)
-RGMTGZ=$(TEST)$(RGMPV).tar.gz
+setup: checks $(releasearea)
-all: tag tarballs
+$(releasearea):
+ mkdir $@
-ifdef RELEASE
-tag:
- git tag -a -m "$(MASTERPV) release" $(MASTERPV) HEAD
+tag: setup $(releasearea)/tag-$(version)
+$(releasearea)/tag-$(version):
+ifeq (,$(release))
+ @echo Building test release $(version), no tagging
else
-tag:
-
+ git tag -a -m "$(projectver) release" $(projectver) HEAD
endif
-
-tarballs: master-tarball
-tarballs: fence-agents-tarball
-tarballs: resource-agents-tarball
-tarballs: rgmanager-tarball
-
-master-tarball:
+ @touch $@
+
+tarballs: tag
+tarballs: $(releasearea)/$(projecttar)
+tarballs: $(releasearea)/$(projectgz)
+tarballs: $(releasearea)/$(projectbz)
+tarballs: $(releasearea)/$(fenceprojecttar)
+tarballs: $(releasearea)/$(fenceprojectgz)
+tarballs: $(releasearea)/$(fenceprojectbz)
+tarballs: $(releasearea)/$(rasprojecttar)
+tarballs: $(releasearea)/$(rasprojectgz)
+tarballs: $(releasearea)/$(rasprojectbz)
+tarballs: $(releasearea)/$(rgmprojecttar)
+tarballs: $(releasearea)/$(rgmprojectgz)
+tarballs: $(releasearea)/$(rgmprojectbz)
+
+$(releasearea)/$(projecttar):
+ @echo Creating $(project) tarball
+ rm -rf $(releasearea)/$(projectver)
git archive \
--format=tar \
- --prefix=$(MASTERPROJECT)-$(VERSION)/ \
- $(MASTERPV) | \
- tar xp
+ --prefix=$(projectver)/ \
+ $(gitver) | \
+ (cd $(releasearea)/ && tar xf -)
+ cd $(releasearea) && \
sed -i -e \
- 's#<CVS>#$(VERSION)#g' \
- $(MASTERPROJECT)-$(VERSION)/gfs-kernel/src/gfs/gfs.h
- echo "VERSION \"$(VERSION)\"" \
- >> $(MASTERPROJECT)-$(VERSION)/make/official_release_version
- tar cp $(MASTERPROJECT)-$(VERSION) | \
- gzip -9 \
- > ../$(MASTERTGZ)
- rm -rf $(MASTERPROJECT)-$(VERSION)
-
-fence-agents-tarball: master-tarball
- tar zxpf ../$(MASTERTGZ)
- mv $(MASTERPROJECT)-$(VERSION) $(FENCEPV)
- cd $(FENCEPV) && \
- rm -rf bindings cman common config contrib dlm gfs* group \
- rgmanager fence/fenced fence/fence_node \
- fence/fence_tool fence/include fence/libfence \
- fence/libfenced fence/man
- tar cp $(FENCEPV) | \
- gzip -9 \
- > ../$(FENCETGZ)
- rm -rf $(FENCEPV)
-
-resource-agents-tarball: master-tarball
- tar zxpf ../$(MASTERTGZ)
- mv $(MASTERPROJECT)-$(VERSION) $(RASPV)
- cd $(RASPV) && \
- rm -rf bindings cman common config contrib dlm fence gfs* \
- group rgmanager/ChangeLog rgmanager/errors.txt \
- rgmanager/event-script.txt rgmanager/examples \
- rgmanager/include rgmanager/init.d rgmanager/man \
- rgmanager/README rgmanager/src/clulib \
- rgmanager/src/daemons rgmanager/src/utils
- tar cp $(RASPV) | \
- gzip -9 \
- > ../$(RASTGZ)
- rm -rf $(RASPV)
-
-rgmanager-tarball: master-tarball
- tar zxpf ../$(MASTERTGZ)
- mv $(MASTERPROJECT)-$(VERSION) $(RGMPV)
- cd $(RGMPV) && \
- rm -rf bindings cman common config contrib dlm fence gfs* group \
- rgmanager/src/resources
- tar cp $(RGMPV) | \
- gzip -9 \
- > ../$(RGMTGZ)
- rm -rf $(RGMPV)
-
-publish:
- git push --tags origin
- scp ../$(MASTERTGZ) \
- ../$(FENCETGZ) \
- ../$(RASTGZ) \
- ../$(RGMTGZ) \
- fedorahosted.org:$(MASTERPROJECT)
- git log $(MASTERPROJECT)-$(OLDVER)..$(MASTERPV) | \
- git shortlog > ../$(MASTERPV).emaildata
- git diff --stat $(MASTERPROJECT)-$(OLDVER)..$(MASTERPV) \
- >> ../$(MASTERPV).emaildata
+ 's#<CVS>#$(version)#g' \
+ $(projectver)/gfs-kernel/src/gfs/gfs.h && \
+ echo "VERSION \"$(version)\"" \
+ >> $(projectver)/make/official_release_version && \
+ tar cpf $(projecttar) $(projectver) && \
+ rm -rf $(projectver)
+
+$(releasearea)/$(fenceprojecttar): $(releasearea)/$(projecttar)
+ @echo Creating $(fenceproject) tarball
+ cd $(releasearea) && \
+ rm -rf $(projectver) $(fenceprojectver) && \
+ tar xpf $(projecttar) && \
+ mv $(projectver) $(fenceprojectver) && \
+ cd $(fenceprojectver) && \
+ rm -rf bindings cman common config contrib dlm gfs* group \
+ rgmanager fence/fenced fence/fence_node \
+ fence/fence_tool fence/include fence/libfence \
+ fence/libfenced fence/man && \
+ cd .. && \
+ tar cpf $(fenceprojecttar) $(fenceprojectver) && \
+ rm -rf $(fenceprojectver)
+
+$(releasearea)/$(rasprojecttar): $(releasearea)/$(projecttar)
+ @echo Creating $(rasproject) tarball
+ cd $(releasearea) && \
+ rm -rf $(projectver) $(rasprojectver) && \
+ tar xpf $(projecttar) && \
+ mv $(projectver) $(rasprojectver) && \
+ cd $(rasprojectver) && \
+ rm -rf bindings cman common config contrib dlm fence gfs* \
+ group rgmanager/ChangeLog rgmanager/errors.txt \
+ rgmanager/event-script.txt rgmanager/examples \
+ rgmanager/include rgmanager/init.d rgmanager/man \
+ rgmanager/README rgmanager/src/clulib \
+ rgmanager/src/daemons rgmanager/src/utils && \
+ cd .. && \
+ tar cpf $(rasprojecttar) $(rasprojectver) && \
+ rm -rf $(rasprojectver)
+
+$(releasearea)/$(rgmprojecttar): $(releasearea)/$(projecttar)
+ @echo Creating $(rgmproject) tarball
+ cd $(releasearea) && \
+ rm -rf $(projectver) $(rgmprojectver) && \
+ tar xpf $(projecttar) && \
+ mv $(projectver) $(rgmprojectver) && \
+ cd $(rgmprojectver) && \
+ rm -rf bindings cman common config contrib dlm fence gfs* group \
+ rgmanager/src/resources && \
+ cd .. && \
+ tar cpf $(rgmprojecttar) $(rgmprojectver) && \
+ rm -rf $(rgmprojectver)
+
+$(releasearea)/%.gz: $(releasearea)/%
+ @echo Creating $@
+ cat $< | gzip -9 > $@
+
+$(releasearea)/%.bz2: $(releasearea)/%
+ @echo Creating $@
+ cat $< | bzip2 -c > $@
+
+changelog: checks setup $(releasearea)/Changelog-$(version)
+
+$(releasearea)/Changelog-$(version): $(releasearea)/$(projecttar)
+ git log $(project)-$(oldversion)..$(gitver) | \
+ git shortlog > $@
+ git diff --stat $(project)-$(oldversion)..$(gitver) >> $@
+
+sha256: changelog tarballs $(releasearea)/$(projectver).sha256
+
+$(releasearea)/$(projectver).sha256: $(releasearea)/Changelog-$(version)
+ cd $(releasearea) && \
+ sha256sum Changelog-$(version) *.gz *.bz2 | sort -k2 > $@
+
+sign: sha256 $(releasearea)/$(projectver).sha256.asc
+
+$(releasearea)/$(projectver).sha256.asc: $(releasearea)/$(projectver).sha256
+ cd $(releasearea) && \
+ gpg --default-key $(gpgsignkey) \
+ --detach-sign \
+ --armor \
+ $<
+
+publish: sign
+ifeq (,$(release))
+ @echo Nothing to publish
+else
+ @echo git push --tags origin
+ cd $(releasearea) && \
+ scp *.gz *.bz2 Changelog-* *sha256* \
+ fedorahosted.org:$(project)
@echo Hey you!.. yeah you looking somewhere else!
@echo remember to update the wiki and send the email to cluster-devel and linux-cluster
-
endif
+
+clean: checks
+ rm -rf $(releasearea)
14 years, 2 months
cluster: STABLE3 - Always remove leading zeros from key value.
by rohara
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: dc37a1fe8217a5e29d6b0c5377761cb7f745492a
Parent: 79376b5abe20c9e2cc00ca98c8bff3e9b8a58381
Author: Ryan O'Hara <rohara(a)redhat.com>
AuthorDate: Mon Feb 15 11:48:34 2010 -0600
Committer: Ryan O'Hara <rohara(a)redhat.com>
CommitterDate: Mon Feb 15 11:48:34 2010 -0600
Always remove leading zeros from key value.
Signed-off-by: Ryan O'Hara <rohara(a)redhat.com>
---
fence/agents/scsi/fence_scsi.pl | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/fence/agents/scsi/fence_scsi.pl b/fence/agents/scsi/fence_scsi.pl
index 611a98f..59259cf 100644
--- a/fence/agents/scsi/fence_scsi.pl
+++ b/fence/agents/scsi/fence_scsi.pl
@@ -609,6 +609,12 @@ if ($key == 0) {
log_error ("key cannot be zero");
}
+## remove any leading zeros from key
+##
+if ($key =~ /^0/) {
+ $key =~ s/^0+//;
+}
+
## get devices
##
if (defined $opt_d) {
14 years, 2 months
cluster: STABLE3 - Remove open3 calls and replace with simple qx commands. This avoids
by rohara
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 79376b5abe20c9e2cc00ca98c8bff3e9b8a58381
Parent: 81a5044a9ef1c8483f761cde80da7d72466873d1
Author: Ryan O'Hara <rohara(a)redhat.com>
AuthorDate: Mon Feb 15 10:53:16 2010 -0600
Committer: Ryan O'Hara <rohara(a)redhat.com>
CommitterDate: Mon Feb 15 10:53:16 2010 -0600
Remove open3 calls and replace with simple qx commands. This avoids
problem where a command that produced a large amount of output (via
open3) would block when buffer became full. (BZ 564471)
Signed-off-by: Ryan O'Hara <rohara(a)redhat.com>
---
fence/agents/scsi/fence_scsi.pl | 139 ++++++++------------------------------
1 files changed, 30 insertions(+), 109 deletions(-)
diff --git a/fence/agents/scsi/fence_scsi.pl b/fence/agents/scsi/fence_scsi.pl
index 3e37d5b..611a98f 100644
--- a/fence/agents/scsi/fence_scsi.pl
+++ b/fence/agents/scsi/fence_scsi.pl
@@ -2,7 +2,6 @@
use File::Basename;
use Getopt::Std;
-use IPC::Open3;
use POSIX;
#BEGIN_VERSION_GENERATION
@@ -47,6 +46,7 @@ sub do_action_on ($@)
log_error ("device $dev is not a block device") if (! -b $dev);
do_register_ignore ($node_key, $dev);
+
if (!get_reservation_key ($dev)) {
do_reserve ($node_key, $dev);
}
@@ -71,6 +71,7 @@ sub do_action_off ($@)
log_error ("device $dev is not a block device") if (! -b $dev);
my @keys = grep { /$node_key/ } get_registration_keys ($dev);
+
if (scalar (@keys) != 0) {
do_preempt_abort ($host_key, $node_key, $dev);
}
@@ -92,6 +93,7 @@ sub do_action_status ($@)
log_error ("device $dev is not a block device") if (! -b $dev);
my @keys = grep { /$node_key/ } get_registration_keys ($dev);
+
if (scalar (@keys) != 0) {
$dev_count++;
}
@@ -121,20 +123,14 @@ sub do_register ($$$)
log_debug ("$self (host_key=$host_key, node_key=$node_key, dev=$dev)");
my $cmd;
- my $pid;
+ my $out;
$cmd = "sg_persist -n -o -G -K $host_key -S $node_key -d $dev";
$cmd .= " -Z" if (defined $opt_a);
- $pid = open3 (\*IN, \*OUT, \*ERR, $cmd) or die "$!\n";
-
- waitpid ($pid, 0);
+ $out = qx { $cmd };
die "[error]: $self\n" if ($?>>8);
- close (IN);
- close (OUT);
- close (ERR);
-
return;
}
@@ -154,20 +150,14 @@ sub do_register_ignore ($$)
log_debug ("$self (node_key=$node_key, dev=$dev)");
my $cmd;
- my $pid;
+ my $out;
$cmd = "sg_persist -n -o -I -S $node_key -d $dev";
$cmd .= " -Z" if (defined $opt_a);
- $pid = open3 (\*IN, \*OUT, \*ERR, $cmd) or die "$!\n";
-
- waitpid ($pid, 0);
+ $out = qx { $cmd };
die "[error]: $self\n" if ($?>>8);
- close (IN);
- close (OUT);
- close (ERR);
-
return;
}
@@ -179,16 +169,10 @@ sub do_reserve ($$)
log_debug ("$self (host_key=$host_key, dev=$dev)");
my $cmd = "sg_persist -n -o -R -T 5 -K $host_key -d $dev";
- my $pid = open3 (\*IN, \*OUT, \*ERR, $cmd) or die "$!\n";
-
- waitpid ($pid, 0);
+ my $out = qx { $cmd };
die "[error]: $self\n" if ($?>>8);
- close (IN);
- close (OUT);
- close (ERR);
-
return;
}
@@ -200,16 +184,10 @@ sub do_release ($$)
log_debug ("$self (host_key=$host_key, dev=$dev)");
my $cmd = "sg_persist -n -o -L -T 5 -K $host_key -d $dev";
- my $pid = open3 (\*IN, \*OUT, \*ERR, $cmd) or die "$!\n";
-
- waitpid ($pid, 0);
+ my $out = qx { $cmd };
die "[error]: $self\n" if ($?>>8);
- close (IN);
- close (OUT);
- close (ERR);
-
return;
}
@@ -221,16 +199,10 @@ sub do_preempt ($$$)
log_debug ("$self (host_key=$host_key, node_key=$node_key, dev=$dev)");
my $cmd = "sg_persist -n -o -P -T 5 -K $host_key -S $node_key -d $dev";
- my $pid = open3 (\*IN, \*OUT, \*ERR, $cmd) or die "$!\n";
-
- waitpid ($pid, 0);
+ my $out = qx { $cmd };
die "[error]: $self\n" if ($?>>8);
- close (IN);
- close (OUT);
- close (ERR);
-
return;
}
@@ -242,16 +214,10 @@ sub do_preempt_abort ($$$)
log_debug ("$self (host_key=$host_key, node_key=$node_key, dev=$dev)");
my $cmd = "sg_persist -n -o -A -T 5 -K $host_key -S $node_key -d $dev";
- my $pid = open3 (\*IN, \*OUT, \*ERR, $cmd) or die "$!\n";
-
- waitpid ($pid, 0);
+ my $out = qx { $cmd };
die "[error]: $self\n" if ($?>>8);
- close (IN);
- close (OUT);
- close (ERR);
-
return;
}
@@ -281,6 +247,7 @@ sub key_write ($)
sub get_key ($)
{
my $self = (caller(0))[3];
+
my $key = sprintf ("%.4x%.4x", get_cluster_id (), get_node_id ($_[0]));
return ($key);
@@ -292,17 +259,13 @@ sub get_node_id ($)
my $node_id;
my $cmd = "cman_tool nodes -n $_[0] -F id";
- my $pid = open3 (\*IN, \*OUT, \*ERR, $cmd) or die "$!\n";
-
- waitpid ($pid, 0);
+ my $out = qx { $cmd };
die "[error]: $self\n" if ($?>>8);
- chomp ($node_id = <OUT>);
+ chomp ($out);
- close (IN);
- close (OUT);
- close (ERR);
+ $node_id = $out;
return ($node_id);
}
@@ -313,26 +276,18 @@ sub get_cluster_id ()
my $cluster_id;
my $cmd = "cman_tool status";
- my $pid = open3 (\*IN, \*OUT, \*ERR, $cmd) or die "$!\n";
-
- waitpid ($pid, 0);
+ my @out = qx { $cmd };
die "[error]: $self\n" if ($?>>8);
- while (<OUT>) {
+ foreach (@out) {
chomp;
-
my ($param, $value) = split (/\s*:\s*/, $_);
-
if ($param =~ /^cluster\s+id/i) {
$cluster_id = $value;
}
}
- close (IN);
- close (OUT);
- close (ERR);
-
return ($cluster_id);
}
@@ -342,32 +297,24 @@ sub get_devices_clvm ()
my @devices;
my $cmd = "vgs --noheadings " .
- " --separator : " .
- " --sort pv_uuid " .
- " --options vg_attr,pv_name " .
- " --config 'global { locking_type = 0 } " .
- " devices { preferred_names = [ \"^/dev/dm\" ] }'";
+ " --separator : " .
+ " --sort pv_uuid " .
+ " --options vg_attr,pv_name " .
+ " --config 'global { locking_type = 0 } " .
+ " devices { preferred_names = [ \"^/dev/dm\" ] }'";
- my $pid = open3 (\*IN, \*OUT, \*ERR, $cmd) or die "$!\n";
-
- waitpid ($pid, 0);
+ my @out = qx { $cmd 2> /dev/null };
die "[error]: $self\n" if ($?>>8);
- while (<OUT>) {
+ foreach (@out) {
chomp;
-
my ($vg_attr, $pv_name) = split (/:/, $_);
-
if ($vg_attr =~ /c$/) {
push (@devices, $pv_name);
}
}
- close (IN);
- close (OUT);
- close (ERR);
-
return (@devices);
}
@@ -430,7 +377,6 @@ sub get_mpath_slaves ($)
opendir (\*DIR, "/sys/block/$dev/slaves/") or die "$!\n";
@slaves = grep { !/^\./ } readdir (DIR);
-
if ($slaves[0] =~ /^dm/) {
@slaves = get_mpath_slaves ($slaves[0]);
} else {
@@ -449,24 +395,17 @@ sub get_registration_keys ($)
my @keys;
my $cmd = "sg_persist -n -i -k -d $dev";
- my $pid = open3 (\*IN, \*OUT, \*ERR, $cmd) or die "$!\n";
-
- waitpid ($pid, 0);
+ my @out = qx { $cmd };
die "[error]: $self\n" if ($?>>8);
- while (<OUT>) {
+ foreach (@out) {
chomp;
-
if ($_ =~ s/^\s+0x//i) {
push (@keys, $_);
}
}
- close (IN);
- close (OUT);
- close (ERR);
-
return (@keys);
}
@@ -477,26 +416,19 @@ sub get_reservation_key ($)
my $key;
my $cmd = "sg_persist -n -i -r -d $dev";
- my $pid = open3 (\*IN, \*OUT, \*ERR, $cmd) or die "$!\n";
-
- waitpid ($pid, 0);
+ my @out = qx { $cmd };
die "[error]: $self\n" if ($?>>8);
- while (<OUT>) {
+ foreach (@out) {
chomp;
-
if ($_ =~ s/^\s+key=0x//i) {
$key = $_;
last;
}
}
- close (IN);
- close (OUT);
- close (ERR);
-
- return ($key);
+ return ($key)
}
sub get_options_stdin ()
@@ -505,7 +437,6 @@ sub get_options_stdin ()
while (<STDIN>) {
chomp;
-
s/^\s*//;
s/\s*$//;
@@ -575,9 +506,7 @@ sub print_metadata ()
print "<resource-agent name=\"fence_scsi\"" .
" shortdesc=\"fence agent for SCSI-3 persistent reservations\">\n";
print "<longdesc>fence_scsi</longdesc>\n";
-
print "<parameters>\n";
-
print "\t<parameter name=\"aptpl\" unique=\"1\" required=\"0\">\n";
print "\t\t<getopt mixed=\"-a\"/>\n";
print "\t\t<content type=\"boolean\"/>\n";
@@ -585,7 +514,6 @@ sub print_metadata ()
"Use APTPL flag for registrations" .
"</shortdesc>\n";
print "\t</parameter>\n";
-
print "\t<parameter name=\"devices\" unique=\"1\" required=\"0\">\n";
print "\t\t<getopt mixed=\"-d\"/>\n";
print "\t\t<content type=\"string\"/>\n";
@@ -593,7 +521,6 @@ sub print_metadata ()
"List of devices to be used for fencing action" .
"</shortdesc>\n";
print "\t</parameter>\n";
-
print "\t<parameter name=\"logfile\" unique=\"1\" required=\"0\">\n";
print "\t\t<getopt mixed=\"-f\"/>\n";
print "\t\t<content type=\"string\"/>\n";
@@ -601,7 +528,6 @@ sub print_metadata ()
"File to write error/debug messages" .
"</shortdesc>\n";
print "\t</parameter>\n";
-
print "\t<parameter name=\"key\" unique=\"1\" required=\"0\">\n";
print "\t\t<getopt mixed=\"-k\"/>\n";
print "\t\t<content type=\"string\"/>\n";
@@ -609,7 +535,6 @@ sub print_metadata ()
"Key value to be used for fencing action" .
"</shortdesc>\n";
print "\t</parameter>\n";
-
print "\t<parameter name=\"action\" unique=\"1\" required=\"0\">\n";
print "\t\t<getopt mixed=\"-o\"/>\n";
print "\t\t<content type=\"string\" default=\"off\"/>\n";
@@ -617,7 +542,6 @@ sub print_metadata ()
"Fencing action" .
"</shortdesc>\n";
print "\t</parameter>\n";
-
print "\t<parameter name=\"nodename\" unique=\"1\" required=\"0\">\n";
print "\t\t<getopt mixed=\"-n\"/>\n";
print "\t\t<content type=\"string\"/>\n";
@@ -625,16 +549,13 @@ sub print_metadata ()
"Name of node" .
"</shortdesc>\n";
print "\t</parameter>\n";
-
print "</parameters>\n";
-
print "<actions>\n";
print "\t<action name=\"on\"/>\n";
print "\t<action name=\"off\"/>\n";
print "\t<action name=\"status\"/>\n";
print "\t<action name=\"metadata\"/>\n";
print "</actions>\n";
-
print "</resource-agent>\n";
exit (0);
@@ -722,7 +643,7 @@ elsif ($opt_o =~ /^status/i) {
}
else {
log_error ("unknown action '$opt_o'");
-exit (1);
+ exit (1);
}
## close the logfile
14 years, 2 months
cluster: STABLE3 - build: fix out-of-tree build of fence agents
by Fabio M. Di Nitto
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 81a5044a9ef1c8483f761cde80da7d72466873d1
Parent: 055f365d0bb4146ee59997682dcb35e526a92c15
Author: Fabio M. Di Nitto <fdinitto(a)redhat.com>
AuthorDate: Mon Feb 15 06:29:51 2010 +0100
Committer: Fabio M. Di Nitto <fdinitto(a)redhat.com>
CommitterDate: Mon Feb 15 06:29:51 2010 +0100
build: fix out-of-tree build of fence agents
Signed-off-by: Fabio M. Di Nitto <fdinitto(a)redhat.com>
---
make/fencebuild.mk | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/make/fencebuild.mk b/make/fencebuild.mk
index 63ad035..30cd26b 100644
--- a/make/fencebuild.mk
+++ b/make/fencebuild.mk
@@ -35,5 +35,9 @@ $(MANTARGET): $(MANTARGET:.8=) ${SRCDIR}/fence/agents/lib/fence2man.xsl
clean: generalclean
rm -f $(MANTARGET) .$(MANTARGET).tmp
else
-clean: generalclean
+$(MANTARGET): $(S)/$(MANTARGET)
+ cp $< $@
+
+clean: generalclean
+ if [ "$(OBJDIR)" != "$(SRCDIR)" ]; then rm -f $(MANTARGET); fi
endif
14 years, 2 months
cluster: STABLE3 - nss: fix linking
by Fabio M. Di Nitto
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 055f365d0bb4146ee59997682dcb35e526a92c15
Parent: 45e4d971b97376392ba8c4053c7cfb6e99c19f34
Author: Fabio M. Di Nitto <fdinitto(a)redhat.com>
AuthorDate: Mon Feb 15 06:14:44 2010 +0100
Committer: Fabio M. Di Nitto <fdinitto(a)redhat.com>
CommitterDate: Mon Feb 15 06:14:44 2010 +0100
nss: fix linking
New fedora rawhide linking flags spotted this problem that was already
fixed in master.
Signed-off-by: Fabio M. Di Nitto <fdinitto(a)redhat.com>
---
fence/agents/nss_wrapper/Makefile | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/fence/agents/nss_wrapper/Makefile b/fence/agents/nss_wrapper/Makefile
index b3a53ae..bf30a22 100644
--- a/fence/agents/nss_wrapper/Makefile
+++ b/fence/agents/nss_wrapper/Makefile
@@ -15,7 +15,7 @@ OBJS= $(TARGET).o
CFLAGS += -I${nsprincdir} -I${nssincdir}
CFLAGS += -I${incdir}
-LDFLAGS += -L${nsslibdir} -lnss3 -lssl3
+LDFLAGS += -L${nsslibdir} -lnss3 -lssl3 -lnspr4
LDFLAGS += -L${libdir}
${TARGET}: ${OBJS}
14 years, 2 months
cluster: STABLE3 - dlm_controld: fix linking
by Fabio M. Di Nitto
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 45e4d971b97376392ba8c4053c7cfb6e99c19f34
Parent: 7626676fb1242c082ab2928095388e6237afaf16
Author: Fabio M. Di Nitto <fdinitto(a)redhat.com>
AuthorDate: Mon Feb 15 06:10:53 2010 +0100
Committer: Fabio M. Di Nitto <fdinitto(a)redhat.com>
CommitterDate: Mon Feb 15 06:10:53 2010 +0100
dlm_controld: fix linking
New fedora rawhide linking flags spotted this problem that was already
fixed in master.
Signed-off-by: Fabio M. Di Nitto <fdinitto(a)redhat.com>
---
group/dlm_controld/Makefile | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/group/dlm_controld/Makefile b/group/dlm_controld/Makefile
index f9a2d05..b165dbc 100644
--- a/group/dlm_controld/Makefile
+++ b/group/dlm_controld/Makefile
@@ -44,6 +44,7 @@ PCMK_CFLAGS += -I${incdir}/heartbeat -I${incdir}/pacemaker
PCMK_CFLAGS += `pkg-config glib-2.0 --cflags`
PCMK_CFLAGS += `xml2-config --cflags`
+LDFLAGS += -lpthread
LDFLAGS += -L${dlmlibdir} -ldlm
LDFLAGS += -L${logtlibdir} -llogthread
LDFLAGS += -L${openaislibdir} -lSaCkpt
14 years, 2 months
cluster: STABLE3 - qdisk: Fix logt_print which used to be perror()
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 7626676fb1242c082ab2928095388e6237afaf16
Parent: 1e0a66900d7444444c73ebcc1fdabe42ff5e138e
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Fri Feb 12 14:44:14 2010 -0500
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Fri Feb 12 14:44:14 2010 -0500
qdisk: Fix logt_print which used to be perror()
Some log messages were previously 'perror' - which
prints the string value of errno along with the
given string parameter.
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
cman/qdisk/disk.c | 4 ++--
cman/qdisk/proc.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/cman/qdisk/disk.c b/cman/qdisk/disk.c
index a26707d..1f646ce 100644
--- a/cman/qdisk/disk.c
+++ b/cman/qdisk/disk.c
@@ -737,13 +737,13 @@ qdisk_init(char *partname, char *label)
ret = qdisk_validate(partname);
if (ret < 0) {
- logt_print(LOG_DEBUG, "qdisk_verify");
+ logt_print(LOG_DEBUG, "qdisk_validate: %s\n", strerror(errno));
return -1;
}
ret = qdisk_open(partname, &disk);
if (ret < 0) {
- logt_print(LOG_ERR, "qdisk_open");
+ logt_print(LOG_ERR, "qdisk_open: %s\n", strerror(errno));
return -1;
}
diff --git a/cman/qdisk/proc.c b/cman/qdisk/proc.c
index 1b7471e..688a4d1 100644
--- a/cman/qdisk/proc.c
+++ b/cman/qdisk/proc.c
@@ -36,13 +36,13 @@ check_device(char *device, char *label, quorum_header_t *qh,
ret = qdisk_validate(device);
if (ret < 0) {
- logt_print(LOG_DEBUG, "qdisk_verify");
+ logt_print(LOG_DEBUG, "qdisk_validate: %s\n", strerror(errno));
return -1;
}
ret = qdisk_open(device, &disk);
if (ret < 0) {
- logt_print(LOG_ERR, "qdisk_open");
+ logt_print(LOG_ERR, "qdisk_open: %s\n", strerror(errno));
return -1;
}
14 years, 2 months
cluster: STABLE3 - qdisk: mkqdisk argument positioning
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 1e0a66900d7444444c73ebcc1fdabe42ff5e138e
Parent: bc271e80a8221d264d269a74ccf6e46c4b6cce4d
Author: Tatsuo Kawasaki <kawasaki(a)redhat.com>
AuthorDate: Fri Feb 12 14:42:52 2010 -0500
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Fri Feb 12 14:42:52 2010 -0500
qdisk: mkqdisk argument positioning
mkqdisk debug option (-d) doesn't work after -L option.
This works:
mkqdisk -d -L
This should also work:
mkqdisk -L -d
This patch fixes the behavior.
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
cman/qdisk/mkqdisk.c | 18 ++++++++++++++----
1 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/cman/qdisk/mkqdisk.c b/cman/qdisk/mkqdisk.c
index 338bd5c..6d64ee5 100644
--- a/cman/qdisk/mkqdisk.c
+++ b/cman/qdisk/mkqdisk.c
@@ -19,7 +19,7 @@ main(int argc, char **argv)
{
char device[128];
char *newdev = NULL, *newlabel = NULL;
- int rv, verbose_level = 1;
+ int rv, flg = 0, verbose_level = 1;
printf(PROGRAM_NAME " v" RELEASE_VERSION "\n\n");
@@ -49,10 +49,12 @@ main(int argc, char **argv)
break;
case 'L':
/* List */
- return find_partitions(NULL, NULL, 0, verbose_level);
+ flg = rv;
+ break;
case 'f':
- return find_partitions( optarg, device,
- sizeof(device), verbose_level);
+ flg = rv;
+ newlabel = optarg;
+ break;
case 'c':
newdev = optarg;
break;
@@ -68,6 +70,14 @@ main(int argc, char **argv)
}
}
+ /* list */
+ if (flg == 'L') {
+ return find_partitions(NULL, NULL, 0, verbose_level);
+ } else if (flg == 'f') {
+ return find_partitions( newlabel, device,
+ sizeof(device), verbose_level);
+ }
+
if (!newdev && !newlabel) {
printf("usage: mkqdisk -L | -f <label> | -c "
"<device> -l <label>\n");
14 years, 2 months