summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Chvatal <scarabeus@gentoo.org>2009-11-14 16:34:22 +0000
committerTomas Chvatal <scarabeus@gentoo.org>2009-11-14 16:34:22 +0000
commitc802043c1d5402d1eb72383094348da6f07202d0 (patch)
treea380fda09205f1ac3024c505db99db4323da38d5
parentInitial addition. (diff)
downloadhistorical-c802043c1d5402d1eb72383094348da6f07202d0.tar.gz
historical-c802043c1d5402d1eb72383094348da6f07202d0.tar.bz2
historical-c802043c1d5402d1eb72383094348da6f07202d0.zip
Drop packages planned for removal.
-rw-r--r--sys-cluster/cman/ChangeLog206
-rw-r--r--sys-cluster/cman/Manifest22
-rw-r--r--sys-cluster/cman/cman-2.03.09-r1.ebuild100
-rw-r--r--sys-cluster/cman/cman-2.03.09.ebuild97
-rw-r--r--sys-cluster/cman/files/cman-2.03.09-RH_bug_457107.patch12
-rw-r--r--sys-cluster/cman/files/cman-2.03.09-add_votes_to_transition_message.patch63
-rw-r--r--sys-cluster/cman/files/cman-2.03.09-fix_signatures_of_cman_get_privdata_and_cman_set_privdata.patch49
-rw-r--r--sys-cluster/cman/files/cman-2.03.09-qdisk-fix-block-size-check-RH_bug_470533.patch33
-rw-r--r--sys-cluster/cman/files/cman-2.0x.conf30
-rwxr-xr-xsys-cluster/cman/files/cman-2.0x.rc309
-rwxr-xr-xsys-cluster/cman/files/qdiskd-2.0x.rc23
-rw-r--r--sys-cluster/cman/metadata.xml8
-rw-r--r--sys-cluster/fence/ChangeLog172
-rw-r--r--sys-cluster/fence/Manifest22
-rw-r--r--sys-cluster/fence/fence-2.03.09-r1.ebuild77
-rw-r--r--sys-cluster/fence/fence-2.03.09.ebuild72
-rw-r--r--sys-cluster/fence/files/fence-2.03.09-ipmi_fix_help_typo_RH_BZ_210687.patch27
-rw-r--r--sys-cluster/fence/files/fence-2.03.09-ipmi_fix_parameters_RH_BZ_447964.patch100
-rw-r--r--sys-cluster/fence/files/fence-2.03.09-ipmi_fix_shell.patch25
-rw-r--r--sys-cluster/fence/files/fence-2.03.09-ipmi_lan_timeout_adjusted_and_configurable.patch225
-rw-r--r--sys-cluster/fence/files/fence_xen172
-rw-r--r--sys-cluster/fence/files/fenced.conf5
-rwxr-xr-xsys-cluster/fence/files/fenced.rc55
-rw-r--r--sys-cluster/fence/metadata.xml8
-rw-r--r--sys-cluster/gnbd-kernel/ChangeLog152
-rw-r--r--sys-cluster/gnbd-kernel/Manifest4
-rw-r--r--sys-cluster/gnbd-kernel/gnbd-kernel-2.03.09.ebuild74
-rw-r--r--sys-cluster/gnbd-kernel/metadata.xml8
-rw-r--r--sys-cluster/gnbd/ChangeLog143
-rw-r--r--sys-cluster/gnbd/Manifest20
-rw-r--r--sys-cluster/gnbd/files/gnbd-client-2.0x.conf5
-rwxr-xr-xsys-cluster/gnbd/files/gnbd-client-2.0x.rc100
-rw-r--r--sys-cluster/gnbd/files/gnbd-srv-2.0x.conf5
-rwxr-xr-xsys-cluster/gnbd/files/gnbd-srv-2.0x.rc81
-rw-r--r--sys-cluster/gnbd/files/gnbd.devfs21
-rw-r--r--sys-cluster/gnbd/files/gnbdtab9
-rw-r--r--sys-cluster/gnbd/gnbd-2.03.09.ebuild64
-rw-r--r--sys-cluster/gnbd/metadata.xml8
-rw-r--r--sys-cluster/openais/ChangeLog43
-rw-r--r--sys-cluster/openais/Manifest18
-rw-r--r--sys-cluster/openais/files/Makefile-ARCH.patch11
-rw-r--r--sys-cluster/openais/files/Makefile-LIBDIR.patch19
-rw-r--r--sys-cluster/openais/files/Makefile-install.patch10
-rw-r--r--sys-cluster/openais/files/Makefile.inc-FLAGS.patch24
-rwxr-xr-xsys-cluster/openais/files/ais.initd23
-rw-r--r--sys-cluster/openais/files/openais-0.80.3-Makefile-ARCH.patch11
-rw-r--r--sys-cluster/openais/files/openais-0.80.3-Makefile-LIBDIR.patch19
-rw-r--r--sys-cluster/openais/files/openais-0.80.3-Makefile-VARS.patch99
-rw-r--r--sys-cluster/openais/files/openais-0.80.3-Makefile.inc-FLAGS.patch21
-rw-r--r--sys-cluster/openais/files/openais-0.80.3-Makefile.inc-VARS.patch20
-rw-r--r--sys-cluster/openais/files/openais-0.80.3-r1661.patch6310
-rw-r--r--sys-cluster/openais/files/openais.conf44
-rw-r--r--sys-cluster/openais/metadata.xml23
-rw-r--r--sys-cluster/openais/openais-0.80.3-r1.ebuild74
-rw-r--r--sys-cluster/openais/openais-0.82.ebuild68
55 files changed, 0 insertions, 9443 deletions
diff --git a/sys-cluster/cman/ChangeLog b/sys-cluster/cman/ChangeLog
deleted file mode 100644
index 2cbdf0ce428a..000000000000
--- a/sys-cluster/cman/ChangeLog
+++ /dev/null
@@ -1,206 +0,0 @@
-# ChangeLog for sys-cluster/cman
-# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/cman/ChangeLog,v 1.45 2009/02/10 22:42:54 xmerlin Exp $
-
- 10 Feb 2009; Christian Zoffoli <xmerlin@gentoo.org> cman-2.03.09.ebuild,
- cman-2.03.09-r1.ebuild:
- Stable on x86 and amd64.
-
-*cman-2.03.09-r1 (22 Nov 2008)
-
- 22 Nov 2008; Christian Zoffoli <xmerlin@gentoo.org>
- -files/cman-2.02.39-RH_bug_457107.patch,
- -files/cman-2.02.39-qdisk-fix-block-size-check-RH_bug_470533.patch,
- +files/cman-2.03.09-RH_bug_457107.patch,
- +files/cman-2.03.09-add_votes_to_transition_message.patch,
- +files/cman-2.03.09-fix_signatures_of_cman_get_privdata_and_cman_set_privd
- ata.patch,
- +files/cman-2.03.09-qdisk-fix-block-size-check-RH_bug_470533.patch,
- cman-2.03.09.ebuild, +cman-2.03.09-r1.ebuild:
- Renamed patches, added some fixes in r1.
-
- 22 Nov 2008; Christian Zoffoli <xmerlin@gentoo.org>
- +files/cman-2.02.39-RH_bug_457107.patch,
- -files/cman-2.02.39-bug457107.patch,
- +files/cman-2.02.39-qdisk-fix-block-size-check-RH_bug_470533.patch,
- cman-2.03.09.ebuild:
- Renamed patch, fixed qdisk block size check RH bug #470533.
-
- 21 Nov 2008; Christian Zoffoli <xmerlin@gentoo.org> files/cman-2.0x.rc,
- files/qdiskd-2.0x.rc, +files/cman-2.02.39-bug457107.patch,
- cman-2.03.09.ebuild:
- Fixed homepage, ebuild cleanup, new cman init, fixed path in qdiskd, added
- patch for RH bug #457107.
-
-*cman-2.03.09 (13 Nov 2008)
-
- 13 Nov 2008; Christian Zoffoli <xmerlin@gentoo.org> -files/cman-1.0x.conf,
- -files/cman-1.0x.rc, -files/qdiskd-1.0x.rc,
- -files/cman-1.03.00-compile-hack.patch,
- -files/cman-1.03.00-qdisk-makefile.patch,
- -files/cman-1.04.00-qdisk-makefile.patch, -cman-1.02.00-r1.ebuild,
- -cman-1.03.00.ebuild, -cman-1.04.00.ebuild, -cman-2.02.00.ebuild,
- -cman-2.02.00-r1.ebuild, +cman-2.03.09.ebuild:
- Ebuild cleanup, version bump.
-
-*cman-2.02.00-r1 (23 Mar 2008)
-
- 23 Mar 2008; Christian Zoffoli <xmerlin@gentoo.org>
- +cman-2.02.00-r1.ebuild:
- Updated 2.02.00 to STABLE2 20080323.
-
- 22 Mar 2008; Christian Zoffoli <xmerlin@gentoo.org> files/cman-2.0x.rc:
- Fixed configfs init order.
-
- 17 Mar 2008; Christian Zoffoli <xmerlin@gentoo.org> +files/cman-2.0x.conf,
- +files/cman-2.0x.rc, -files/cman-2.x.conf, -files/cman-2.x.rc,
- cman-2.02.00.ebuild:
- Fixed init, conf name, added 2.6.20 warning.
-
-*cman-2.02.00 (17 Mar 2008)
-
- 17 Mar 2008; Christian Zoffoli <xmerlin@gentoo.org> +files/cman-1.0x.conf,
- +files/cman-1.0x.rc, +files/qdiskd-1.0x.rc, +files/qdiskd-2.0x.rc,
- +files/cman-2.02.00-include.patch, +files/cman-2.x.conf,
- +files/cman-2.x.rc, -files/cman.conf, -files/cman.rc, -files/qdiskd.rc,
- cman-1.02.00-r1.ebuild, cman-1.03.00.ebuild, cman-1.04.00.ebuild,
- +cman-2.02.00.ebuild:
- Version bump. 1.0x.00 is scheduled to be removed soon.
-
- 15 Oct 2007; Markus Rothe <corsair@gentoo.org> cman-1.03.00.ebuild:
- Stable on ppc64
-
- 26 May 2007; Christian Zoffoli <xmerlin@gentoo.org>
- +files/cman-1.04.00-qdisk-makefile.patch, cman-1.04.00.ebuild:
- Fixed bug #179603.
-
- 12 May 2007; Christian Zoffoli <xmerlin@gentoo.org>
- +files/cman-1.03.00-qdisk-makefile.patch, cman-1.03.00.ebuild,
- cman-1.04.00.ebuild:
- Stable on x86.
-
- 26 Apr 2007; Donnie Berkholz <dberkholz@gentoo.org>; metadata.xml:
- Update for cluster herd split to hp-cluster and ha-cluster.
-
- 09 Mar 2007; Christian Zoffoli <xmerlin@gentoo.org> +files/qdiskd.rc,
- cman-1.03.00.ebuild, cman-1.04.00.ebuild:
- Added qdiskd init script.
-
-*cman-1.04.00 (03 Mar 2007)
-
- 03 Mar 2007; Christian Zoffoli <xmerlin@gentoo.org>
- cman-1.02.00-r1.ebuild, cman-1.03.00.ebuild, +cman-1.04.00.ebuild:
- Version bump.
-
- 20 Oct 2006; Christian Zoffoli <xmerlin@gentoo.org>
- cman-1.02.00-r1.ebuild, cman-1.03.00.ebuild:
- Added fence RDEPEND.
-
- 14 Oct 2006; Christian Zoffoli <xmerlin@gentoo.org> -cman-1.01.00.ebuild,
- -cman-1.02.00.ebuild, cman-1.02.00-r1.ebuild, cman-1.03.00.ebuild:
- Ebuild cleanup. Added some compile/install checks.
-
- 16 Sep 2006; Markus Rothe <corsair@gentoo.org> cman-1.02.00-r1.ebuild:
- Stable on ppc64
-
-*cman-1.03.00 (30 Aug 2006)
-
- 30 Aug 2006; Christian Zoffoli <xmerlin@gentoo.org> +cman-1.03.00.ebuild:
- Version bump.
-
- 24 Aug 2006; Christian Zoffoli <xmerlin@gentoo.org>
- cman-1.02.00-r1.ebuild:
- Stable x86.
-
-*cman-1.02.00-r1 (13 Jul 2006)
-
- 13 Jul 2006; Christian Zoffoli <xmerlin@gentoo.org>
- +cman-1.02.00-r1.ebuild:
- 1.02.00 updated to current stable.
-
- 13 Jul 2006; Christian Zoffoli <xmerlin@gentoo.org>
- -cman-1.00.00-r1.ebuild:
- Ebuild cleanup.
-
- 01 May 2006; Markus Rothe <corsair@gentoo.org> cman-1.01.00.ebuild:
- Stable on ppc64
-
-*cman-1.02.00 (30 Apr 2006)
-
- 30 Apr 2006; Christian Zoffoli <xmerlin@gentoo.org> +cman-1.02.00.ebuild:
- Version bump.
-
- 26 Apr 2006; Chris Gianelloni <wolf31o2@gentoo.org> cman-1.01.00.ebuild:
- Marking stable on x86 wrt bug #130529.
-
- 29 Mar 2006; Markus Rothe <corsair@gentoo.org> cman-1.01.00.ebuild:
- Added ~ppc64; bug #127097
-
- 24 Mar 2006; Aron Griffis <agriffis@gentoo.org> cman-1.01.00.ebuild:
- Mark 1.01.00 ~ia64. #127097
-
-*cman-1.01.00 (08 Oct 2005)
-
- 08 Oct 2005; Christian Zoffoli <xmerlin@gentoo.org> cman-1.00.00-r1.ebuild,
- +cman-1.01.00.ebuild:
- New version.
-
- 08 Oct 2005; Christian Zoffoli <xmerlin@gentoo.org> cman-1.00.00-r1.ebuild:
- ebuild cleanup.
-
- 05 Sep 2005; Danny van Dyk <kugelfang@gentoo.org> cman-1.00.00-r1.ebuild:
- Marked ~amd64.
-
- 05 Sep 2005; Christian Zoffoli <xmerlin@gentoo.org> cman-1.00.00-r1.ebuild:
- fixed dep.
-
-*cman-1.00.00-r1 (05 Sep 2005)
-
- 05 Sep 2005; Christian Zoffoli <xmerlin@gentoo.org> +cman-1.00.00-r1.ebuild,
- -cman-1.00.00.ebuild:
- changed headers dep.
-
- 01 Jul 2005; David Holm <dholm@gentoo.org> cman-1.00.00.ebuild:
- Added to ~ppc.
-
- 30 Jun 2005; Christian Zoffoli <xmerlin@gentoo.org> -cman-1.0_pre3.ebuild,
- -cman-1.0_pre31.ebuild:
- 1.00.00 tree in portage. Removed old ebuilds.
-
- 25 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> files/cman.rc,
- cman-1.0_pre31.ebuild:
- ebuild / init script cleaned up
-
- 25 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> files/cman.rc:
- improved init script
-
- 23 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> cman-1.0_pre31.ebuild:
- ebuild cleanup
-
- 22 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> files/cman.rc,
- files/cman.conf:
- improved init/conf
-
- 19 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> +files/cman.conf,
- +files/cman.rc, cman-1.0_pre31.ebuild:
- added gentoo compliant init/conf
-
- 19 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> cman-1.0_pre31.ebuild:
- added gentoo compliant init script
-
-*cman-1.0_pre31 (19 Mar 2005)
-
- 19 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> +cman-1.0_pre31.ebuild:
- cman-1.0_pre31 in portage
-
- 28 Jan 2005; Christian Zoffoli <xmerlin@gentoo.org> cman-1.0_pre3.ebuild:
- dependency tuning
-
-*cman-1.0_pre3 (27 Jan 2005)
-
- 27 Jan 2005; Christian Zoffoli <xmerlin@gentoo.org> cman-1.0_pre3.ebuild:
- better kernel sources detection handling
-
- 27 Jan 2005; Christian Zoffoli <xmerlin@gentoo.org> :
- new in portage
-
diff --git a/sys-cluster/cman/Manifest b/sys-cluster/cman/Manifest
deleted file mode 100644
index 11e565d82e56..000000000000
--- a/sys-cluster/cman/Manifest
+++ /dev/null
@@ -1,22 +0,0 @@
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
-
-AUX cman-2.03.09-RH_bug_457107.patch 718 RMD160 7d20034211ea0a8cb5500876b57aed76a8396768 SHA1 ff0666752ede6706411efdbcf337a13cd87ea098 SHA256 44b825e2a8be1d9363b6906008dea197adf18e86b11dc9e316143fad0e744e35
-AUX cman-2.03.09-add_votes_to_transition_message.patch 2470 RMD160 6d7fba2d9811c777e385ed4a3f83ecf6e0c62b03 SHA1 365739706360a19a34f9d6f6239a45c9196ac3f0 SHA256 38a5eb14b672c96c459be564e0e6245dbd0ae68fcdeec3e0ef18a44786833d76
-AUX cman-2.03.09-fix_signatures_of_cman_get_privdata_and_cman_set_privdata.patch 1767 RMD160 1e6fbdfcd9003adfeac4109799d0ec5a5beab24a SHA1 8e076335ad4add675b61077304054ca73c3440f5 SHA256 dba7ca54e90cd6fb8e3271cefb19e84426ef45bea2abc0a55fe86b1157764db8
-AUX cman-2.03.09-qdisk-fix-block-size-check-RH_bug_470533.patch 1038 RMD160 b09d7039fac01cf884aed3b2e0138d6d2cf7fb18 SHA1 041b5ba169663156ea67ae50400686bb5b3f3db7 SHA256 28e7c331180fc964ec0ec6d7f1cad9e58d9e946e581b8428ac19653cc2cb8dc0
-AUX cman-2.0x.conf 1068 RMD160 94ee01b8380a69f76bc281ffed64060a16c65f23 SHA1 adb51284a2d943697f8dd15eff8415197c84ef49 SHA256 474c5a2f2d4613c52292d42ccd3a1b3baec7e5cab3dc73dc1e1adfb8225db473
-AUX cman-2.0x.rc 7849 RMD160 1fbe269d2deecd63bb18b66232872736cba0db61 SHA1 9ae9c9cd9436650c4b9352fedd7cd4b218aeee25 SHA256 29b8cacd53a8de44081120d4130798357f72301af819db245b058d1e0377c42a
-AUX qdiskd-2.0x.rc 595 RMD160 3f083e4efea60616604a7a81406f719c48c03260 SHA1 da5ee9731f4d0902395eecd1920136e1cf5456c5 SHA256 1ca52a4dc6bd7475d3c7d3511e83629b2fb92b287577bf11fe7f608a21f30e6d
-DIST cluster-2.03.09.tar.gz 1784357 RMD160 9ac5c3fd0fece8ec17bd31d116c43b33612741d0 SHA1 c2cdbc657da2a9efde4b1e6d2657170e1c09b5b8 SHA256 b6d6f35f58b2f8628c369391e0fd01b1803af40029ec1e6ef88865dda38b855f
-EBUILD cman-2.03.09-r1.ebuild 2722 RMD160 3206a85e5aa2a56306fe4036841a29ab931d3927 SHA1 a734fc6e9b8d12e798058da62394ee678cc17117 SHA256 bbf000c9bbc632008155a17c445b16cda3e19ed6ade5551332f889b42f8a6d6b
-EBUILD cman-2.03.09.ebuild 2548 RMD160 34d60941c769637e9e385c5809c18130e71d145a SHA1 9ab4a5ec2aceb2ae12baf35110c4463562a6f16e SHA256 5cf69b930ab4abcc55dd715a0e98a021b2f45ade8b7a74ebda5b250a4d2341d9
-MISC ChangeLog 7056 RMD160 e62382d444c2e12c928c6abc63ac84c5679c5cc7 SHA1 a52bdcb24b95f77a6a687c1e782b866de5b36a75 SHA256 8e39e1dd6c6238213a3d85dc0927a22592684079d14e16f768d12a5e6cc3346c
-MISC metadata.xml 229 RMD160 4dcf17b88c5f4db2e817f473f3e8269b0bff2e6e SHA1 e6315be43241c55bdc0d12a42fa05632c5ff9b79 SHA256 49e13d2d49bef7298e3bb665ebeceeff9b0880fae5ff639cb8405993504f244f
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v2.0.9 (GNU/Linux)
-
-iEYEARECAAYFAkmSEk0ACgkQgMUyd/cdjWspuwCfSHFJ9BGC4gF42IVN6iILxw5+
-rs8AoIK8LolDN8GE4+5xWpPIa/f0nLmt
-=XBZA
------END PGP SIGNATURE-----
diff --git a/sys-cluster/cman/cman-2.03.09-r1.ebuild b/sys-cluster/cman/cman-2.03.09-r1.ebuild
deleted file mode 100644
index 0f1c51161914..000000000000
--- a/sys-cluster/cman/cman-2.03.09-r1.ebuild
+++ /dev/null
@@ -1,100 +0,0 @@
-# Copyright 1999-2009 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/cman/cman-2.03.09-r1.ebuild,v 1.2 2009/02/10 22:42:54 xmerlin Exp $
-
-inherit eutils versionator
-
-CLUSTER_RELEASE="${PV}"
-MY_P="cluster-${CLUSTER_RELEASE}"
-
-MAJ_PV="$(get_major_version)"
-MIN_PV="$(get_version_component_range 2).$(get_version_component_range 3)"
-
-DESCRIPTION="general-purpose symmetric cluster manager"
-HOMEPAGE="http://sources.redhat.com/cluster/wiki/"
-SRC_URI="ftp://sources.redhat.com/pub/cluster/releases/${MY_P}.tar.gz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="amd64 x86"
-IUSE=""
-
-DEPEND=">=sys-kernel/linux-headers-2.6.23
- =sys-cluster/openais-0.80.3*
- =sys-cluster/ccs-${CLUSTER_RELEASE}*
- =sys-cluster/cman-lib-${CLUSTER_RELEASE}*
- !sys-cluster/cman-headers
- !sys-cluster/cman-kernel
- !sys-cluster/dlm-headers
- !sys-cluster/magma
- !sys-cluster/magma-plugins
- "
-
-RDEPEND="${DEPEND}"
-
-PDEPEND="=sys-cluster/dlm-${CLUSTER_RELEASE}*
- =sys-cluster/fence-${CLUSTER_RELEASE}*"
-
-S="${WORKDIR}/${MY_P}/${PN}"
-
-src_unpack() {
- unpack ${A}
- cd "${S}"
-
- epatch "${FILESDIR}"/${P}-RH_bug_457107.patch || die
- epatch "${FILESDIR}"/${P}-qdisk-fix-block-size-check-RH_bug_470533.patch || die
-
- epatch "${FILESDIR}"/${P}-add_votes_to_transition_message.patch || die
- epatch "${FILESDIR}"/${P}-fix_signatures_of_cman_get_privdata_and_cman_set_privdata.patch || die
-
- # fix the manual pages have executable bit
- sed -i -e '
- /\tinstall -d/s/install/& -m 0755/; t
- /\tinstall/s/install/& -m 0644/' \
- man/Makefile || die "failed patching man pages permission"
-
-}
-
-src_compile() {
- (cd "${WORKDIR}"/${MY_P};
- ./configure \
- --cc=$(tc-getCC) \
- --cflags="-Wall" \
- --disable_kernel_check \
- --somajor="$MAJ_PV" \
- --sominor="$MIN_PV" \
- --cmanlibdir=/usr/lib \
- --cmanincdir=/usr/include \
- ) || die "configure problem"
-
- emake clean
- emake -C cman_tool || die "compile problem"
- emake -C daemon || die "compile problem"
- env -u CFLAGS emake -C qdisk || die "compile problem"
- emake -C init.d || die "compile problem"
- emake -C man || die "compile problem"
-}
-
-src_install() {
- emake DESTDIR="${D}" install || die "install problem"
-
- # These were installed by cman-lib.
- rm "${D}"/usr/lib/libcman.so.${PV} \
- "${D}"/usr/lib/libcman.a \
- "${D}"/usr/include/libcman.h \
- "${D}"/usr/lib/libcman.so.2 \
- "${D}"/usr/lib/libcman.so \
- || die "failed to cleanup extra files"
-
- newinitd "${FILESDIR}"/${PN}-2.0x.rc ${PN} || die
- newconfd "${FILESDIR}"/${PN}-2.0x.conf ${PN} || die
- newinitd "${FILESDIR}"/qdiskd-2.0x.rc qdiskd || die
-
- keepdir /etc/cluster || die
-}
-
-pkg_postinst() {
- einfo ""
- einfo "Please add a cluster.conf in /etc/cluster/"
- einfo ""
-}
diff --git a/sys-cluster/cman/cman-2.03.09.ebuild b/sys-cluster/cman/cman-2.03.09.ebuild
deleted file mode 100644
index 5f68a2566849..000000000000
--- a/sys-cluster/cman/cman-2.03.09.ebuild
+++ /dev/null
@@ -1,97 +0,0 @@
-# Copyright 1999-2009 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/cman/cman-2.03.09.ebuild,v 1.5 2009/02/10 22:42:54 xmerlin Exp $
-
-inherit eutils versionator
-
-CLUSTER_RELEASE="${PV}"
-MY_P="cluster-${CLUSTER_RELEASE}"
-
-MAJ_PV="$(get_major_version)"
-MIN_PV="$(get_version_component_range 2).$(get_version_component_range 3)"
-
-DESCRIPTION="general-purpose symmetric cluster manager"
-HOMEPAGE="http://sources.redhat.com/cluster/wiki/"
-SRC_URI="ftp://sources.redhat.com/pub/cluster/releases/${MY_P}.tar.gz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="amd64 x86"
-IUSE=""
-
-DEPEND=">=sys-kernel/linux-headers-2.6.23
- =sys-cluster/openais-0.80.3*
- =sys-cluster/ccs-${CLUSTER_RELEASE}*
- =sys-cluster/cman-lib-${CLUSTER_RELEASE}*
- !sys-cluster/cman-headers
- !sys-cluster/cman-kernel
- !sys-cluster/dlm-headers
- !sys-cluster/magma
- !sys-cluster/magma-plugins
- "
-
-RDEPEND="${DEPEND}"
-
-PDEPEND="=sys-cluster/dlm-${CLUSTER_RELEASE}*
- =sys-cluster/fence-${CLUSTER_RELEASE}*"
-
-S="${WORKDIR}/${MY_P}/${PN}"
-
-src_unpack() {
- unpack ${A}
- cd "${S}"
-
- epatch "${FILESDIR}"/${P}-RH_bug_457107.patch || die
- epatch "${FILESDIR}"/${P}-qdisk-fix-block-size-check-RH_bug_470533.patch || die
-
- # fix the manual pages have executable bit
- sed -i -e '
- /\tinstall -d/s/install/& -m 0755/; t
- /\tinstall/s/install/& -m 0644/' \
- man/Makefile || die "failed patching man pages permission"
-
-}
-
-src_compile() {
- (cd "${WORKDIR}"/${MY_P};
- ./configure \
- --cc=$(tc-getCC) \
- --cflags="-Wall" \
- --disable_kernel_check \
- --somajor="$MAJ_PV" \
- --sominor="$MIN_PV" \
- --cmanlibdir=/usr/lib \
- --cmanincdir=/usr/include \
- ) || die "configure problem"
-
- emake clean
- emake -C cman_tool || die "compile problem"
- emake -C daemon || die "compile problem"
- env -u CFLAGS emake -C qdisk || die "compile problem"
- emake -C init.d || die "compile problem"
- emake -C man || die "compile problem"
-}
-
-src_install() {
- emake DESTDIR="${D}" install || die "install problem"
-
- # These were installed by cman-lib.
- rm "${D}"/usr/lib/libcman.so.${PV} \
- "${D}"/usr/lib/libcman.a \
- "${D}"/usr/include/libcman.h \
- "${D}"/usr/lib/libcman.so.2 \
- "${D}"/usr/lib/libcman.so \
- || die "failed to cleanup extra files"
-
- newinitd "${FILESDIR}"/${PN}-2.0x.rc ${PN} || die
- newconfd "${FILESDIR}"/${PN}-2.0x.conf ${PN} || die
- newinitd "${FILESDIR}"/qdiskd-2.0x.rc qdiskd || die
-
- keepdir /etc/cluster || die
-}
-
-pkg_postinst() {
- einfo ""
- einfo "Please add a cluster.conf in /etc/cluster/"
- einfo ""
-}
diff --git a/sys-cluster/cman/files/cman-2.03.09-RH_bug_457107.patch b/sys-cluster/cman/files/cman-2.03.09-RH_bug_457107.patch
deleted file mode 100644
index 40a4159a16a3..000000000000
--- a/sys-cluster/cman/files/cman-2.03.09-RH_bug_457107.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- cluster-2.03.09/cman/daemon/commands.c.orig 2008-11-18 14:59:52.000000000 +0100
-+++ cluster-2.03.09/cman/daemon/commands.c 2008-11-18 15:00:27.000000000 +0100
-@@ -1729,8 +1729,7 @@
-
- /* Newer nodes 6.1.0 onwards, set the DIRTY flag if they have state. If the new node has been down
- and has state then we mark it disallowed because we cannot merge stateful nodes */
-- if ( (msg->flags & NODE_FLAGS_DIRTY && (node->flags & NODE_FLAGS_BEENDOWN)) ||
-- (msg->flags & NODE_FLAGS_DIRTY && msg->first_trans && !node->us)) {
-+ if ( msg->flags & NODE_FLAGS_DIRTY && (node->flags & NODE_FLAGS_BEENDOWN)) {
- /* Don't duplicate messages */
- if (node->state != NODESTATE_AISONLY) {
- if (cluster_is_quorate) {
diff --git a/sys-cluster/cman/files/cman-2.03.09-add_votes_to_transition_message.patch b/sys-cluster/cman/files/cman-2.03.09-add_votes_to_transition_message.patch
deleted file mode 100644
index 6ea26166d141..000000000000
--- a/sys-cluster/cman/files/cman-2.03.09-add_votes_to_transition_message.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From: Christine Caulfield <ccaulfie@redhat.com>
-Date: Thu, 6 Nov 2008 11:53:14 +0000 (+0000)
-Subject: cman: add votes to transition message
-X-Git-Url: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff_plain;h=2a983d103349d8aa1da2a7332bec334b849b0e3e
-
-cman: add votes to transition message
-
-This uses a previously unused field in this message to help provide
-forward-compatibility with cluster3 systems which need the node votes
-to be provided by the node itself, rather than the global configuration
-system.
-
-Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>
----
-
-diff --git a/cman/daemon/cnxman-private.h b/cman/daemon/cnxman-private.h
-index 0e433a6..27a3c2e 100644
---- a/cman/daemon/cnxman-private.h
-+++ b/cman/daemon/cnxman-private.h
-@@ -59,7 +59,7 @@ struct cl_transmsg {
- unsigned char cmd;
- unsigned char first_trans;
- uint16_t cluster_id;
-- int high_nodeid;
-+ int votes;
- int expected_votes;
-
- unsigned int major_version; /* Not backwards compatible */
-diff --git a/cman/daemon/commands.c b/cman/daemon/commands.c
-index 519a10d..00cdb65 100644
---- a/cman/daemon/commands.c
-+++ b/cman/daemon/commands.c
-@@ -1538,7 +1538,7 @@ void send_transition_msg(int last_memb_count, int first_trans)
- P_MEMB("sending TRANSITION message. cluster_name = %s\n", cluster_name);
- msg->cmd = CLUSTER_MSG_TRANSITION;
- msg->first_trans = first_trans;
-- msg->high_nodeid = get_highest_nodeid();
-+ msg->votes = us->votes;
- msg->expected_votes = us->expected_votes;
- msg->cluster_id = cluster_id;
- msg->major_version = CNXMAN_MAJOR_VERSION;
-@@ -1588,7 +1588,7 @@ static void byteswap_internal_message(char *data, int len)
- case CLUSTER_MSG_TRANSITION:
- transmsg = (struct cl_transmsg *)data;
- transmsg->cluster_id = swab16(transmsg->cluster_id);
-- transmsg->high_nodeid = swab32(transmsg->high_nodeid);
-+ transmsg->votes = swab32(transmsg->votes);
- transmsg->expected_votes = swab32(transmsg->expected_votes);
- transmsg->major_version = swab32(transmsg->major_version);
- transmsg->minor_version = swab32(transmsg->minor_version);
-diff --git a/cman/daemon/cnxman-private.h b/cman/daemon/cnxman-private.h
-index 27a3c2e..345242d 100644
---- a/cman/daemon/cnxman-private.h
-+++ b/cman/daemon/cnxman-private.h
-@@ -5,7 +5,7 @@
-
- /* Protocol Version triplet */
- #define CNXMAN_MAJOR_VERSION 6
--#define CNXMAN_MINOR_VERSION 1
-+#define CNXMAN_MINOR_VERSION 2
- #define CNXMAN_PATCH_VERSION 0
-
- /* How we announce ourself in console events */
diff --git a/sys-cluster/cman/files/cman-2.03.09-fix_signatures_of_cman_get_privdata_and_cman_set_privdata.patch b/sys-cluster/cman/files/cman-2.03.09-fix_signatures_of_cman_get_privdata_and_cman_set_privdata.patch
deleted file mode 100644
index b1fea587ee87..000000000000
--- a/sys-cluster/cman/files/cman-2.03.09-fix_signatures_of_cman_get_privdata_and_cman_set_privdata.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From: Christine Caulfield <ccaulfie@redhat.com>
-Date: Wed, 19 Nov 2008 11:16:30 +0000 (+0000)
-Subject: cman: fix signatures of cman_get_privdata & cman_set_privdata
-X-Git-Url: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff_plain;h=6f11a5cb225a9547a18440e9129410c32aa2be3f
-
-cman: fix signatures of cman_get_privdata & cman_set_privdata
-
-They do NOT take a pointer to a handle.
-
-Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>
----
-
-diff --git a/cman/lib/libcman.c b/cman/lib/libcman.c
-index cee0147..9465412 100644
---- a/cman/lib/libcman.c
-+++ b/cman/lib/libcman.c
-@@ -346,7 +346,7 @@ int cman_finish(cman_handle_t handle)
- return 0;
- }
-
--int cman_setprivdata(cman_handle_t *handle, void *privdata)
-+int cman_setprivdata(cman_handle_t handle, void *privdata)
- {
- struct cman_handle *h = (struct cman_handle *)handle;
- VALIDATE_HANDLE(h);
-@@ -355,7 +355,7 @@ int cman_setprivdata(cman_handle_t *handle, void *privdata)
- return 0;
- }
-
--int cman_getprivdata(cman_handle_t *handle, void **privdata)
-+int cman_getprivdata(cman_handle_t handle, void **privdata)
- {
- struct cman_handle *h = (struct cman_handle *)handle;
- VALIDATE_HANDLE(h);
-diff --git a/cman/lib/libcman.h b/cman/lib/libcman.h
-index 3771176..b4fb4e4 100644
---- a/cman/lib/libcman.h
-+++ b/cman/lib/libcman.h
-@@ -196,8 +196,8 @@ cman_handle_t cman_admin_init(void *privdata);
- int cman_finish(cman_handle_t handle);
-
- /* Update/retrieve the private data */
--int cman_setprivdata(cman_handle_t *h, void *privdata);
--int cman_getprivdata(cman_handle_t *h, void **privdata);
-+int cman_setprivdata(cman_handle_t h, void *privdata);
-+int cman_getprivdata(cman_handle_t h, void **privdata);
-
- /*
- * Notification of membership change events. Note that these are sent after
diff --git a/sys-cluster/cman/files/cman-2.03.09-qdisk-fix-block-size-check-RH_bug_470533.patch b/sys-cluster/cman/files/cman-2.03.09-qdisk-fix-block-size-check-RH_bug_470533.patch
deleted file mode 100644
index 072951bce205..000000000000
--- a/sys-cluster/cman/files/cman-2.03.09-qdisk-fix-block-size-check-RH_bug_470533.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From: Lon Hohberger <lhh@redhat.com>
-Date: Fri, 7 Nov 2008 17:53:51 +0000 (-0500)
-Subject: qdisk: fix block size check
-X-Git-Url: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff_plain;h=c90643c8824ff2f12e2debc05f32f981facfcbd3
-
-qdisk: fix block size check
-
-When using device="" instead of label="", this check was causing
-qdiskd to incorrectly exit.
-
-Resolves: #470533
----
-
-diff --git a/cman/qdisk/main.c b/cman/qdisk/main.c
-index 0e27cb7..e26e1fc 100644
---- a/cman/qdisk/main.c
-+++ b/cman/qdisk/main.c
-@@ -1491,12 +1491,12 @@ main(int argc, char **argv)
- }
-
- if (qh.qh_version == VERSION_MAGIC_V2 &&
-- qh.qh_blksz != rv) {
-+ qh.qh_blksz != qh.qh_kernsz) {
- clulog(LOG_CRIT,
-- "Specified device %s does match kernel's "
-+ "Specified device %s does not match kernel's "
- "reported sector size (%d != %d)\n",
- ctx.qc_device,
-- ctx.qc_disk.d_blksz, rv);
-+ qh.qh_blksz, qh.qh_kernsz);
- check_stop_cman(&ctx);
- goto out;
- }
diff --git a/sys-cluster/cman/files/cman-2.0x.conf b/sys-cluster/cman/files/cman-2.0x.conf
deleted file mode 100644
index 42e4884f4f27..000000000000
--- a/sys-cluster/cman/files/cman-2.0x.conf
+++ /dev/null
@@ -1,30 +0,0 @@
-CCSD_OPTS=
-
-# CMAN_CLUSTER_TIMEOUT -- amount of time to wait for joinging a cluster
-# before giving up. If CMAN_CLUSTER_TIMEOUT is positive, then we will
-# wait CMAN_CLUSTER_TIMEOUT seconds before giving up and failing when
-# a cluster is not joined. If CMAN_CLUSTER_TIMEOUT is zero, then
-# wait indefinately for a cluster join. If CMAN_CLUSTER_TIMEOUT is
-# negative, do not check to see that the cluster has been joined
-CMAN_CLUSTER_TIMEOUT=120
-
-# CMAN_QUORUM_TIMEOUT -- amount of time to wait for a quorate cluster on
-# startup quorum is needed by many other applications, so we may as
-# well wait here. If CMAN_QUORUM_TIMEOUT is less than 1, quorum will
-# be ignored.
-CMAN_QUORUM_TIMEOUT=300
-
-# CMAN_SHUTDOWN_TIMEOUT -- amount of time to wait for cman to become a
-# cluster member before calling cman_tool leave during shutdown.
-# default is 60 seconds
-CMAN_SHUTDOWN_TIMEOUT=60
-
-# CMAN_JOIN_OPTIONS
-#CMAN_JOIN_OPTS="-c ...."
-
-# CMAN_LEAVE_OPTIONS
-#CMAN_LEAVE_OPTS=""
-
-
-# ex: FENCED_OPTS="-w -t 300"
-FENCED_OPTS=""
diff --git a/sys-cluster/cman/files/cman-2.0x.rc b/sys-cluster/cman/files/cman-2.0x.rc
deleted file mode 100755
index 3cda35c4546c..000000000000
--- a/sys-cluster/cman/files/cman-2.0x.rc
+++ /dev/null
@@ -1,309 +0,0 @@
-#!/sbin/runscript
-# Copyright 1999-2005 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/cman/files/cman-2.0x.rc,v 1.3 2008/11/21 22:27:54 xmerlin Exp $
-
-CMAN_TOOL="/usr/sbin/cman_tool"
-FENCE_TOOL="/usr/sbin/fence_tool"
-GFS_CONTROLD="/usr/sbin/gfs_controld"
-DLM_CONTROLD="/usr/sbin/dlm_controld"
-GROUPD="/usr/sbin/groupd"
-FENCED="/usr/sbin/fenced"
-CCSD="/usr/sbin/ccsd"
-
-[ -z "$CCSD_OPTS" ] && CCSD_OPTS=""
-[ -z "$CMAN_CLUSTER_TIMEOUT" ] && CMAN_CLUSTER_TIMEOUT=120
-[ -z "$CMAN_QUORUM_TIMEOUT" ] && CMAN_QUORUM_TIMEOUT=0
-[ -z "$CMAN_SHUTDOWN_TIMEOUT" ] && CMAN_SHUTDOWN_TIMEOUT=60
-[ -z "$FENCED_START_TIMEOUT" ] && FENCED_START_TIMEOUT=300
-[ -z "$FENCED_MEMBER_DELAY" ] && FENCED_MEMBER_DELAY=300
-
-depend() {
- use net
- after xend
- after xendomains
-}
-
-load_modules() {
- local module modules
- modules=$1
-
- for module in ${modules}; do
- ebegin "Loading ${module} kernel module"
- modprobe ${module} > /dev/null
- eend $? "Failed to load ${module} kernel module"
- done
-}
-
-unload_modules() {
- local module modules
- modules=$1
-
- for module in ${modules}; do
- ebegin "Unloading ${module} kernel module"
- modprobe -r ${module} > /dev/null
- eend $? "Failed to unload ${module} kernel module"
- done
-}
-
-check_configfs() {
- awk '{ print $2 }' /etc/mtab | grep "/sys/kernel/config" &> /dev/null\
- && awk '{ print $3 }' /etc/mtab | grep "configfs" &> /dev/null
-
- if [ $? -ne 0 ]; then
- ewarn "Please add the following line to /etc/fstab:"
- ewarn "none configfs /sys/kernel/config defaults 0 0"
- eend 1 "configfs not mounted at /sys/kernel/config"
- fi
-}
-
-mount_configfs()
-{
- local module=$(awk '$2 == "configfs" { print $2 }' /proc/filesystems)
-
- if [ -z "${module}" ]; then
- load_modules "configfs"
- sleep 1s
- fi
-
- # configfs
- awk '{ print $2 }' /etc/mtab | grep "/sys/kernel/config" &> /dev/null \
- && awk '{ print $3 }' /etc/mtab | grep "configfs" &> /dev/null
-
- if [ $? -ne 0 ]
- then
- ebegin "Mounting ConfigFS"
- /bin/mount -t configfs none /sys/kernel/config 2>&1
- eend $?
- fi
- return 0
-}
-
-umount_configfs() {
- local sig retry
- local entry entries
-
- entries="$(awk '$3 == "configfs" { print $2 }' /proc/mounts | sort -r)"
-
- for entry in $entries; do
- ebegin "Unmounting ConfigFS"
- umount $entry &>/dev/null
- eend $?
- done
-
- local module=$(awk '$1 == "configfs" { print $1 }' /proc/modules)
-
- if [ ! -z "${module}" ]; then
- unload_modules "configfs"
- sleep 1s
- fi
-}
-
-umount_gfs_filesystems() {
- local sig retry
- local remaining="$(awk '$3 == "gfs" || $3 == "gfs2" { print $2 }' /proc/mounts | sort -r)"
-
- if [ -n "${remaining}" ]
- then
- sig=
- retry=3
- while [ -n "${remaining}" -a "${retry}" -gt 0 ]
- do
- if [ "${retry}" -lt 3 ]
- then
- ebegin "Unmounting GFS filesystems (retry)"
- umount ${remaining} &>/dev/null
- eend $? "Failed to unmount GFS filesystems this retry"
- else
- ebegin "Unmounting GFS filesystems"
- umount ${remaining} &>/dev/null
- eend $? "Failed to unmount GFS filesystems"
- fi
- remaining="$(awk '$3 == "gfs" || $3 == "gfs2" { if ($2 != "/") print $2 }' /proc/mounts | sort -r)"
- [ -z "${remaining}" ] && break
- /bin/fuser -k -m ${sig} ${remaining} &>/dev/null
- sleep 5
- retry=$((${retry} -1))
- sig=-9
- done
- fi
-}
-
-unload_allmodules() {
- local modules
-
- modules=$(awk '$1 == "lock_gulm" || \
- $1 == "lock_dlm" || $1 == "dlm" || \
- $1 == "lock_harness" || $1 == "gfs2" || \
- $1 == "gfs" { print $1 }' /proc/modules)
-
- #modules=$(awk '$1 == "lock_harness" || \
- # $1 == "gfs" { print $1 }' /proc/modules)
-
- unload_modules "${modules}"
-}
-
-start_ccsd() {
- ebegin "Starting ccsd"
- start-stop-daemon --start --quiet \
- --exec ${CCSD} -- ${CCSD_OPTS}
- eend $?
-}
-
-stop_ccsd() {
- ebegin "Stopping ccsd"
- start-stop-daemon --stop --quiet \
- -s 9 --exec ${CCSD}
- eend $?
-}
-
-start_cman() {
-
- ${CMAN_TOOL} status &> /dev/null
- if [ $? -ne 0 ]
- then
- ebegin "Starting cman"
- ${CMAN_TOOL} -t ${CMAN_CLUSTER_TIMEOUT} \
- -w join ${CMAN_JOIN_OPTS} &> /dev/null
-
- if [ "$?" -ne 0 ]
- then
- eend 1 "Failed to start cman"
- else
- eend 0
-
- # make sure that we are quorate?
- if [ ${CMAN_QUORUM_TIMEOUT} -gt 0 ]
- then
- ebegin "Waiting for quorum (${CMAN_QUORUM_TIMEOUT} secs)"
- ${CMAN_TOOL} -t ${CMAN_QUORUM_TIMEOUT} -q wait
- eend $?
- fi
- fi
- else
- einfo "cman already running"
- fi
-}
-
-stop_cman() {
- ebegin "Stopping cman"
- local stat=0
- ${CMAN_TOOL} status > /dev/null 2>&1
- if [ $? -eq 0 ]; then
- retry=3
- stat=1
- while [ "${stat}" -eq 1 -a "${retry}" -gt 0 ]
- do
- #sleep 2
- #${CMAN_TOOL} -w -t ${CMAN_SHUTDOWN_TIMEOUT} \
- # leave remove ${CMAN_LEAVE_OPTS} > /dev/null
- ${CMAN_TOOL} -w -t 60 \
- leave remove ${CMAN_LEAVE_OPTS} &> /dev/null
-
- stat=$?
- retry=$((${retry} -1))
- done
- fi
-
- eend ${stat}
-}
-
-start_groupd() {
- ebegin "Starting groupd"
- start-stop-daemon --start --exec ${GROUPD} --name groupd
- eend $?
-}
-
-stop_groupd() {
- ebegin "Stopping groupd"
- start-stop-daemon --stop --exec ${GROUPD} --name groupd
- eend $?
-}
-
-start_fenced() {
- ebegin "Starting fenced"
- start-stop-daemon --start --exec ${FENCED} --name fenced
- eend $?
-
- ${CMAN_TOOL} status | grep Flags | grep 2node &> /dev/null
- local errmsg=$?
-
- ebegin "Joining fence domain"
- if [ "${errmsg}" -ne 0 ]
- then
- ${FENCE_TOOL} -w -t $FENCED_START_TIMEOUT join &> /dev/null
- [ $? -eq 0 ] && errmsg=$? || errmsg=1
- else
- ${FENCE_TOOL} -w -m $FENCED_MEMBER_DELAY join &> /dev/null
- [ $? -eq 0 ] && errmsg=$? || errmsg=1
- fi
- eend $errmsg
-}
-
-stop_fenced() {
- # fenced services
- local fence_status="$( ${CMAN_TOOL} services | awk '$1 ~ /fence/ { print $3 }')"
- if [ -n "${fence_status}" ]; then
- if [ -x ${FENCE_TOOL} ]; then
- ebegin "Leaving fence domain"
- ${FENCE_TOOL} leave > /dev/null 2>&1
- eend $?
- fi
- fi
-
- #ebegin "Stopping fenced"
- #start-stop-daemon --stop --exec ${FENCED} --name fenced
- #eend $?
-}
-
-start_gfs_controld() {
- ebegin "Starting gfs_controld"
- start-stop-daemon --start --exec ${GFS_CONTROLD} --name gfs_controld
- eend $?
-}
-
-stop_gfs_controld() {
- ebegin "Stopping gfs_controld"
- start-stop-daemon --stop --exec ${GFS_CONTROLD} --name gfs_controld
- eend $?
-}
-
-start_dlm_controld() {
- ebegin "Starting dlm_controld"
- start-stop-daemon --start --exec ${DLM_CONTROLD} --name dlm_controld
- eend $?
-}
-
-stop_dlm_controld() {
- ebegin "Stopping dlm_controld"
- start-stop-daemon --stop --exec ${DLM_CONTROLD} --name dlm_controld
- eend $?
-}
-
-start() {
- load_modules "dlm lock_dlm"
-
- mount_configfs
- start_ccsd
- start_cman
- start_groupd
- start_fenced
- start_dlm_controld
- start_gfs_controld
-}
-
-stop() {
- # umount GFS filesystems
- umount_gfs_filesystems
-
- stop_fenced
- stop_cman
-
- #stop_gfs_controld
- #stop_dlm_controld
- #stop_groupd
-
- stop_ccsd
- unload_allmodules
- umount_configfs
-}
diff --git a/sys-cluster/cman/files/qdiskd-2.0x.rc b/sys-cluster/cman/files/qdiskd-2.0x.rc
deleted file mode 100755
index add364549d20..000000000000
--- a/sys-cluster/cman/files/qdiskd-2.0x.rc
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/sbin/runscript
-# Copyright 1999-2007 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License, v2 or later
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/cman/files/qdiskd-2.0x.rc,v 1.2 2008/11/21 22:27:54 xmerlin Exp $
-
-depend() {
- use net
- need cman
-}
-
-start() {
- ebegin "Starting the Quorum Disk Daemon"
- start-stop-daemon --start --quiet --exec /usr/sbin/qdiskd -- -Q
- eend $? "Failed to start qdiskd"
-}
-
-stop() {
- ebegin "Stopping the Quorum Disk Daemon"
-
- start-stop-daemon --stop --pidfile /var/run/qdiskd.pid
- eend $? "Failed to stop qdiskd"
-}
-
diff --git a/sys-cluster/cman/metadata.xml b/sys-cluster/cman/metadata.xml
deleted file mode 100644
index b2c73e8f3872..000000000000
--- a/sys-cluster/cman/metadata.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<herd>ha-cluster</herd>
-<maintainer>
- <email>ha-cluster@gentoo.org</email>
-</maintainer>
-</pkgmetadata>
diff --git a/sys-cluster/fence/ChangeLog b/sys-cluster/fence/ChangeLog
deleted file mode 100644
index 71646786679f..000000000000
--- a/sys-cluster/fence/ChangeLog
+++ /dev/null
@@ -1,172 +0,0 @@
-# ChangeLog for sys-cluster/fence
-# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/fence/ChangeLog,v 1.39 2009/02/10 22:41:46 xmerlin Exp $
-
- 10 Feb 2009; Christian Zoffoli <xmerlin@gentoo.org> fence-2.03.09.ebuild,
- fence-2.03.09-r1.ebuild:
- Stable on x86 and amd64.
-
- 06 Dec 2008; Christian Zoffoli <xmerlin@gentoo.org> fence-2.03.09.ebuild,
- fence-2.03.09-r1.ebuild:
- Fixed dependency, bug #249841 thanks to Oleg Gawriloff <barzog@telecom.by>.
-
-*fence-2.03.09-r1 (22 Nov 2008)
-
- 22 Nov 2008; Christian Zoffoli <xmerlin@gentoo.org>
- +files/fence-2.03.09-ipmi_fix_help_typo_RH_BZ_210687.patch,
- +files/fence-2.03.09-ipmi_fix_parameters_RH_BZ_447964.patch,
- +files/fence-2.03.09-ipmi_fix_shell.patch,
- +files/fence-2.03.09-ipmi_lan_timeout_adjusted_and_configurable.patch,
- +fence-2.03.09-r1.ebuild:
- Merged some IPMI fixes.
-
- 21 Nov 2008; Christian Zoffoli <xmerlin@gentoo.org> fence-2.03.09.ebuild:
- Fixed homepage.
-
- 14 Nov 2008; Christian Zoffoli <xmerlin@gentoo.org> fence-2.03.09.ebuild:
- Fixed wrong dep.
-
-*fence-2.03.09 (13 Nov 2008)
-
- 13 Nov 2008; Christian Zoffoli <xmerlin@gentoo.org>
- -fence-1.02.00-r1.ebuild, -fence-1.03.00.ebuild, -fence-1.04.00.ebuild,
- -fence-2.02.00.ebuild, -fence-2.02.00-r1.ebuild, +fence-2.03.09.ebuild:
- Ebuild cleanup, version bump.
-
-*fence-2.02.00-r1 (23 Mar 2008)
-
- 23 Mar 2008; Christian Zoffoli <xmerlin@gentoo.org>
- +fence-2.02.00-r1.ebuild:
- Updated 2.02.00 to STABLE2 20080323.
-
-*fence-2.02.00 (17 Mar 2008)
-
- 17 Mar 2008; Christian Zoffoli <xmerlin@gentoo.org> +fence-2.02.00.ebuild:
- Version bump. 1.0x.00 is scheduled to be removed soon.
-
- 12 May 2007; Christian Zoffoli <xmerlin@gentoo.org> fence-1.03.00.ebuild:
- Stable on x86.
-
- 26 Apr 2007; Donnie Berkholz <dberkholz@gentoo.org>; metadata.xml:
- Update for cluster herd split to hp-cluster and ha-cluster.
-
-*fence-1.04.00 (03 Mar 2007)
-
- 03 Mar 2007; Christian Zoffoli <xmerlin@gentoo.org> +fence-1.04.00.ebuild:
- Version bump.
-
- 14 Oct 2006; Christian Zoffoli <xmerlin@gentoo.org> -fence-1.01.00.ebuild,
- -fence-1.02.00.ebuild, fence-1.02.00-r1.ebuild, fence-1.03.00.ebuild:
- Ebuild cleanup. Added some compile/install checks.
-
-*fence-1.03.00 (30 Aug 2006)
-
- 30 Aug 2006; Christian Zoffoli <xmerlin@gentoo.org> +fence-1.03.00.ebuild:
- Version bump.
-
- 24 Aug 2006; Christian Zoffoli <xmerlin@gentoo.org>
- fence-1.02.00-r1.ebuild:
- Stable x86.
-
- 15 Jul 2006; Christian Zoffoli <xmerlin@gentoo.org> +files/fence_xen,
- fence-1.02.00.ebuild, fence-1.02.00-r1.ebuild:
- Added fence_xen, closed bug #124345, thanks to
- Christopher G. Stach II <cgs@ldsys.net> for pointing it.
-
- 14 Jul 2006; Christian Zoffoli <xmerlin@gentoo.org>
- fence-1.02.00-r1.ebuild:
- Ebuild cleanup.
-
-*fence-1.02.00-r1 (13 Jul 2006)
-
- 13 Jul 2006; Christian Zoffoli <xmerlin@gentoo.org>
- +fence-1.02.00-r1.ebuild:
- 1.02.00 updated to current stable.
-
- 13 Jul 2006; Christian Zoffoli <xmerlin@gentoo.org>
- -fence-1.00.00-r1.ebuild, fence-1.01.00.ebuild, fence-1.02.00.ebuild:
- Ebuild cleanup.
-
- 13 Jul 2006; Christian Zoffoli <xmerlin@gentoo.org>
- fence-1.00.00-r1.ebuild, fence-1.01.00.ebuild, fence-1.02.00.ebuild:
- Fixed bug #139331, added dev-perl/Net-SSLeay dep.
-
-*fence-1.02.00 (30 Apr 2006)
-
- 30 Apr 2006; Christian Zoffoli <xmerlin@gentoo.org> +fence-1.02.00.ebuild:
- Version bump.
-
-*fence-1.01.00 (08 Oct 2005)
-
- 30 Apr 2006; Christian Zoffoli <xmerlin@gentoo.org> fence-1.01.00.ebuild:
- Stable on x86.
-
- 08 Oct 2005; Christian Zoffoli <xmerlin@gentoo.org> fence-1.00.00-r1.ebuild,
- +fence-1.01.00.ebuild:
- new version.
-
- 08 Oct 2005; Christian Zoffoli <xmerlin@gentoo.org> fence-1.00.00-r1.ebuild:
- ebuild cleanup
-
- 07 Oct 2005; Christian Zoffoli <xmerlin@gentoo.org> files/fenced.conf:
- cleaned fenced conf file.
-
- 05 Sep 2005; Danny van Dyk <kugelfang@gentoo.org> fence-1.00.00-r1.ebuild:
- Marked ~amd64.
-
-*fence-1.00.00-r1 (05 Sep 2005)
-
- 05 Sep 2005; Christian Zoffoli <xmerlin@gentoo.org>
- +fence-1.00.00-r1.ebuild, -fence-1.00.00.ebuild:
- changed headers dep.
-
- 01 Jul 2005; David Holm <dholm@gentoo.org> fence-1.00.00.ebuild:
- Added to ~ppc.
-
-*fence-1.00.00 (30 Jun 2005)
-
- 30 Jun 2005; Christian Zoffoli <xmerlin@gentoo.org> +fence-1.00.00.ebuild,
- -fence-1.1.ebuild, -fence-1.25.ebuild:
- 1.00.00 tree in portage. Removed old ebuilds.
-
- 25 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> fence-1.25.ebuild:
- fixed init/conf name
-
- 25 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> files/fenced.rc,
- fence-1.25.ebuild, -fence-1.5.ebuild:
- ebuild cleaned up, some cosmetic improvements on the init script,
- removed old fence-1.5
-
- 25 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> files/fenced.rc:
- improved init script
-
- 23 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> files/fenced.rc:
- added gfs filesystems umount support in init (fs mounted by hand)
-
- 23 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> fence-1.25.ebuild:
- ebuild cleanup
-
- 22 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> +files/fenced.conf,
- files/fenced.rc, fence-1.25.ebuild:
- improved init file, added conf file
-
- 19 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> +files/fenced.rc,
- fence-1.25.ebuild:
- added gentoo compliant init
-
-*fence-1.25 (19 Mar 2005)
-
- 19 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> +fence-1.25.ebuild:
- fence-1.25 in portage
-
-*fence-1.5 (19 Mar 2005)
-
- 19 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> +fence-1.5.ebuild:
- fence-1.5 in portage
-
-*fence-1.1 (27 Jan 2005)
-
- 27 Jan 2005; Christian Zoffoli <xmerlin@gentoo.org> +metadata.xml,
- +fence-1.1.ebuild:
- new in portage
-
diff --git a/sys-cluster/fence/Manifest b/sys-cluster/fence/Manifest
deleted file mode 100644
index d04f809e7649..000000000000
--- a/sys-cluster/fence/Manifest
+++ /dev/null
@@ -1,22 +0,0 @@
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
-
-AUX fence-2.03.09-ipmi_fix_help_typo_RH_BZ_210687.patch 1180 RMD160 0b917496737a14e0c01e38ee2b4c898bc36c5c65 SHA1 f0e85c5cbc1782babf3a65d3da2f81e4f1a40154 SHA256 71c1aa425b88e337d72d956aa0171208aff8a44b7251afc7b726e710692cab8b
-AUX fence-2.03.09-ipmi_fix_parameters_RH_BZ_447964.patch 3218 RMD160 5903e9538b0277d63e70886e3d395622bfc2a72b SHA1 3a336f0daa44e10020abee27c995119f28d3bf55 SHA256 e883d60b16ea8572b53473b5f551912bc74030d7581d2257cf163ec7d686fbe1
-AUX fence-2.03.09-ipmi_fix_shell.patch 931 RMD160 b4aba85d883e167444ad78cab40ec80fd26e771d SHA1 d59546e211076b6c7397ca63f939dba2dcf0c072 SHA256 2226227967ad4060373eda3f64f366170eeb519ca28e140dd8f47dda67427d2e
-AUX fence-2.03.09-ipmi_lan_timeout_adjusted_and_configurable.patch 7170 RMD160 45e3a17bea8b4b7074b952b294d9dbc1e3d4ec58 SHA1 b872706d96c5681d039392d2008d7558cbf39e02 SHA256 bbf6cd11d10bb5a29683adb2acf8e64f3f1ac321a2b2534354e660b04e0bddcf
-AUX fence_xen 3725 RMD160 103b410ecc8a0d33bb9587d5a0843dd79e5cd78d SHA1 a455a1396335d6ed4b692f6a70d0e25ef2bfa2c8 SHA256 53db9d8bedc2bffe16ab6851a0dfc02fb4e1018aee306fffeee66f7f114f9f85
-AUX fenced.conf 234 RMD160 356e7f63ae6e94fcda3160099fddd6bedbcc2656 SHA1 a5f5dbd44b4879b2699894eaeab024a1fdee804a SHA256 4895d842a19adfa1866768e0a3c470c5278a16028f18eaebffdcaaa5f97339aa
-AUX fenced.rc 1589 RMD160 0793868df886d234e4a636e856eaaab26ca78967 SHA1 b6ac2fe0336c03e11df13e232bdc158aa8e354ed SHA256 2a155d3410272e57045a19a877e90d923fa8126303ffb5fdfb93bc55581e7c6f
-DIST cluster-2.03.09.tar.gz 1784357 RMD160 9ac5c3fd0fece8ec17bd31d116c43b33612741d0 SHA1 c2cdbc657da2a9efde4b1e6d2657170e1c09b5b8 SHA256 b6d6f35f58b2f8628c369391e0fd01b1803af40029ec1e6ef88865dda38b855f
-EBUILD fence-2.03.09-r1.ebuild 2052 RMD160 ff27c2fe5276b27b89edc0e8bce5b05e6839e197 SHA1 eab2eb7325aa5775885c9096b5f8f66b983ce955 SHA256 2f62bf484d938e24e814ff678732b985112e5952571b2879bcd91716ffb2a043
-EBUILD fence-2.03.09.ebuild 1729 RMD160 d15857a8e47c3fd0e37d93803afd0d7f0fa1ecd9 SHA1 976acc6079380e6a9e9e3faff4b262d71f92f220 SHA256 5f6ad14a7f1eccf4220968dc161b5e9ba8f3b0243badac073ba5a9125bef7594
-MISC ChangeLog 5654 RMD160 a14b08bb87c8d2aebbe3ffec3f81b772ba39e1d6 SHA1 de2a9a9b69fa85821ba45b8115e391a7befec7dc SHA256 56bfbbf5be13cfca2ee8c40873a9c079df71dce10ef3e931068826fa0160fcd1
-MISC metadata.xml 229 RMD160 4dcf17b88c5f4db2e817f473f3e8269b0bff2e6e SHA1 e6315be43241c55bdc0d12a42fa05632c5ff9b79 SHA256 49e13d2d49bef7298e3bb665ebeceeff9b0880fae5ff639cb8405993504f244f
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v2.0.9 (GNU/Linux)
-
-iEYEARECAAYFAkmSEgoACgkQgMUyd/cdjWuatgCfSxODU02CyRoGOTwkJ+llsc/9
-RukAmwaZ48+DM0U7qbOGItgGeANyGvKG
-=THfq
------END PGP SIGNATURE-----
diff --git a/sys-cluster/fence/fence-2.03.09-r1.ebuild b/sys-cluster/fence/fence-2.03.09-r1.ebuild
deleted file mode 100644
index e232cceba3e7..000000000000
--- a/sys-cluster/fence/fence-2.03.09-r1.ebuild
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright 1999-2009 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/fence/fence-2.03.09-r1.ebuild,v 1.3 2009/02/10 22:41:46 xmerlin Exp $
-
-inherit eutils versionator
-
-CLUSTER_RELEASE="${PV}"
-MY_P="cluster-${CLUSTER_RELEASE}"
-
-MAJ_PV="$(get_major_version)"
-MIN_PV="$(get_version_component_range 2).$(get_version_component_range 3)"
-
-DESCRIPTION="I/O group fencing system"
-HOMEPAGE="http://sources.redhat.com/cluster/wiki/"
-SRC_URI="ftp://sources.redhat.com/pub/cluster/releases/${MY_P}.tar.gz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="amd64 x86"
-IUSE=""
-
-DEPEND="=sys-cluster/ccs-${CLUSTER_RELEASE}*
- =sys-cluster/openais-0.80.3*
- =sys-cluster/dlm-lib-${CLUSTER_RELEASE}*
- =sys-cluster/cman-lib-${CLUSTER_RELEASE}*
- dev-perl/Net-Telnet
- dev-perl/Net-SSLeay
- dev-python/pexpect
- "
-
-RDEPEND="$DEPEND"
-
-S="${WORKDIR}/${MY_P}/${PN}"
-
-src_unpack() {
- unpack ${A}
- cd "${S}"
- chmod u+x "${WORKDIR}"/${MY_P}/scripts/define2var
-
- epatch "${FILESDIR}"/fence-2.03.09-ipmi_fix_help_typo_RH_BZ_210687.patch || die
- epatch "${FILESDIR}"/fence-2.03.09-ipmi_fix_shell.patch || die
- epatch "${FILESDIR}"/fence-2.03.09-ipmi_fix_parameters_RH_BZ_447964.patch || die
- epatch "${FILESDIR}"/fence-2.03.09-ipmi_lan_timeout_adjusted_and_configurable.patch || die
-}
-
-src_compile() {
- (cd "${WORKDIR}"/${MY_P};
- ./configure \
- --cc=$(tc-getCC) \
- --cflags="-Wall" \
- --disable_kernel_check \
- --dlmlibdir=/usr/lib \
- --dlmincdir=/usr/include \
- --cmanlibdir=/usr/lib \
- --cmanincdir=/usr/include \
- ) || die "configure problem"
-
- (cd "${WORKDIR}"/${MY_P}/group;
- emake -j1 clean all \
- ) || die "compile problem"
-
- # fix the manual pages have executable bit
- sed -i -e '
- /\tinstall -d/s/install/& -m 0755/; t
- /\tinstall/s/install/& -m 0644/' \
- man/Makefile
-
- emake -j1 clean all || die "compile problem"
-}
-
-src_install() {
- (cd "${WORKDIR}"/${MY_P}/group;
- emake DESTDIR="${D}" install \
- ) || die "install problem"
-
- emake DESTDIR="${D}" install || die "install problem"
-}
diff --git a/sys-cluster/fence/fence-2.03.09.ebuild b/sys-cluster/fence/fence-2.03.09.ebuild
deleted file mode 100644
index e5f1fab0ccf4..000000000000
--- a/sys-cluster/fence/fence-2.03.09.ebuild
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright 1999-2009 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/fence/fence-2.03.09.ebuild,v 1.5 2009/02/10 22:41:46 xmerlin Exp $
-
-inherit eutils versionator
-
-CLUSTER_RELEASE="${PV}"
-MY_P="cluster-${CLUSTER_RELEASE}"
-
-MAJ_PV="$(get_major_version)"
-MIN_PV="$(get_version_component_range 2).$(get_version_component_range 3)"
-
-DESCRIPTION="I/O group fencing system"
-HOMEPAGE="http://sources.redhat.com/cluster/wiki/"
-SRC_URI="ftp://sources.redhat.com/pub/cluster/releases/${MY_P}.tar.gz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="amd64 x86"
-IUSE=""
-
-DEPEND="=sys-cluster/ccs-${CLUSTER_RELEASE}*
- =sys-cluster/openais-0.80.3*
- =sys-cluster/dlm-lib-${CLUSTER_RELEASE}*
- =sys-cluster/cman-lib-${CLUSTER_RELEASE}*
- dev-perl/Net-Telnet
- dev-perl/Net-SSLeay
- dev-python/pexpect
- "
-
-RDEPEND="$DEPEND"
-
-S="${WORKDIR}/${MY_P}/${PN}"
-
-src_unpack() {
- unpack ${A}
- cd "${S}"
- chmod u+x "${WORKDIR}"/${MY_P}/scripts/define2var
-}
-
-src_compile() {
- (cd "${WORKDIR}"/${MY_P};
- ./configure \
- --cc=$(tc-getCC) \
- --cflags="-Wall" \
- --disable_kernel_check \
- --dlmlibdir=/usr/lib \
- --dlmincdir=/usr/include \
- --cmanlibdir=/usr/lib \
- --cmanincdir=/usr/include \
- ) || die "configure problem"
-
- (cd "${WORKDIR}"/${MY_P}/group;
- emake -j1 clean all \
- ) || die "compile problem"
-
- # fix the manual pages have executable bit
- sed -i -e '
- /\tinstall -d/s/install/& -m 0755/; t
- /\tinstall/s/install/& -m 0644/' \
- man/Makefile
-
- emake -j1 clean all || die "compile problem"
-}
-
-src_install() {
- (cd "${WORKDIR}"/${MY_P}/group;
- emake DESTDIR="${D}" install \
- ) || die "install problem"
-
- emake DESTDIR="${D}" install || die "install problem"
-}
diff --git a/sys-cluster/fence/files/fence-2.03.09-ipmi_fix_help_typo_RH_BZ_210687.patch b/sys-cluster/fence/files/fence-2.03.09-ipmi_fix_help_typo_RH_BZ_210687.patch
deleted file mode 100644
index 75a4464ca4be..000000000000
--- a/sys-cluster/fence/files/fence-2.03.09-ipmi_fix_help_typo_RH_BZ_210687.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From: Jan Friesse <jfriesse@redhat.com>
-Date: Thu, 20 Nov 2008 11:52:21 +0000 (+0100)
-Subject: fence: fix IPMI typo in help
-X-Git-Url: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff_plain;h=47514a9ac69f4b6ef0bcd87a2763de24dff12f5d
-
-fence: fix IPMI typo in help
-
-Help contained description of -i option with comment,
-that this option is deprecated and you should use -i. This
-is nice recursion, but there should be -a.
-
-This fixes BZ #210687
----
-
-diff --git a/fence/agents/ipmilan/ipmilan.c b/fence/agents/ipmilan/ipmilan.c
-index 30d69ee..358274a 100644
---- a/fence/agents/ipmilan/ipmilan.c
-+++ b/fence/agents/ipmilan/ipmilan.c
-@@ -687,7 +687,7 @@ usage_exit(char *pname)
- printf("usage: %s <options>\n", pname);
- printf(" -A <authtype> IPMI Lan Auth type (md5, password, or none)\n");
- printf(" -a <ipaddr> IPMI Lan IP to talk to\n");
--printf(" -i <ipaddr> IPMI Lan IP to talk to (deprecated, use -i)\n");
-+printf(" -i <ipaddr> IPMI Lan IP to talk to (deprecated, use -a)\n");
- printf(" -p <password> Password (if required) to control power on\n"
- " IPMI device\n");
- printf(" -P Use Lanplus\n");
diff --git a/sys-cluster/fence/files/fence-2.03.09-ipmi_fix_parameters_RH_BZ_447964.patch b/sys-cluster/fence/files/fence-2.03.09-ipmi_fix_parameters_RH_BZ_447964.patch
deleted file mode 100644
index c54fb225f11b..000000000000
--- a/sys-cluster/fence/files/fence-2.03.09-ipmi_fix_parameters_RH_BZ_447964.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From: Jan Friesse <jfriesse@redhat.com>
-Date: Thu, 20 Nov 2008 11:51:20 +0000 (+0100)
-Subject: fence: fix IPMI parameters containing special characters
-X-Git-Url: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff_plain;h=6c1a7ce96b7712e85d3cb765ca9dd58061d6a25b
-
-fence: fix IPMI parameters containing special characters
-
-IPMI fence agent works by spawn a /bin/sh and ipmitool.
-If host name/password or any other command line argument
-included special shell characters (like $, ", ', ...) shell
-will try to substitute. This is not allowed behaviour and
-this patch fix it.
-
-Should fix BZ #447964
----
-
-diff --git a/fence/agents/ipmilan/ipmilan.c b/fence/agents/ipmilan/ipmilan.c
-index 117228c..30d69ee 100644
---- a/fence/agents/ipmilan/ipmilan.c
-+++ b/fence/agents/ipmilan/ipmilan.c
-@@ -138,34 +138,73 @@ ipmitool_path(void)
- }
-
-
-+/** Prepare string for use in sh style environment. This function take source
-+ string and prepend/append quote (') to start/end of source string to dest
-+ string. Any occurence of quote in source string is replaced by '\'' sequence.
-+ Dest string must be preallocated.
-+
-+ @param dest Destination string
-+ @param source Source string
-+ @param max_len Maximum length of data written to dest string (including end 0)
-+ @return Pointer to start of destination string.
-+*/
-+char *str_prepare_for_sh(char *dest,char *source,int max_len) {
-+ char *dest_p=dest;
-+ char *max_dest=dest+max_len;
-+
-+ if (dest_p+1>=max_dest) {*dest_p=0;return dest;}
-+ *dest_p++='\'';
-+
-+ while (*source) {
-+ if (*source=='\'') {
-+ if (dest_p+4>=max_dest) {*dest_p=0;return dest;}
-+
-+ memcpy(dest_p,"'\\''",4);dest_p+=4;
-+ } else {
-+ if (dest_p+1>=max_dest) {*dest_p=0;return dest;}
-+
-+ *dest_p++=*source;
-+ }
-+ source++;
-+ }
-+
-+ if (dest_p+2>=max_dest) {*dest_p=0;return dest;}
-+
-+ *dest_p++='\'';*dest_p=0;
-+
-+ return dest;
-+}
-+
- static int
- build_cmd(char *command, size_t cmdlen, struct ipmi *ipmi, int op)
- {
- char cmd[2048];
- char arg[2048];
-+ char tmp[2048];
- int x;
-
- /* Store path */
- if (ipmi->i_lanplus) {
-- snprintf(cmd, sizeof(cmd), "%s -I lanplus -H %s",
-- ipmi->i_ipmitool, ipmi->i_host);
-+ snprintf(cmd, sizeof(cmd), "%s -I lanplus -H %s",
-+ ipmi->i_ipmitool,
-+ str_prepare_for_sh(tmp,ipmi->i_host,sizeof(tmp)));
- } else {
- snprintf(cmd, sizeof(cmd), "%s -I lan -H %s", ipmi->i_ipmitool,
-- ipmi->i_host);
-+ str_prepare_for_sh(tmp,ipmi->i_host,sizeof(tmp)));
- }
-
- if (ipmi->i_user) {
-- snprintf(arg, sizeof(arg), " -U %s", ipmi->i_user);
-+ snprintf(arg, sizeof(arg), " -U %s", str_prepare_for_sh(tmp,ipmi->i_user,sizeof(tmp)));
- strncat(cmd, arg, sizeof(cmd) - strlen(arg));
- }
-
- if (ipmi->i_authtype) {
-- snprintf(arg, sizeof(arg), " -A %s", ipmi->i_authtype);
-+ snprintf(arg, sizeof(arg), " -A %s", str_prepare_for_sh(tmp,ipmi->i_authtype,sizeof(tmp)));
- strncat(cmd, arg, sizeof(cmd) - strlen(arg));
- }
-
- if (ipmi->i_password) {
-- snprintf(arg, sizeof(arg), " -P %s", ipmi->i_password);
-+ snprintf(arg, sizeof(arg), " -P %s", str_prepare_for_sh(tmp,ipmi->i_password,sizeof(tmp)));
- strncat(cmd, arg, sizeof(cmd) - strlen(arg));
- } else {
- snprintf(arg, sizeof(arg), " -P ''");
diff --git a/sys-cluster/fence/files/fence-2.03.09-ipmi_fix_shell.patch b/sys-cluster/fence/files/fence-2.03.09-ipmi_fix_shell.patch
deleted file mode 100644
index 95a527130244..000000000000
--- a/sys-cluster/fence/files/fence-2.03.09-ipmi_fix_shell.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From: Jan Friesse <jfriesse@redhat.com>
-Date: Thu, 20 Nov 2008 13:39:20 +0000 (+0100)
-Subject: fence: fix IPMI spawn /bin/bash rather than /bin/sh
-X-Git-Url: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff_plain;h=d57fba422b8c5822bc751cc190277367e42ad597
-
-fence: fix IPMI spawn /bin/bash rather than /bin/sh
-
-It's not guaranteed, that /bin/sh will be symlink to
-shell, which is bash (or ksh) compliant, so it's better
-to use /bin/bash.
----
-
-diff --git a/fence/agents/ipmilan/expect.c b/fence/agents/ipmilan/expect.c
-index 4156886..fa85bd8 100644
---- a/fence/agents/ipmilan/expect.c
-+++ b/fence/agents/ipmilan/expect.c
-@@ -304,7 +304,7 @@ StartProcess(const char * cmd, int * readfd, int * writefd, int flags)
- sched_setscheduler(0, SCHED_OTHER, &sp);
- }
- #endif
-- execlp("/bin/sh", "sh", "-c", cmd, NULL);
-+ execlp("/bin/bash", "bash", "-c", cmd, NULL);
- perror("cannot exec shell!");
- exit(1);
-
diff --git a/sys-cluster/fence/files/fence-2.03.09-ipmi_lan_timeout_adjusted_and_configurable.patch b/sys-cluster/fence/files/fence-2.03.09-ipmi_lan_timeout_adjusted_and_configurable.patch
deleted file mode 100644
index ddbae2baf77f..000000000000
--- a/sys-cluster/fence/files/fence-2.03.09-ipmi_lan_timeout_adjusted_and_configurable.patch
+++ /dev/null
@@ -1,225 +0,0 @@
-From: Jan Friesse <jfriesse@redhat.com>
-Date: Wed, 19 Nov 2008 16:50:03 +0000 (+0100)
-Subject: fence: IPMI over lan timeout adjusted and configurable
-X-Git-Url: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff_plain;h=59229fddbf3c15c2279e4841c443e7a60a6799a6
-
-fence: IPMI over lan timeout adjusted and configurable
-
-This patch adjust timeout to default value 10s which
-should be enough for most today IPMI implementations.
-It also removes retries, because this job is done
-by fenced.
-
-Because some devices still need longer timeouts,
-timeout is adjustable by parameter -t (or timeout for stdin
-and XML configuration).
-
-This should fix BZ: 401481, 276541 and 452894
----
-
-diff --git a/fence/agents/ipmilan/ipmilan.c b/fence/agents/ipmilan/ipmilan.c
-index 3b4987b..117228c 100644
---- a/fence/agents/ipmilan/ipmilan.c
-+++ b/fence/agents/ipmilan/ipmilan.c
-@@ -26,6 +26,8 @@
- #define ST_POWEROFF 2
- #define ST_GENERIC_RESET 3
-
-+#define DEFAULT_TIMEOUT 10
-+
- #define log(lvl, fmt, args...) fprintf(stderr, fmt, ##args)
- #include <libgen.h>
- #include <copyright.cf>
-@@ -59,6 +61,7 @@ struct ipmi {
- int i_config;
- int i_verbose;
- int i_lanplus;
-+ int i_timeout;
- };
-
-
-@@ -276,42 +279,25 @@ static int
- ipmi_op(struct ipmi *ipmi, int op, struct Etoken *toklist)
- {
- char cmd[2048];
-- int retries = 5;
- int ret;
-
- build_cmd(cmd, sizeof(cmd), ipmi, op);
-
- if (ipmi_spawn(ipmi, cmd) != 0)
- return -1;
-- ret = ipmi_expect(ipmi, toklist, 120);
-+ ret = ipmi_expect(ipmi, toklist, ipmi->i_timeout);
- ipmi_reap(ipmi);
-
-- while ((ret == EAGAIN || ret == ETIMEDOUT) && retries > 0) {
-- dbg_printf(ipmi, 3, "Sleeping 5 ...\n");
-- sleep(5);
-- dbg_printf(ipmi, 1, "Retrying ...\n");
-- --retries;
--
-- if (ipmi_spawn(ipmi, cmd) != 0)
-- return -1;
-- ret = ipmi_expect(ipmi, toklist, 120);
-- if (ret == EFAULT) {
-- /* Doomed. */
-- break;
-- }
-- ipmi_reap(ipmi);
-- }
--
- if (ret == EFAULT) {
- log(LOG_CRIT, "ipmilan: ipmitool failed to create "
- "mutex; unable to complete operation\n");
- return ret;
- }
-
-- if (ret == EAGAIN) {
-+ if (ret == ETIMEDOUT) {
- /*!!! Still couldn't get through?! */
- log(LOG_WARNING,
-- "ipmilan: Failed to connect after 30 seconds\n");
-+ "ipmilan: Failed to connect after %d seconds\n",ipmi->i_timeout);
- }
-
- return ret;
-@@ -432,7 +418,7 @@ ipmi_destroy(struct ipmi *i)
- */
- static struct ipmi *
- ipmi_init(struct ipmi *i, char *host, char *authtype,
-- char *user, char *password, int lanplus, int verbose)
-+ char *user, char *password, int lanplus, int verbose,int timeout)
- {
- const char *p;
-
-@@ -503,6 +489,7 @@ ipmi_init(struct ipmi *i, char *host, char *authtype,
- i->i_id = IPMIID;
- i->i_verbose = verbose;
- i->i_lanplus = lanplus;
-+ i->i_timeout = timeout;
-
- return i;
- }
-@@ -565,7 +552,7 @@ get_options_stdin(char *ip, size_t iplen,
- char *pwd_script, size_t pwd_script_len,
- char *user, size_t userlen,
- char *op, size_t oplen,
-- int *lanplus, int *verbose)
-+ int *lanplus, int *verbose,int *timeout)
- {
- char in[256];
- int line = 0;
-@@ -627,6 +614,10 @@ get_options_stdin(char *ip, size_t iplen,
- user[0] = 0;
- } else if (!strcasecmp(name, "lanplus")) {
- (*lanplus) = 1;
-+ } else if (!strcasecmp(name,"timeout")) {
-+ if ((sscanf(val,"%d",timeout)!=1) || *timeout<1) {
-+ *timeout=DEFAULT_TIMEOUT;
-+ }
- } else if (!strcasecmp(name, "option") ||
- !strcasecmp(name, "operation") ||
- !strcasecmp(name, "action")) {
-@@ -666,6 +657,7 @@ printf(" -l <login> Username/Login (if required) to control power\n"
- " on IPMI device\n");
- printf(" -o <op> Operation to perform.\n");
- printf(" Valid operations: on, off, reboot, status\n");
-+printf(" -t <timeout> Timeout (sec) for IPMI operation (default %d)\n",DEFAULT_TIMEOUT);
- printf(" -V Print version and exit\n");
- printf(" -v Verbose mode\n\n");
- printf("If no options are specified, the following options will be read\n");
-@@ -679,6 +671,7 @@ printf(" login=<login> Same as -u\n");
- printf(" option=<op> Same as -o\n");
- printf(" operation=<op> Same as -o\n");
- printf(" action=<op> Same as -o\n");
-+printf(" timeout=<timeout> Same as -t\n");
- printf(" verbose Same as -v\n\n");
- exit(1);
- }
-@@ -699,6 +692,7 @@ main(int argc, char **argv)
- int verbose=0;
- char *pname = basename(argv[0]);
- struct ipmi *i;
-+ int timeout=DEFAULT_TIMEOUT;
-
- memset(ip, 0, sizeof(ip));
- memset(authtype, 0, sizeof(authtype));
-@@ -710,7 +704,7 @@ main(int argc, char **argv)
- /*
- Parse command line options if any were specified
- */
-- while ((opt = getopt(argc, argv, "A:a:i:l:p:S:Po:vV?hH")) != EOF) {
-+ while ((opt = getopt(argc, argv, "A:a:i:l:p:S:Po:vV?hHt:")) != EOF) {
- switch(opt) {
- case 'A':
- /* Auth type */
-@@ -740,6 +734,12 @@ main(int argc, char **argv)
- /* Operation */
- strncpy(op, optarg, sizeof(op));
- break;
-+ case 't':
-+ /* Timeout */
-+ if ((sscanf(optarg,"%d",&timeout)!=1) || timeout<1) {
-+ fail_exit("Timeout option expects positive number parameter");
-+ }
-+ break;
- case 'v':
- verbose++;
- break;
-@@ -763,7 +763,7 @@ main(int argc, char **argv)
- passwd, sizeof(passwd),
- pwd_script, sizeof(pwd_script),
- user, sizeof(user),
-- op, sizeof(op), &lanplus, &verbose) != 0)
-+ op, sizeof(op), &lanplus, &verbose,&timeout) != 0)
- return 1;
- }
-
-@@ -813,7 +813,7 @@ main(int argc, char **argv)
-
-
- /* Ok, set up the IPMI struct */
-- i = ipmi_init(NULL, ip, authtype, user, passwd, lanplus, verbose);
-+ i = ipmi_init(NULL, ip, authtype, user, passwd, lanplus, verbose, timeout);
- if (!i)
- fail_exit("Failed to initialize\n");
-
-From: Jan Friesse <jfriesse@redhat.com>
-Date: Thu, 20 Nov 2008 16:45:01 +0000 (+0100)
-Subject: fence: fix IPMI man page
-X-Git-Url: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff_plain;h=49885167a5b1d8a848ae6b747865d716026375e7
-
-fence: fix IPMI man page
-
-Documented timeout (-t) option.
----
-
-diff --git a/fence/man/fence_ipmilan.8 b/fence/man/fence_ipmilan.8
-index 0d68d68..394804d 100644
---- a/fence/man/fence_ipmilan.8
-+++ b/fence/man/fence_ipmilan.8
-@@ -44,6 +44,11 @@ Use the lanplus option if this is a lanplus capable interface (for example iLo2)
- \fB-A\fP \fIAuthentication Type\fP
- Can be set to none, password, md2, or md5.
- .TP
-+\fB-t\fP \fItimeout\fP
-+Timeout in seconds for IPMI operation. Default is 10, but in some cases it
-+must be set to higher value (anything above 30 is not recommended and may
-+cause strange problems).
-+.TP
- \fB-q\fP
- Quiet operation. Only print out error messages.
- .TP
-@@ -73,6 +78,11 @@ Full path to an executable to generate the password for login.
- \fIauth = < param >\fR
- Authentication type (none, password, md2, md5).
- .TP
-+\fItimeout = < param >\fR
-+Timeout in seconds for IPMI operation. Default is 10, but in some cases it
-+must be set to higher value (anything above 30 is not recommended and may
-+cause strange problems).
-+.TP
- \fIlanplus\fR
- If we are using the lanplus option for ipmitool
-
diff --git a/sys-cluster/fence/files/fence_xen b/sys-cluster/fence/files/fence_xen
deleted file mode 100644
index 27ab34a67758..000000000000
--- a/sys-cluster/fence/files/fence_xen
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/perl
-
-###############################################################################
-###############################################################################
-##
-## Copyright (C) 2005 Red Hat, Inc. All rights reserved.
-##
-## This copyrighted material is made available to anyone wishing to use,
-## modify, copy, or redistribute it subject to the terms and conditions
-## of the GNU General Public License v.2.
-##
-###############################################################################
-###############################################################################
-
-use Getopt::Std;
-
-# Get the program name from $0 and strip directory names
-$_=$0;
-s/.*\///;
-my $pname = $_;
-
-
-# Default is to use ssh for connection to the host
-# for this to be effective you'll need to have an ssh key on the VMs
-# that can log in to the host without a passphrase.
-# If you device to use rsh then you'll need to edit /root/.rhosts
-#
-# Also note that you'll need to set /proc/sys/kernel/sysrq to "1" in
-# the VMs for this to work at all.
-#
-$opt_c = "ssh";
-$opt_u = "root";
-
-# WARNING!! Do not add code bewteen "#BEGIN_VERSION_GENERATION" and
-# "#END_VERSION_GENERATION" It is generated by the Makefile
-
-#BEGIN_VERSION_GENERATION
-$FENCE_RELEASE_NAME="DEVEL.1105353156";
-$REDHAT_COPYRIGHT=("Copyright (C) Red Hat, Inc. 2005 All rights reserved.");
-$BUILD_DATE="(built Mon Jan 10 10:35:41 GMT 2005)";
-#END_VERSION_GENERATION
-
-sub usage
-{
- print "Usage:\n";
- print "\n";
- print "$pname [options]\n";
- print "\n";
- print "Options:\n";
- print " -h This help message\n";
- print " -s <ip> IP address or hostname of host system\n";
- print " -d <domain> Domain name of system to fence\n";
- print " -u <name> User name (default root)\n";
- print " -c <cmd> Command to log into host (default ssh) \n";
-
- exit 0;
-}
-
-sub fail
-{
- ($msg)=@_;
- print $msg."\n" unless defined $opt_q;
-
- if (defined $t)
- {
- # make sure we don't get stuck in a loop due to errors
- $t->errmode('return');
-
- logout() if $logged_in;
- $t->close
- }
- exit 1;
-}
-
-sub fail_usage
-{
- ($msg)=@_;
- print STDERR $msg."\n" if $msg;
- print STDERR "Please use '-h' for usage.\n";
- exit 1;
-}
-
-sub version
-{
- print "$pname $FENCE_RELEASE_NAME $BUILD_DATE\n";
- print "$SISTINA_COPYRIGHT\n" if ( $SISTINA_COPYRIGHT );
- exit 0;
-}
-
-
-
-
-sub get_options_stdin
-{
- my $opt;
- my $line = 0;
- while( defined($in = <>) )
- {
- $_ = $in;
- chomp;
-
- # strip leading and trailing whitespace
- s/^\s*//;
- s/\s*$//;
-
- # skip comments
- next if /^#/;
-
- $line+=1;
- $opt=$_;
- next unless $opt;
-
- ($name,$val)=split /\s*=\s*/, $opt;
-
- if ( $name eq "" )
- {
- print STDERR "parse error: illegal name in option $line\n";
- exit 2;
- }
- # DO NOTHING -- this field is used by fenced
- elsif ($name eq "agent" )
- {
- }
- elsif ($name eq "host" )
- {
- $opt_s = $val;
- }
- elsif ($name eq "domain" )
- {
- $opt_d = $val;
- }
- elsif ($name eq "user" )
- {
- $opt_u = $val;
- }
- elsif ($name eq "cmd" )
- {
- $opt_c = $val;
- }
- # Maybe password...
- # Excess name/vals will fail
- else
- {
- fail "parse error: unknown option \"$opt\"";
- }
- }
-}
-
-
-### MAIN #######################################################
-if (@ARGV > 0) {
- getopts("hs:d:u:c:vV") || fail_usage ;
-
- usage if defined $opt_h;
- version if defined $opt_V;
-
- fail_usage "Unknown parameter." if (@ARGV > 0);
-
- fail_usage "No '-d' flag specified." unless defined $opt_d;
- fail_usage "No '-s' flag specified." unless defined $opt_s;
-
- } else {
- get_options_stdin();
-
- fail "failed: no host system name" unless defined $opt_s;
- fail "failed: no domain to fence" unless defined $opt_d;
-
- }
-
-exit system ("$opt_c -l $opt_u $opt_s xm sysrq $opt_d b");
-
-
diff --git a/sys-cluster/fence/files/fenced.conf b/sys-cluster/fence/files/fenced.conf
deleted file mode 100644
index 4874a8481d9b..000000000000
--- a/sys-cluster/fence/files/fenced.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright 1999-2005 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/fence/files/fenced.conf,v 1.3 2005/10/07 19:38:50 xmerlin Exp $
-
-FENCED_OPTS=""
diff --git a/sys-cluster/fence/files/fenced.rc b/sys-cluster/fence/files/fenced.rc
deleted file mode 100755
index e6d03aa27637..000000000000
--- a/sys-cluster/fence/files/fenced.rc
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/sbin/runscript
-# Copyright 1999-2005 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/fence/files/fenced.rc,v 1.5 2005/03/25 16:06:31 xmerlin Exp $
-
-depend() {
- use net
- need ccs cluster-manager cluster-locking-manager
-}
-
-start() {
- ebegin "Starting fence domain"
- /sbin/fence_tool join ${FENCED_OPTS}> /dev/null 2>&1
- eend $?
-}
-
-umount_gfs_filesystems() {
- local sig retry
- local remaining="$(awk '$3 == "gfs" { print $2 }' /proc/mounts)"
-
- if [ -n "${remaining}" ]
- then
- sig=
- retry=3
- while [ -n "${remaining}" -a "${retry}" -gt 0 ]
- do
- if [ "${retry}" -lt 3 ]
- then
- ebegin "Unmounting GFS filesystems (retry)"
- umount ${remaining} &>/dev/null
- eend $? "Failed to unmount GFS filesystems this retry"
- else
- ebegin "Unmounting GFS filesystems"
- umount ${remaining} &>/dev/null
- eend $? "Failed to unmount GFS filesystems"
- fi
- remaining="$(awk '$3 == "gfs" { print $2 }' /proc/mounts)"
- [ -z "${remaining}" ] && break
- /bin/fuser -k -m ${sig} ${remaining} &>/dev/null
- sleep 5
- retry=$((${retry} -1))
- sig=-9
- done
- fi
-}
-
-stop() {
-
- # umount GFS filesystems
- umount_gfs_filesystems
-
- ebegin "Stopping fence domain"
- /sbin/fence_tool leave > /dev/null 2>&1
- eend $?
-}
diff --git a/sys-cluster/fence/metadata.xml b/sys-cluster/fence/metadata.xml
deleted file mode 100644
index b2c73e8f3872..000000000000
--- a/sys-cluster/fence/metadata.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<herd>ha-cluster</herd>
-<maintainer>
- <email>ha-cluster@gentoo.org</email>
-</maintainer>
-</pkgmetadata>
diff --git a/sys-cluster/gnbd-kernel/ChangeLog b/sys-cluster/gnbd-kernel/ChangeLog
deleted file mode 100644
index 7bb2c56650fa..000000000000
--- a/sys-cluster/gnbd-kernel/ChangeLog
+++ /dev/null
@@ -1,152 +0,0 @@
-# ChangeLog for sys-cluster/gnbd-kernel
-# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/gnbd-kernel/ChangeLog,v 1.28 2009/09/06 21:17:39 robbat2 Exp $
-
- 06 Sep 2009; Robin H. Johnson <robbat2@gentoo.org>
- gnbd-kernel-2.03.09.ebuild:
- Cleaning up for linux-info work: inherit linux-mod implies inherit
- linux-info.
-
- 10 Feb 2009; Christian Zoffoli <xmerlin@gentoo.org>
- gnbd-kernel-2.03.09.ebuild:
- Stable on x86 and amd64.
-
- 13 Nov 2008; Christian Zoffoli <xmerlin@gentoo.org>
- -files/gnbd-kernel-1.03.00-compile-fix-kernel-post-2.6.18.patch,
- -files/gnbd-kernel-1.04.00-compile-fix-kernel-pre-2.6.19.patch,
- -files/gnbd-kernel-2.02.00-compile-fix-kernel-pre-2.6.24.diff,
- -files/gnbd-kernel-remove-devfs-support.patch,
- -gnbd-kernel-1.02.00-r1.ebuild, -gnbd-kernel-1.03.00.ebuild,
- -gnbd-kernel-1.04.00.ebuild, -gnbd-kernel-2.02.00.ebuild,
- +gnbd-kernel-2.03.09.ebuild:
- Ebuild cleanup, version bump, fixed homepage.
-
- 21 Mar 2008; Christian Zoffoli <xmerlin@gentoo.org>
- +files/gnbd-kernel-2.02.00-compile-fix-kernel-pre-2.6.24.diff,
- gnbd-kernel-2.02.00.ebuild:
- Patched gnbd to compile also with kernel >= 2.6.20.
-
-*gnbd-kernel-2.02.00 (17 Mar 2008)
-
- 17 Mar 2008; Christian Zoffoli <xmerlin@gentoo.org>
- +gnbd-kernel-2.02.00.ebuild:
- Version bump. 1.0x.00 is scheduled to be removed soon.
-
- 12 May 2007; Christian Zoffoli <xmerlin@gentoo.org>
- gnbd-kernel-1.02.00-r1.ebuild, gnbd-kernel-1.03.00.ebuild:
- Stable on x86.
-
- 26 Apr 2007; Donnie Berkholz <dberkholz@gentoo.org>; metadata.xml:
- Update for cluster herd split to hp-cluster and ha-cluster.
-
-*gnbd-kernel-1.04.00 (09 Mar 2007)
-
- 09 Mar 2007; Christian Zoffoli <xmerlin@gentoo.org>
- +files/gnbd-kernel-1.03.00-compile-fix-kernel-post-2.6.18.patch,
- +files/gnbd-kernel-1.04.00-compile-fix-kernel-pre-2.6.19.patch,
- gnbd-kernel-1.02.00-r1.ebuild, gnbd-kernel-1.03.00.ebuild,
- +gnbd-kernel-1.04.00.ebuild:
- Version bump, fixed compilation with older and newer kernels.
-
- 02 Mar 2007; Christian Zoffoli <xmerlin@gentoo.org>
- gnbd-kernel-1.02.00-r1.ebuild, gnbd-kernel-1.03.00.ebuild:
- Fixed module install path bug #158572.
-
- 19 Oct 2006; Christian Zoffoli <xmerlin@gentoo.org>
- gnbd-kernel-1.02.00-r1.ebuild, gnbd-kernel-1.03.00.ebuild:
- Updated dependency, thanks to Ramon van Alteren <ramon@vanalteren.nl>.
-
- 15 Oct 2006; Christian Zoffoli <xmerlin@gentoo.org>
- gnbd-kernel-1.02.00-r1.ebuild, gnbd-kernel-1.03.00.ebuild:
- Removed check_KV.
-
- 14 Oct 2006; Christian Zoffoli <xmerlin@gentoo.org>
- gnbd-kernel-1.02.00-r1.ebuild:
- Stable x86.
-
- 14 Oct 2006; Christian Zoffoli <xmerlin@gentoo.org>
- -gnbd-kernel-1.01.00.ebuild, -gnbd-kernel-1.02.00.ebuild,
- gnbd-kernel-1.02.00-r1.ebuild, gnbd-kernel-1.03.00.ebuild:
- Ebuild cleanup. Added some compile/install checks.
-
- 14 Oct 2006; Christian Zoffoli <xmerlin@gentoo.org>
- gnbd-kernel-1.01.00.ebuild, gnbd-kernel-1.02.00.ebuild,
- gnbd-kernel-1.02.00-r1.ebuild, gnbd-kernel-1.03.00.ebuild:
- Fixed bug #151038.
-
-*gnbd-kernel-1.03.00 (30 Aug 2006)
-
- 30 Aug 2006; Christian Zoffoli <xmerlin@gentoo.org>
- +gnbd-kernel-1.03.00.ebuild:
- Version bump.
-
-*gnbd-kernel-1.02.00-r1 (13 Jul 2006)
-
- 13 Jul 2006; Christian Zoffoli <xmerlin@gentoo.org>
- +gnbd-kernel-1.02.00-r1.ebuild:
- 1.02.00 updated to current stable.
-
- 13 Jul 2006; Christian Zoffoli <xmerlin@gentoo.org>
- -gnbd-kernel-1.00.00-r1.ebuild:
- Ebuild cleanup.
-
-*gnbd-kernel-1.02.00 (30 Apr 2006)
-
- 30 Apr 2006; Christian Zoffoli <xmerlin@gentoo.org>
- gnbd-kernel-1.01.00.ebuild, +gnbd-kernel-1.02.00.ebuild:
- Version bump.
-
- 30 Apr 2006; Christian Zoffoli <xmerlin@gentoo.org>
- gnbd-kernel-1.01.00.ebuild:
- Stable x86.
-
-*gnbd-kernel-1.01.00 (08 Oct 2005)
-
- 08 Oct 2005; Christian Zoffoli <xmerlin@gentoo.org>
- gnbd-kernel-1.00.00-r1.ebuild, +gnbd-kernel-1.01.00.ebuild:
- ebuild cleanup. New version.
-
- 05 Sep 2005; Danny van Dyk <kugelfang@gentoo.org>
- gnbd-kernel-1.00.00-r1.ebuild:
- Marked ~amd64.
-
- 05 Sep 2005; Christian Zoffoli <xmerlin@gentoo.org>
- gnbd-kernel-1.00.00-r1.ebuild:
- fixed file deletion.
-
-*gnbd-kernel-1.00.00-r1 (05 Sep 2005)
-
- 05 Sep 2005; Christian Zoffoli <xmerlin@gentoo.org>
- +gnbd-kernel-1.00.00-r1.ebuild, -gnbd-kernel-1.00.00.ebuild:
- splitting headers from kernel ebuilds.
-
- 29 Aug 2005; Christian Zoffoli <xmerlin@gentoo.org>
- gnbd-kernel-1.00.00.ebuild:
- relaxed dep.
-
- 01 Jul 2005; David Holm <dholm@gentoo.org> gnbd-kernel-1.00.00.ebuild:
- Added to ~ppc.
-
-*gnbd-kernel-1.00.00 (30 Jun 2005)
-
- 30 Jun 2005; Christian Zoffoli <xmerlin@gentoo.org>
- +gnbd-kernel-1.00.00.ebuild, -gnbd-kernel-2.6.9-r1.ebuild,
- -gnbd-kernel-2.6.9.ebuild:
- 1.00.00 tree in portage. Removed old ebuilds.
-
-*gnbd-kernel-2.6.9-r1 (19 Mar 2005)
-
- 19 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org>
- +gnbd-kernel-2.6.9-r1.ebuild:
- updated to gnbd-kernel-2.6.9-8
-
- 09 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org>
- gnbd-kernel-2.6.9.ebuild:
- removed inherit check-kernel
-
-*gnbd-kernel-2.6.9 (27 Jan 2005)
-
- 27 Jan 2005; Christian Zoffoli <xmerlin@gentoo.org>
- +gnbd-kernel-2.6.9.ebuild:
- new in portage
-
diff --git a/sys-cluster/gnbd-kernel/Manifest b/sys-cluster/gnbd-kernel/Manifest
deleted file mode 100644
index df4008d1f44e..000000000000
--- a/sys-cluster/gnbd-kernel/Manifest
+++ /dev/null
@@ -1,4 +0,0 @@
-DIST cluster-2.03.09.tar.gz 1784357 RMD160 9ac5c3fd0fece8ec17bd31d116c43b33612741d0 SHA1 c2cdbc657da2a9efde4b1e6d2657170e1c09b5b8 SHA256 b6d6f35f58b2f8628c369391e0fd01b1803af40029ec1e6ef88865dda38b855f
-EBUILD gnbd-kernel-2.03.09.ebuild 1684 RMD160 c913e1a0cb50f1abf8c3da85f1ca42fe2f4a3bcf SHA1 c68329a72036a2d01ed5036215cf8c0d996b4833 SHA256 211c9b2f41ab756023288646740ed96dff388ef5d058e5f57c58f3e168c44bca
-MISC ChangeLog 5137 RMD160 1072d8920d9e721cacdfc8e6f1fe4a352272eb3f SHA1 d3e5ee6eef4995ff602f91e6cf445963a66551e5 SHA256 2999c5388d3c719a29f7d1140edb818fd7e3617ddb2dc7bb272973190e514c1e
-MISC metadata.xml 229 RMD160 4dcf17b88c5f4db2e817f473f3e8269b0bff2e6e SHA1 e6315be43241c55bdc0d12a42fa05632c5ff9b79 SHA256 49e13d2d49bef7298e3bb665ebeceeff9b0880fae5ff639cb8405993504f244f
diff --git a/sys-cluster/gnbd-kernel/gnbd-kernel-2.03.09.ebuild b/sys-cluster/gnbd-kernel/gnbd-kernel-2.03.09.ebuild
deleted file mode 100644
index 52df6260d795..000000000000
--- a/sys-cluster/gnbd-kernel/gnbd-kernel-2.03.09.ebuild
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright 1999-2009 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/gnbd-kernel/gnbd-kernel-2.03.09.ebuild,v 1.3 2009/09/06 21:17:39 robbat2 Exp $
-
-inherit eutils linux-mod versionator
-
-CLUSTER_RELEASE="${PV}"
-MY_P="cluster-${CLUSTER_RELEASE}"
-
-MAJ_PV="$(get_major_version)"
-MIN_PV="$(get_version_component_range 2).$(get_version_component_range 3)"
-
-DESCRIPTION="GFS Network Block Devices module"
-HOMEPAGE="http://sources.redhat.com/cluster/wiki/"
-SRC_URI="ftp://sources.redhat.com/pub/cluster/releases/${MY_P}.tar.gz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="amd64 x86"
-IUSE=""
-
-DEPEND=">=virtual/linux-sources-2.6.27"
-RDEPEND="${DEPEND}"
-
-S="${WORKDIR}/${MY_P}/${PN}"
-
-pkg_setup() {
- linux-mod_pkg_setup
- case ${KV_FULL} in
- 2.2.*|2.4.*) die "${P} supports only 2.6 kernels";;
- esac
-}
-
-src_unpack() {
- unpack ${A}
- cd "${S}"
-
- if kernel_is 2 6; then
- if [ "$KV_PATCH" -lt "24" ] ; then
- epatch "${FILESDIR}"/${P}-compile-fix-kernel-pre-2.6.24.diff || die
- fi
- fi
-}
-
-src_compile() {
- set_arch_to_kernel
-
- (cd "${WORKDIR}"/${MY_P};
- ./configure \
- --cc=$(tc-getCC) \
- --cflags="-Wall" \
- --kernel_src=${KERNEL_DIR} \
- --disable_kernel_check \
- ) || die "configure problem"
-
- (cd "${S}"/src;
- emake clean all \
- ) || die "compile problem"
-}
-
-src_install() {
- (cd "${S}"/src;
- emake DESTDIR="${D}" module_dir="${D}"/lib/modules/${KV_FULL} install || die "install problem"
- ) || die "compile problem"
- #rm -f "${D}"/usr/include/linux/gnbd.h || die
-}
-
-pkg_postinst() {
- linux-mod_pkg_postinst
-
- einfo ""
- einfo "Please remember to re-emerge ${PN} when you upgrade your kernel!"
- einfo ""
-}
diff --git a/sys-cluster/gnbd-kernel/metadata.xml b/sys-cluster/gnbd-kernel/metadata.xml
deleted file mode 100644
index b2c73e8f3872..000000000000
--- a/sys-cluster/gnbd-kernel/metadata.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<herd>ha-cluster</herd>
-<maintainer>
- <email>ha-cluster@gentoo.org</email>
-</maintainer>
-</pkgmetadata>
diff --git a/sys-cluster/gnbd/ChangeLog b/sys-cluster/gnbd/ChangeLog
deleted file mode 100644
index d034f61a9d3a..000000000000
--- a/sys-cluster/gnbd/ChangeLog
+++ /dev/null
@@ -1,143 +0,0 @@
-# ChangeLog for sys-cluster/gnbd
-# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/gnbd/ChangeLog,v 1.29 2009/02/10 22:45:46 xmerlin Exp $
-
- 10 Feb 2009; Christian Zoffoli <xmerlin@gentoo.org> gnbd-2.03.09.ebuild:
- Stable on x86 and amd64.
-
- 14 Nov 2008; Christian Zoffoli <xmerlin@gentoo.org>
- files/gnbd-srv-2.0x.rc:
- Fixed a path in gnbd-srv.
-
-*gnbd-2.03.09 (13 Nov 2008)
-
- 13 Nov 2008; Christian Zoffoli <xmerlin@gentoo.org> -gnbd-2.02.00.ebuild,
- -gnbd-2.02.00-r1.ebuild, +gnbd-2.03.09.ebuild:
- Ebuild cleanup, version bump.
-
- 20 Aug 2008; Michael Sterrett <mr_bones_@gentoo.org>
- -files/gnbd-client-1.0x.conf, -files/gnbd-srv-1.0x.conf,
- -files/gnbd-client-1.0x.rc, -files/gnbd-srv-1.0x.rc,
- -gnbd-1.02.00-r1.ebuild, -gnbd-1.03.00.ebuild, -gnbd-1.04.00.ebuild:
- clean out old, dep-broken ebuilds
-
-*gnbd-2.02.00-r1 (23 Mar 2008)
-
- 23 Mar 2008; Christian Zoffoli <xmerlin@gentoo.org>
- +gnbd-2.02.00-r1.ebuild:
- Updated 2.02.00 to STABLE2 20080323.
-
-*gnbd-2.02.00 (17 Mar 2008)
-
- 17 Mar 2008; Christian Zoffoli <xmerlin@gentoo.org>
- +files/gnbd-client-1.0x.conf, +files/gnbd-srv-1.0x.conf,
- +files/gnbd-client-1.0x.rc, +files/gnbd-srv-1.0x.rc,
- +files/gnbd-client-2.0x.conf, +files/gnbd-srv-2.0x.conf,
- +files/gnbd-client-2.0x.rc, +files/gnbd-srv-2.0x.rc,
- -files/gnbd-client.conf, -files/gnbd-client.rc, -files/gnbd-srv.conf,
- -files/gnbd-srv.rc, gnbd-1.02.00-r1.ebuild, gnbd-1.03.00.ebuild,
- gnbd-1.04.00.ebuild, +gnbd-2.02.00.ebuild:
- Version bump. 1.0x.00 is scheduled to be removed soon.
-
- 12 May 2007; Christian Zoffoli <xmerlin@gentoo.org> gnbd-1.03.00.ebuild:
- Stable on x86.
-
- 26 Apr 2007; Donnie Berkholz <dberkholz@gentoo.org>; metadata.xml:
- Update for cluster herd split to hp-cluster and ha-cluster.
-
- 12 Mar 2007; Christian Zoffoli <xmerlin@gentoo.org> files/gnbd-client.rc:
- Fixed startup order.
-
-*gnbd-1.04.00 (09 Mar 2007)
-
- 09 Mar 2007; Christian Zoffoli <xmerlin@gentoo.org>
- gnbd-1.02.00-r1.ebuild, gnbd-1.03.00.ebuild, +gnbd-1.04.00.ebuild:
- Version bump.
-
- 15 Oct 2006; Christian Zoffoli <xmerlin@gentoo.org>
- gnbd-1.02.00-r1.ebuild, gnbd-1.03.00.ebuild:
- Marked ~amd64.
-
- 14 Oct 2006; Christian Zoffoli <xmerlin@gentoo.org> -gnbd-1.01.00.ebuild,
- -gnbd-1.02.00.ebuild, gnbd-1.02.00-r1.ebuild, gnbd-1.03.00.ebuild:
- Ebuild cleanup. Added some compile/install checks.
-
-*gnbd-1.03.00 (30 Aug 2006)
-
- 30 Aug 2006; Christian Zoffoli <xmerlin@gentoo.org> +gnbd-1.03.00.ebuild:
- Version bump.
-
- 24 Aug 2006; Christian Zoffoli <xmerlin@gentoo.org>
- gnbd-1.02.00-r1.ebuild:
- Stable x86.
-
-*gnbd-1.02.00-r1 (13 Jul 2006)
-
- 13 Jul 2006; Christian Zoffoli <xmerlin@gentoo.org>
- +gnbd-1.02.00-r1.ebuild:
- 1.02.00 updated to current stable.
-
- 13 Jul 2006; Christian Zoffoli <xmerlin@gentoo.org>
- -gnbd-1.00.00-r1.ebuild:
- Ebuild cleanup.
-
- 29 May 2006; Doug Goldstein <cardoe@gentoo.org> gnbd-1.02.00.ebuild:
- gnbd compiles against sysfsutils versions under 2.0.. adding it to DEPENDS.
-
-*gnbd-1.02.00 (30 Apr 2006)
-
- 30 Apr 2006; Christian Zoffoli <xmerlin@gentoo.org> gnbd-1.01.00.ebuild,
- +gnbd-1.02.00.ebuild:
- Version bump.
-
- 30 Apr 2006; Christian Zoffoli <xmerlin@gentoo.org> gnbd-1.01.00.ebuild:
- Stable x86.
-
- 08 Oct 2005; Christian Zoffoli <xmerlin@gentoo.org> gnbd-1.00.00-r1.ebuild:
- ebuild cleanup. New version.
-
- 07 Oct 2005; Christian Zoffoli <xmerlin@gentoo.org> +files/gnbd-client.conf,
- files/gnbd-client.rc, +files/gnbd-srv.conf, files/gnbd-srv.rc,
- gnbd-1.00.00-r1.ebuild:
- added conf file to set import/export options.
-
- 07 Oct 2005; Christian Zoffoli <xmerlin@gentoo.org> files/gnbd-client.rc,
- files/gnbd-srv.rc:
- fixed gnbdtab processing. Thanks to Jan Bruvoll <jan@bruvoll.com>.
-
- 07 Oct 2005; Christian Zoffoli <xmerlin@gentoo.org> gnbd-1.00.00-r1.ebuild:
- fixed a typo, closed bug #108361. Thanks to Jan Bruvoll <jan@bruvoll.com>.
-
-*gnbd-1.00.00-r1 (05 Sep 2005)
-
- 05 Sep 2005; Christian Zoffoli <xmerlin@gentoo.org> +gnbd-1.00.00-r1.ebuild,
- -gnbd-1.00.00.ebuild:
- changed headers dep.
-
- 01 Jul 2005; David Holm <dholm@gentoo.org> gnbd-1.00.00.ebuild:
- Added to ~ppc.
-
- 30 Jun 2005; Christian Zoffoli <xmerlin@gentoo.org> -gnbd-1.0_pre13.ebuild
- gnbd-1.00.00.ebuild:
- 1.00.00 tree in portage. Removed old ebuilds.
-
- 25 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> gnbd-1.0_pre13.ebuild:
- ebuild cleaned up
-
- 25 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> files/gnbd-client.rc,
- files/gnbd-srv.rc:
- improved init script
-
- 23 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> files/gnbd-client.rc:
- added gfs filesystems (imported GNBSs) umount in init
-
- 23 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> files/gnbd-client.rc:
- added unmounting gfs capability to gnbd-client script
-
-*gnbd-1.0_pre13 (23 Mar 2005)
-
- 23 Mar 2005; Christian Zoffoli <xmerlin@gentoo.org> +metadata.xml,
- +files/gnbd-client.rc, +files/gnbd-srv.rc, +files/gnbd.devfs, +files/gnbdtab,
- +gnbd-1.0_pre13.ebuild:
- new in portage
-
diff --git a/sys-cluster/gnbd/Manifest b/sys-cluster/gnbd/Manifest
deleted file mode 100644
index c7c3caf5067b..000000000000
--- a/sys-cluster/gnbd/Manifest
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
-
-AUX gnbd-client-2.0x.conf 248 RMD160 c24dfeeb546f2ad58f63bf1a776cf78f021b0dcb SHA1 135f16705101f4b2f47ca0b71f5f2876eb3b0ba3 SHA256 045c9af6236fd3dcaaa96faf8477cd6d154228755b6ed465c70ed2d80299dbf8
-AUX gnbd-client-2.0x.rc 2789 RMD160 21e65237ab2d1af6afab59162e3e6e7202cafd38 SHA1 81eca7c5facaaa293063d7f000343a274a8a97cb SHA256 12abe553131c142ab151975ce34fa387849932c826e8a38ff61be61705701ac2
-AUX gnbd-srv-2.0x.conf 242 RMD160 97ffaf3641fb64c874c5ca285ec353654bce46b3 SHA1 750c15f28f5028fc8c36106f2b83dc09e6bef56e SHA256 d1bc310481ab4005c45623d1d57e1c4ee429865af4788e5f685122dd73f8e9e4
-AUX gnbd-srv-2.0x.rc 1974 RMD160 d98a96a4c2408597f900ee3aa1ea2d705c1d3211 SHA1 4991ae8752b0e59535a1507e0337a4a2608e8e31 SHA256 98329db47bc71c3d1b38d853b4fdcac434b7783738cf3cd3df41e1084eeb7519
-AUX gnbd.devfs 332 RMD160 d811c80610b0b1618e70cac0af588f3f7d0d04ff SHA1 a44dc1c955b13b4268843c64d63d0dcd4b0fd6a0 SHA256 8a67ac6ad801178db5783595642f54f97fb6ecf5a23aebc631b6e33930c9d06e
-AUX gnbdtab 177 RMD160 69bddcac6110f5ac127dcec937361dc2551a9c02 SHA1 e43b0c3f68bc994531f017d6094c2eae72c216ae SHA256 271f519506eda3a4630ac6870bc2b5ad1e9b6ff01f063d63c6970e1ed9fd47a1
-DIST cluster-2.03.09.tar.gz 1784357 RMD160 9ac5c3fd0fece8ec17bd31d116c43b33612741d0 SHA1 c2cdbc657da2a9efde4b1e6d2657170e1c09b5b8 SHA256 b6d6f35f58b2f8628c369391e0fd01b1803af40029ec1e6ef88865dda38b855f
-EBUILD gnbd-2.03.09.ebuild 1660 RMD160 8540743cf2442e2d0cd1af680a82644ffb9ffc46 SHA1 8c668d3861ead7df064276c5511f0e70a5a2cf63 SHA256 230f68963f1ff414eb9c3270d2b8d66bddb39805e21064bde946dde4eb38eb2c
-MISC ChangeLog 5008 RMD160 8afe716fee806ae31056b664b843d452fac1816f SHA1 9758add3015a052c758659e6bcc03fdaebc95a42 SHA256 f3d7c34d7707fddd2ccce6946538fc9d7ff05bdaa955367a8b7d96109508a630
-MISC metadata.xml 229 RMD160 4dcf17b88c5f4db2e817f473f3e8269b0bff2e6e SHA1 e6315be43241c55bdc0d12a42fa05632c5ff9b79 SHA256 49e13d2d49bef7298e3bb665ebeceeff9b0880fae5ff639cb8405993504f244f
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v2.0.9 (GNU/Linux)
-
-iEYEARECAAYFAkmSEvkACgkQgMUyd/cdjWs90QCdGJPyalNksN2iz4a+qO1578RU
-8aAAn2KjA3AR1EmjAbyPe/2DC25R0gCD
-=vLcD
------END PGP SIGNATURE-----
diff --git a/sys-cluster/gnbd/files/gnbd-client-2.0x.conf b/sys-cluster/gnbd/files/gnbd-client-2.0x.conf
deleted file mode 100644
index 751342e41abc..000000000000
--- a/sys-cluster/gnbd/files/gnbd-client-2.0x.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright 1999-2005 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/gnbd/files/gnbd-client-2.0x.conf,v 1.1 2008/03/17 16:59:57 xmerlin Exp $
-
-GNBD_CLIENT_OPTS=""
diff --git a/sys-cluster/gnbd/files/gnbd-client-2.0x.rc b/sys-cluster/gnbd/files/gnbd-client-2.0x.rc
deleted file mode 100755
index fbe8eb2d1d10..000000000000
--- a/sys-cluster/gnbd/files/gnbd-client-2.0x.rc
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/sbin/runscript
-# Copyright 1999-2005 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License, v2 or later
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/gnbd/files/gnbd-client-2.0x.rc,v 1.1 2008/03/17 16:59:57 xmerlin Exp $
-
-depend() {
- use dns logger
- need net
- need cman
-}
-
-load_modules() {
- local module modules
- modules=$1
-
- for module in ${modules}; do
- ebegin "Loading ${module} kernel module"
- modprobe ${module}
- eend $? "Failed to load ${module} kernel module"
- done
-}
-
-unload_modules() {
- local module modules
- modules=$1
-
- for module in ${modules}; do
- ebegin "Unloading ${module} kernel module"
- modprobe -r ${module}
- eend $? "Failed to unload ${module} kernel module"
- done
-}
-
-
-start() {
- if [ ! -f /etc/gnbdtab ] ; then
- eerror "Please create /etc/gnbdtab"
- eerror "Sample conf: /etc/gnbdtab"
- return 1
- fi
-
- load_modules gnbd
-
- GNBD=`cat /etc/gnbdtab | egrep '^import'`
- if [ -n "$GNBD" ] ; then
- ebegin "Importing all GNBDs devices"
- einfo "$(awk '/^import/ { print "--> server:", $2 }' /etc/gnbdtab )"
- cat /etc/gnbdtab | awk '/^import/ { print "-i", $2 }' | xargs -l gnbd_import ${GNBD_CLIENT_OPTS} > /dev/null
- eend $? "Failed to import gnbd devices"
- fi
-}
-
-stop() {
- # umount manually mounted gfs filesystems
- local sig retry
- local remaining="$(awk '( $3 == "gfs" || $3 == "gfs2" ) && $1 ~ /\/dev\/gnbd\// { if ($2 != "/") print $2 }' /proc/mounts | sort -r)"
-
- if [ -z "${remaining}" ]
- then
- ebegin "Unmounting GFS filesystems (GNBDs imported devices)"
- eend 0
- else
- sig=
- retry=3
- while [ -n "${remaining}" -a "${retry}" -gt 0 ]
- do
- if [ "${retry}" -lt 3 ]
- then
- ebegin "Unmounting GFS filesystems (retry)"
- umount ${remaining} &>/dev/null
- eend $? "Failed to unmount GFS filesystems this retry"
- else
- ebegin "Unmounting GFS filesystems"
- umount ${remaining} &>/dev/null
- eend $? "Failed to unmount GFS filesystems"
- fi
- remaining="$(awk '( $3 == "gfs" || $3 == "gfs2" ) && $1 ~ /\/dev\/gnbd\// { if ($2 != "/") print $2 }' /proc/mounts | sort -r)"
- [ -z "${remaining}" ] && break
- /bin/fuser -k -m ${sig} ${remaining} &>/dev/null
- sleep 5
- retry=$((${retry} -1))
- sig=-9
- done
- fi
-
- local GNBD_MONITOR_PROC
-
- ebegin "Unimporting all GNBDs devices"
- gnbd_import -q -R &> /dev/null
- eend $?
-
- GNBD_MONITOR_PROC="$(pgrep gnbd_clusterd)"
- if [ -n "${GNBD_MONITOR_PROC}" ]; then
- ebegin "Stopping gnbd_monitor"
- killall gnbd_monitor &> /dev/null
- eend $?
- fi
-
- unload_modules gnbd
-}
diff --git a/sys-cluster/gnbd/files/gnbd-srv-2.0x.conf b/sys-cluster/gnbd/files/gnbd-srv-2.0x.conf
deleted file mode 100644
index 179b5971247b..000000000000
--- a/sys-cluster/gnbd/files/gnbd-srv-2.0x.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright 1999-2005 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/gnbd/files/gnbd-srv-2.0x.conf,v 1.1 2008/03/17 16:59:57 xmerlin Exp $
-
-GNBD_SRV_OPTS=""
diff --git a/sys-cluster/gnbd/files/gnbd-srv-2.0x.rc b/sys-cluster/gnbd/files/gnbd-srv-2.0x.rc
deleted file mode 100755
index d631dc6c40e0..000000000000
--- a/sys-cluster/gnbd/files/gnbd-srv-2.0x.rc
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/sbin/runscript
-# Copyright 1999-2005 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License, v2 or later
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/gnbd/files/gnbd-srv-2.0x.rc,v 1.2 2008/11/14 00:15:03 xmerlin Exp $
-
-depend() {
- use dns logger
- need net
- need cman
-}
-
-GNBD_SRV_TIMEOUT=5
-
-start() {
- local GNBD
-
- if [ ! -f /etc/gnbdtab ] ; then
- eerror "Please create /etc/gnbdtab"
- eerror "Sample conf: /etc/gnbdtab"
- return 1
- fi
-
- ebegin "Loading needed kernel modules for gnbd"
- modprobe gnbd
- eend $? "Failed to load needed kernel modules for gnbd"
-
- ebegin "Starting gnbd_serv"
- start-stop-daemon --start --quiet --exec /usr/sbin/gnbd_serv -- -q
- eend $? "Failed to start gnbd_serv"
-
- GNBD=`cat /etc/gnbdtab | egrep '^export'`
- if [ -n "$GNBD" ] ; then
- ebegin "Exporting all GNBDs devices"
- einfo "$(awk '/^export/ { print "--> device:", $4, "as", $3 }' /etc/gnbdtab )"
- cat /etc/gnbdtab | awk '/^export/ { print "-d", $4, "-e", $3 }' | xargs -l gnbd_export ${GNBD_SRV_OPTS} > /dev/null
- eend $? "Failed to export gnbd devices"
- fi
-}
-
-stop() {
-
- local GNBD_SRV_PROCS GNBD_CLUSTERD_PROC
-
- ebegin "Unexporting all GNBDs devices"
- gnbd_export -q -R &> /dev/null
- eend $?
-
- if [ "$?" -ne 0 ]
- then
- ewend 1 "Failed to unexport all gnbd devices"
- else
- eend 0
-
- fi
-
- ebegin "Stopping gnbd_serv"
-
- GNBD_SRV_PROCS="$(pgrep gnbd_serv)"
- while [ -n "${GNBD_SRV_PROCS}" ] && [ ${GNBD_SRV_TIMEOUT} -gt 0 ] ; do
- gnbd_serv -k &> /dev/null
- sleep 1
- GNBD_SRV_TIMEOUT=$(( ${GNBD_SRV_TIMEOUT}-1 ))
- GNBD_SRV_PROCS="$(pgrep gnbd_serv)"
- done
-
- if [ -n "${GNBD_SRV_PROCS}" ]; then
- gnbd_serv -K &> /dev/null
- fi
- eend $? "Failed to stop gnbd_serv"
-
- GNBD_CLUSTERD_PROC="$(pgrep gnbd_clusterd)"
- if [ -n "${GNBD_CLUSTERD_PROC}" ]; then
- ebegin "Stopping gnbd_clusterd"
- killall gnbd_clusterd &> /dev/null
- eend $?
- fi
-
- ebegin "Unloading gnbd kernel module"
- modprobe -r gnbd
- eend $? "Failed to unload gnbd kernel module"
-}
diff --git a/sys-cluster/gnbd/files/gnbd.devfs b/sys-cluster/gnbd/files/gnbd.devfs
deleted file mode 100644
index f501682a9fb5..000000000000
--- a/sys-cluster/gnbd/files/gnbd.devfs
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# GNBD
-#
-
-#LOOKUP ^gnbd.* MODLOAD
-
-#
-# gnbd needs crx------- on /dev/gnbd_ctl
-#
-
-REGISTER ^gnbd_ctl PERMISSIONS root.root 600
-
-#
-# create old style device for /dev/gnbd/.*
-#
-
-#REGISTER ^gnbd/.* MKOLDCOMPAT
-#UNREGISTER ^gnbd/.* RMOLDCOMPAT
-
-#REGISTER ^gnbd.* IGNORE
-#REGISTER ^gnbd/.* IGNORE
diff --git a/sys-cluster/gnbd/files/gnbdtab b/sys-cluster/gnbd/files/gnbdtab
deleted file mode 100644
index e9a29dc59139..000000000000
--- a/sys-cluster/gnbd/files/gnbdtab
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# GNBD filesystem import/export configuration
-#
-
-# type host name device
-
-# Samples:
-# export srv1 export1 /dev/data/export1
-# import srv3 export1 /dev/gnbd/export1
diff --git a/sys-cluster/gnbd/gnbd-2.03.09.ebuild b/sys-cluster/gnbd/gnbd-2.03.09.ebuild
deleted file mode 100644
index a5ba3b006831..000000000000
--- a/sys-cluster/gnbd/gnbd-2.03.09.ebuild
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright 1999-2009 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/gnbd/gnbd-2.03.09.ebuild,v 1.3 2009/02/10 22:45:46 xmerlin Exp $
-
-inherit eutils versionator
-
-CLUSTER_RELEASE="${PV}"
-MY_P="cluster-${CLUSTER_RELEASE}"
-
-MAJ_PV="$(get_major_version)"
-MIN_PV="$(get_version_component_range 2).$(get_version_component_range 3)"
-
-DESCRIPTION="GFS Network Block Devices"
-HOMEPAGE="http://sources.redhat.com/cluster/wiki/"
-SRC_URI="ftp://sources.redhat.com/pub/cluster/releases/${MY_P}.tar.gz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="amd64 x86"
-IUSE=""
-
-RDEPEND="=sys-cluster/cman-lib-${CLUSTER_RELEASE}*"
-DEPEND="${RDEPEND}"
-
-S="${WORKDIR}/${MY_P}/${PN}"
-
-src_compile() {
- (cd "${WORKDIR}"/${MY_P};
- ./configure \
- --cc=$(tc-getCC) \
- --cflags="-Wall" \
- --disable_kernel_check \
- --dlmlibdir=/usr/lib \
- --dlmincdir=/usr/include \
- --cmanlibdir=/usr/lib \
- --cmanincdir=/usr/include \
- ) || die "configure problem"
-
- # fix the manual pages have executable bit
- sed -i -e '
- /\tinstall -d/s/install/& -m 0755/; t
- /\tinstall/s/install/& -m 0644/' \
- man/Makefile
-
- emake clean all || die "compile problem"
-}
-
-src_install() {
- emake DESTDIR="${D}" install || die "install problem"
-
- newinitd "${FILESDIR}"/${PN}-client-2.0x.rc ${PN}-client || die
- newinitd "${FILESDIR}"/${PN}-srv-2.0x.rc ${PN}-srv || die
-
- doconfd "${FILESDIR}"/${PN}-client-2.0x.conf || die
- doconfd "${FILESDIR}"/${PN}-srv-2.0x.conf || die
-
- insinto /etc
- doins "${FILESDIR}"/gnbdtab
-
- if $(has_version sys-fs/devfsd ) ; then
- insinto /etc/devfs.d/
- newins "${FILESDIR}"/gnbd.devfs gnbd
- fi
-}
diff --git a/sys-cluster/gnbd/metadata.xml b/sys-cluster/gnbd/metadata.xml
deleted file mode 100644
index b2c73e8f3872..000000000000
--- a/sys-cluster/gnbd/metadata.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<herd>ha-cluster</herd>
-<maintainer>
- <email>ha-cluster@gentoo.org</email>
-</maintainer>
-</pkgmetadata>
diff --git a/sys-cluster/openais/ChangeLog b/sys-cluster/openais/ChangeLog
deleted file mode 100644
index 824d37245796..000000000000
--- a/sys-cluster/openais/ChangeLog
+++ /dev/null
@@ -1,43 +0,0 @@
-# ChangeLog for sys-cluster/openais
-# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/openais/ChangeLog,v 1.6 2009/09/23 20:42:55 patrick Exp $
-
- 23 Sep 2009; Patrick Lauer <patrick@gentoo.org> openais-0.80.3-r1.ebuild,
- openais-0.82.ebuild:
- Remove virtual/libc
-
- 10 Feb 2009; Christian Zoffoli <xmerlin@gentoo.org>
- openais-0.80.3-r1.ebuild:
- Stable on x86 and amd64.
-
-*openais-0.80.3-r1 (21 Nov 2008)
-
- 21 Nov 2008; Christian Zoffoli <xmerlin@gentoo.org>
- +files/openais-0.80.3-Makefile.inc-VARS.patch,
- +files/openais-0.80.3-Makefile-VARS.patch,
- +files/openais-0.80.3-r1661.patch, -openais-0.80.3.ebuild,
- +openais-0.80.3-r1.ebuild:
- openais whitetank updated to r1661.
-
-*openais-0.80.3 (17 Mar 2008)
-
- 17 Mar 2008; Christian Zoffoli <xmerlin@gentoo.org>
- +files/openais-0.80.3-Makefile.inc-FLAGS.patch,
- +files/openais-0.80.3-Makefile-ARCH.patch,
- +files/openais-0.80.3-Makefile-LIBDIR.patch, +openais-0.80.3.ebuild,
- openais-0.82.ebuild:
- Added 0.80.3 needed by gfs 2.01.00, fixed parallel build in 0.82 bug #210202,
- fixed missing include in 0.82 bug #213716.
-
- 14 Feb 2008; Wolfram Schlich <wschlich@gentoo.org> openais-0.82.ebuild:
- use custom openais.conf, fix init script
-
-*openais-0.82 (14 Feb 2008)
-
- 14 Feb 2008; Wolfram Schlich <wschlich@gentoo.org>
- +files/Makefile.inc-FLAGS.patch, +files/Makefile-ARCH.patch,
- +files/Makefile-LIBDIR.patch, +files/Makefile-install.patch,
- +files/ais.initd, +files/openais.conf, +metadata.xml,
- +openais-0.82.ebuild:
- initial import
-
diff --git a/sys-cluster/openais/Manifest b/sys-cluster/openais/Manifest
deleted file mode 100644
index ded9e10d15d9..000000000000
--- a/sys-cluster/openais/Manifest
+++ /dev/null
@@ -1,18 +0,0 @@
-AUX Makefile-ARCH.patch 310 RMD160 0de6d7a374244a94403ee9bae986665aadf6961b SHA1 a03e1f692bba004b8e5ca92b4c7a46609ce76621 SHA256 56b704911a1dec1bebd224963ad9a558f22b1bbc2edad6fda72d6951e304f8d1
-AUX Makefile-LIBDIR.patch 612 RMD160 61faaa4bc8a131e3678b84cacb1888b8283f4846 SHA1 67fadcebf9f27fb3a8a6df3f8190af8bb96eda41 SHA256 ef47cddbb3e818109a6db31d14d0ae1138801420104a67241aad1057e332a9b4
-AUX Makefile-install.patch 550 RMD160 6ac244e612a8d772110acbb8695ca20a9b78d208 SHA1 08f74c320269a55332b86ecdfcab05b867ed9340 SHA256 7d92c37621ffb0e91cd62cce0d31fc9373cbb3e09ca3917ab412a04391e0d16c
-AUX Makefile.inc-FLAGS.patch 543 RMD160 79bf38f396aa117ebbd6bae2dccb56ef89050d0e SHA1 9b19ef59f5a9b53e58a378a6fe17b9522bc63f41 SHA256 35c28501c6ea3942fb29ca9736e386f06738dc576c4931ae10964918d080d479
-AUX ais.initd 530 RMD160 2d70f36431dd38dc64b3e6f6929ab811ee6ce392 SHA1 60ac1227eb475dfb7f32a88f62275747ed91c60a SHA256 13598e30f5ff826e2df24e851a1149449d0839a7c53639cc19522e47852a2d36
-AUX openais-0.80.3-Makefile-ARCH.patch 329 RMD160 1ddcc3071f0df052efeb2f5337b4e8207cd7c87a SHA1 d3f4ca12bb1cb9a5b75309a39a6420041450156f SHA256 4c1a2ee61084d90615e97e89e1cfcd9e94c69230997230f4282363545b17429a
-AUX openais-0.80.3-Makefile-LIBDIR.patch 641 RMD160 cbd1432f056ef8e8e051c06fdbe1452d3b821720 SHA1 5551aefb26d057f8e9e6810712ebc74a98a064eb SHA256 a54492cbc614e569c757791f2eae4fa05f4a1d5b2da510c58cce88580589bc2d
-AUX openais-0.80.3-Makefile-VARS.patch 3522 RMD160 bafc07d33459d755e872f0504503a2a8803fa947 SHA1 bed04e626b700a33c113076801128e018e5568d5 SHA256 81310d0d9a4ffbd5b7610405dfbd086be640e6ccf578419906cb7dc5d59fc236
-AUX openais-0.80.3-Makefile.inc-FLAGS.patch 477 RMD160 77807cfabfbab634262ccb1d38d533fdebd91cbe SHA1 1ec9c03a78b206a25cee92220517e125ccabfbfe SHA256 04f0abeb15de7a82c99313177a6d27a9e9c5e5aa9b39fe8b5df3df8b113be93f
-AUX openais-0.80.3-Makefile.inc-VARS.patch 471 RMD160 d1f46122bbcfc66cbd79034064a5b6e7e423ec9f SHA1 3cf1572b0e68ef09591dfc118eb62476124dbad5 SHA256 8862d6b35ed0589ef44d7793d67d5836c8fdd5bba9870dce17759611ad2c48b1
-AUX openais-0.80.3-r1661.patch 201387 RMD160 3fd91da4032d16e2ccbb6bf85528bbfe1058af3f SHA1 2697236f044e988110639591b8f7fc4c947eb88c SHA256 3d238a0f97296f0e0280c5a9c3a3793ddf880107a587616098ff0bd18bb46d9a
-AUX openais.conf 586 RMD160 568405f8e0eb839361c3018369a1e5244589da26 SHA1 42f1deabf9af30bbdd29ca3b34cf83ae33d77bc1 SHA256 18e9290eca7bc28e2d99e62148deac9e0c45659c381b64c990d6354b06804191
-DIST openais-0.80.3.tar.gz 478936 RMD160 5c8643b7cb9ed15d18adaf02e9a4ca1e22480325 SHA1 4a176a59008486fde74f532738db422828298af2 SHA256 eeefdab923a2141d2921c0e94006c5e7101764919ae8eb880deaec2295ff5866
-DIST openais-0.82.tar.gz 556910 RMD160 018110f43a73544719148306ed5913174851bed7 SHA1 1e48e94b0371a9badf430ceb0024b266a94627d1 SHA256 9eab207260e8d476e841eb83930f9e20c0092f524b579f9344b98f35c857b498
-EBUILD openais-0.80.3-r1.ebuild 2346 RMD160 3913749669de7c89810ccaae47e1d2c1f728c1fd SHA1 87bd1c9b4d3f489624ced0ef18517a674e72657d SHA256 a4afc638e52e5278e45331395b2904fb2bf00531a4b7e31d279daa7eda7143c2
-EBUILD openais-0.82.ebuild 2068 RMD160 deec273bc649b8944c0f55a5ac521ab9b8b83cd5 SHA1 b6e8db37893d47dd0dccd4d63500d4ec10a204c0 SHA256 d225aa2ae961363052525a145cdc01a407e6efda7b961e11a1b982a057eaf0ed
-MISC ChangeLog 1580 RMD160 7c1d50f38767f30d3ac3db745af50825647c6e38 SHA1 8ffddd1ca23878e8a5e37e3b79e306c9b7f1f0d2 SHA256 d26c7739ebdae4f39cd6e02c2d2fa28b44bb585f41b6228e613cc43767041374
-MISC metadata.xml 948 RMD160 f80004810bbc4b6b0d5d576aa24bc477743362cb SHA1 f44da23c55b7e4dc597c005cd712fd53948d6dab SHA256 f28f29c0afa1ae746a290e6f4694b53b622f5453b9c9024265e26f84fb6e37a6
diff --git a/sys-cluster/openais/files/Makefile-ARCH.patch b/sys-cluster/openais/files/Makefile-ARCH.patch
deleted file mode 100644
index 40ba29051b4d..000000000000
--- a/sys-cluster/openais/files/Makefile-ARCH.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- Makefile.orig 2008-02-14 18:23:15.451804237 +0100
-+++ Makefile 2008-02-14 18:23:36.588373784 +0100
-@@ -39,7 +39,7 @@
- MANDIR=$(PREFIX)/share/man
- ETCDIR=/etc
- LCRSODIR=$(PREFIX)/libexec/lcrso
--ARCH=$(shell uname -p)
-+ARCH=$(shell uname -m)
-
- ifeq (,$(findstring 64,$(ARCH)))
- LIBDIR=$(PREFIX)/lib/openais
diff --git a/sys-cluster/openais/files/Makefile-LIBDIR.patch b/sys-cluster/openais/files/Makefile-LIBDIR.patch
deleted file mode 100644
index 0d9e2b01c763..000000000000
--- a/sys-cluster/openais/files/Makefile-LIBDIR.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- Makefile.orig 2008-02-14 18:56:35.000000000 +0100
-+++ Makefile 2008-02-14 18:56:43.000000000 +0100
-@@ -88,7 +88,6 @@
- mkdir -p $(DESTDIR)$(MANDIR)/man3
- mkdir -p $(DESTDIR)$(MANDIR)/man5
- mkdir -p $(DESTDIR)$(MANDIR)/man8
-- mkdir -p $(DESTDIR)$(ETCDIR)/ld.so.conf.d
-
-
- ln -sf libtotem_pg.so.2.0.0 exec/libtotem_pg.so
-@@ -111,8 +110,6 @@
- fi \
- done
-
-- echo $(LIBDIR) > $(DESTDIR)$(ETCDIR)/ld.so.conf.d/openais-$(ARCH).conf
--
- install -m 755 exec/*lcrso $(DESTDIR)$(LCRSODIR)
- install -m 755 exec/aisexec $(DESTDIR)$(SBINDIR)
- install -m 700 exec/keygen $(DESTDIR)$(SBINDIR)/ais-keygen
diff --git a/sys-cluster/openais/files/Makefile-install.patch b/sys-cluster/openais/files/Makefile-install.patch
deleted file mode 100644
index 29705e2c6c3a..000000000000
--- a/sys-cluster/openais/files/Makefile-install.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- Makefile.orig 2007-12-15 18:41:23.000000000 +0100
-+++ Makefile 2007-12-15 19:03:15.000000000 +0100
-@@ -138,7 +136,6 @@
- install -m 644 exec/service.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
- install -m 644 exec/timer.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
- install -m 644 exec/objdb.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
-- install -m 644 exec/print.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
- install -m 644 exec/config.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
- install -m 644 include/swab.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
- install -m 644 man/*.3 $(DESTDIR)$(MANDIR)/man3
diff --git a/sys-cluster/openais/files/Makefile.inc-FLAGS.patch b/sys-cluster/openais/files/Makefile.inc-FLAGS.patch
deleted file mode 100644
index 8dbecd8920e7..000000000000
--- a/sys-cluster/openais/files/Makefile.inc-FLAGS.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- Makefile.inc.orig 2007-12-15 18:44:00.000000000 +0100
-+++ Makefile.inc 2007-12-15 19:29:01.000000000 +0100
-@@ -44,9 +44,9 @@
-
- # default CFLAGS, LDFLAGS
- #
--CFLAGS =
--LDFLAGS =
--DYFLAGS =
-+CFLAGS ?=
-+LDFLAGS ?=
-+DYFLAGS ?=
-
- # Adding the TS_CLASS flag enables not being scheduled RR
- #CFLAGS += -DTS_CLASS
-@@ -54,7 +54,7 @@
- # build CFLAGS, LDFLAGS
- #
- ifeq (${OPENAIS_BUILD}, RELEASE)
-- CFLAGS += -O3 -Wall
-+ CFLAGS += -Wall
- # -Wstrict-aliasing=2 TODO sameday fix all of these
- ifndef OPENAIS_PROFILE
- CFLAGS += -fomit-frame-pointer
diff --git a/sys-cluster/openais/files/ais.initd b/sys-cluster/openais/files/ais.initd
deleted file mode 100755
index f04a2e751e02..000000000000
--- a/sys-cluster/openais/files/ais.initd
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/sbin/runscript
-# Copyright 1999-2007 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License, v2 or later
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/openais/files/ais.initd,v 1.2 2008/02/14 19:04:19 wschlich Exp $
-
-AISEXEC=/usr/sbin/aisexec
-
-depend() {
- need net
- use logger dns
-}
-
-start() {
- ebegin "Starting ${SVCNAME}"
- start-stop-daemon --start --exec ${AISEXEC}
- eend $?
-}
-
-stop() {
- ebegin "Stopping ${SVCNAME}"
- start-stop-daemon --stop --exec ${AISEXEC}
- eend $?
-}
diff --git a/sys-cluster/openais/files/openais-0.80.3-Makefile-ARCH.patch b/sys-cluster/openais/files/openais-0.80.3-Makefile-ARCH.patch
deleted file mode 100644
index 70464d8ca343..000000000000
--- a/sys-cluster/openais/files/openais-0.80.3-Makefile-ARCH.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- openais-0.80.3/Makefile.orig 2008-02-17 18:30:57.000000000 +0100
-+++ openais-0.80.3/Makefile 2008-02-17 18:31:07.000000000 +0100
-@@ -38,7 +38,7 @@
- MANDIR=/usr/share/man
- ETCDIR=/etc/ais
- LCRSODIR=/usr/libexec/lcrso
--ARCH=$(shell uname -p)
-+ARCH=$(shell uname -m)
-
- ifeq (,$(findstring 64,$(ARCH)))
- LIBDIR=/usr/lib/openais
diff --git a/sys-cluster/openais/files/openais-0.80.3-Makefile-LIBDIR.patch b/sys-cluster/openais/files/openais-0.80.3-Makefile-LIBDIR.patch
deleted file mode 100644
index ca4566d89dc5..000000000000
--- a/sys-cluster/openais/files/openais-0.80.3-Makefile-LIBDIR.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- openais-0.80.3/Makefile.orig 2008-02-17 18:34:13.000000000 +0100
-+++ openais-0.80.3/Makefile 2008-02-17 18:34:58.000000000 +0100
-@@ -80,7 +80,6 @@
- mkdir -p $(DESTDIR)$(MANDIR)/man3
- mkdir -p $(DESTDIR)$(MANDIR)/man5
- mkdir -p $(DESTDIR)$(MANDIR)/man8
-- mkdir -p $(DESTDIR)/etc/ld.so.conf.d
-
- ln -sf libais.so.2.0.0 lib/libais.so
- ln -sf libSaAmf.so.2.0.0 lib/libSaAmf.so
-@@ -158,8 +157,6 @@
- install -m 755 exec/libtotem_pg.a $(DESTDIR)$(LIBDIR)
- endif
-
-- echo $(LIBDIR) > $(DESTDIR)/etc/ld.so.conf.d/openais-$(ARCH).conf
--
- install -m 755 exec/*lcrso $(DESTDIR)$(LCRSODIR)
-
- install -m 755 exec/aisexec $(DESTDIR)$(SBINDIR)
diff --git a/sys-cluster/openais/files/openais-0.80.3-Makefile-VARS.patch b/sys-cluster/openais/files/openais-0.80.3-Makefile-VARS.patch
deleted file mode 100644
index 4b00b2c8eff2..000000000000
--- a/sys-cluster/openais/files/openais-0.80.3-Makefile-VARS.patch
+++ /dev/null
@@ -1,99 +0,0 @@
---- openais-0.80.3/Makefile.orig 2008-11-18 19:38:46.000000000 +0100
-+++ openais-0.80.3/Makefile 2008-11-18 19:42:08.000000000 +0100
-@@ -29,30 +29,30 @@
- # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- # THE POSSIBILITY OF SUCH DAMAGE.
-
--DESTDIR=/usr/local
--SBINDIR=/usr/sbin
--INCLUDEDIR=/usr/include/openais
--INCLUDEDIR_TOTEM=/usr/include/openais/totem
--INCLUDEDIR_LCR=/usr/include/openais/lcr
--INCLUDEDIR_SERVICE=/usr/include/openais/service
--MANDIR=/usr/share/man
-+include Makefile.inc
-+
-+SBINDIR=$(PREFIX)/sbin
-+INCLUDEDIR=$(PREFIX)/include/openais
-+INCLUDEDIR_TOTEM=$(PREFIX)/include/openais/totem
-+INCLUDEDIR_LCR=$(PREFIX)/include/openais/lcr
-+INCLUDEDIR_SERVICE=$(PREFIX)/include/openais/service
-+MANDIR=$(PREFIX)/share/man
- ETCDIR=/etc/ais
--LCRSODIR=/usr/libexec/lcrso
- ARCH=$(shell uname -m)
-
- ifeq (,$(findstring 64,$(ARCH)))
--LIBDIR=/usr/lib/openais
-+LIBDIR=$(PREFIX)/lib/openais
- else
--LIBDIR=/usr/lib64/openais
-+LIBDIR=$(PREFIX)/lib64/openais
- endif
- ifeq (s390,$(ARCH))
--LIBDIR=/usr/lib/openais
-+LIBDIR=$(PREFIX)/lib/openais
- endif
- ifeq (s390x,$(ARCH))
--LIBDIR=/usr/lib64/openais
-+LIBDIR=$(PREFIX)/lib64/openais
- endif
- ifeq (ia64,$(ARCH))
--LIBDIR=/usr/lib/openais
-+LIBDIR=$(PREFIX)/lib/openais
- endif
-
- all:
-@@ -105,29 +105,29 @@
- ln -sf libcfg.so.2.0.0 lib/libcfg.so.2
- ln -sf libtotem_pg.so.2.0.0 exec/libtotem_pg.so.2
-
-- cp -a lib/libais.so $(DESTDIR)$(LIBDIR)
-- cp -a lib/libSaAmf.so $(DESTDIR)$(LIBDIR)
-- cp -a lib/libSaClm.so $(DESTDIR)$(LIBDIR)
-- cp -a lib/libSaCkpt.so $(DESTDIR)$(LIBDIR)
-- cp -a lib/libSaEvt.so $(DESTDIR)$(LIBDIR)
-- cp -a lib/libSaLck.so $(DESTDIR)$(LIBDIR)
-- cp -a lib/libSaMsg.so $(DESTDIR)$(LIBDIR)
-- cp -a lib/libevs.so $(DESTDIR)$(LIBDIR)
-- cp -a lib/libcpg.so $(DESTDIR)$(LIBDIR)
-- cp -a lib/libcfg.so $(DESTDIR)$(LIBDIR)
-- cp -a exec/libtotem_pg.so $(DESTDIR)$(LIBDIR)
--
-- cp -a lib/libais.so.2 $(DESTDIR)$(LIBDIR)
-- cp -a lib/libSaAmf.so.2 $(DESTDIR)$(LIBDIR)
-- cp -a lib/libSaClm.so.2 $(DESTDIR)$(LIBDIR)
-- cp -a lib/libSaCkpt.so.2 $(DESTDIR)$(LIBDIR)
-- cp -a lib/libSaEvt.so.2 $(DESTDIR)$(LIBDIR)
-- cp -a lib/libSaLck.so.2 $(DESTDIR)$(LIBDIR)
-- cp -a lib/libSaMsg.so.2 $(DESTDIR)$(LIBDIR)
-- cp -a lib/libevs.so.2 $(DESTDIR)$(LIBDIR)
-- cp -a lib/libcpg.so.2 $(DESTDIR)$(LIBDIR)
-- cp -a lib/libcfg.so.2 $(DESTDIR)$(LIBDIR)
-- cp -a exec/libtotem_pg.so.2 $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libais.so $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libSaAmf.so $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libSaClm.so $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libSaCkpt.so $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libSaEvt.so $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libSaLck.so $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libSaMsg.so $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libevs.so $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libcpg.so $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libcfg.so $(DESTDIR)$(LIBDIR)
-+ $(CP) -a exec/libtotem_pg.so $(DESTDIR)$(LIBDIR)
-+
-+ $(CP) -a lib/libais.so.2 $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libSaAmf.so.2 $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libSaClm.so.2 $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libSaCkpt.so.2 $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libSaEvt.so.2 $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libSaLck.so.2 $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libSaMsg.so.2 $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libevs.so.2 $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libcpg.so.2 $(DESTDIR)$(LIBDIR)
-+ $(CP) -a lib/libcfg.so.2 $(DESTDIR)$(LIBDIR)
-+ $(CP) -a exec/libtotem_pg.so.2 $(DESTDIR)$(LIBDIR)
-
- install -m 755 lib/libais.so.2.* $(DESTDIR)$(LIBDIR)
- install -m 755 lib/libSaAmf.so.2.* $(DESTDIR)$(LIBDIR)
diff --git a/sys-cluster/openais/files/openais-0.80.3-Makefile.inc-FLAGS.patch b/sys-cluster/openais/files/openais-0.80.3-Makefile.inc-FLAGS.patch
deleted file mode 100644
index 9d41751488a2..000000000000
--- a/sys-cluster/openais/files/openais-0.80.3-Makefile.inc-FLAGS.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- openais-0.80.3/Makefile.inc.orig 2008-02-17 18:39:07.000000000 +0100
-+++ openais-0.80.3/Makefile.inc 2008-02-17 18:39:36.000000000 +0100
-@@ -61,14 +61,14 @@
-
- # default CFLAGS, LDFLAGS
- #
--CFLAGS =
--LDFLAGS =
--DYFLAGS =
-+CFLAGS ?=
-+LDFLAGS ?=
-+DYFLAGS ?=
-
- # build CFLAGS, LDFLAGS
- #
- ifeq (${OPENAIS_BUILD}, RELEASE)
-- CFLAGS += -O3 -Wall
-+ CFLAGS += -Wall
- # -Wstrict-aliasing=2 TODO sameday fix all of these
- ifndef OPENAIS_PROFILE
- CFLAGS += -fomit-frame-pointer
diff --git a/sys-cluster/openais/files/openais-0.80.3-Makefile.inc-VARS.patch b/sys-cluster/openais/files/openais-0.80.3-Makefile.inc-VARS.patch
deleted file mode 100644
index e5c3e4d51251..000000000000
--- a/sys-cluster/openais/files/openais-0.80.3-Makefile.inc-VARS.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- openais-0.80.3/Makefile.inc.orig 2008-11-18 19:31:13.000000000 +0100
-+++ openais-0.80.3/Makefile.inc 2008-11-18 19:32:11.000000000 +0100
-@@ -29,12 +29,17 @@
- # THE POSSIBILITY OF SUCH DAMAGE.
- # Basic OS detection
- #
-+CP=cp
-+DESTDIR=
-+PREFIX=/usr
- UNAME=$(shell uname)
-+LCRSODIR=$(PREFIX)/libexec/lcrso
-
- ifeq "$(UNAME)" "Linux"
- OPENAIS_COMPAT=LINUX
- endif
- ifeq "$(UNAME)" "Darwin"
-+ CP=rsync
- OPENAIS_COMPAT=DARWIN
- endif
- ifneq "" "$(findstring BSD,$(UNAME))"
diff --git a/sys-cluster/openais/files/openais-0.80.3-r1661.patch b/sys-cluster/openais/files/openais-0.80.3-r1661.patch
deleted file mode 100644
index 9aef9687f96e..000000000000
--- a/sys-cluster/openais/files/openais-0.80.3-r1661.patch
+++ /dev/null
@@ -1,6310 +0,0 @@
-diff -uNr openais-0.80.3/CHANGELOG openais-0.80.3-r1661/CHANGELOG
---- openais-0.80.3/CHANGELOG 2007-06-26 13:36:38.000000000 +0200
-+++ openais-0.80.3-r1661/CHANGELOG 2008-11-17 15:54:04.030604165 +0100
-@@ -1,555 +1,4 @@
- ------------------------------------------------------------------------
--r1400 | sdake | 2007-06-26 03:13:19 -0700 (Tue, 26 Jun 2007) | 2 lines
--
--Fix compile warning/error on some platforms.
--
--------------------------------------------------------------------------
--r1396 | sdake | 2007-06-25 01:42:58 -0700 (Mon, 25 Jun 2007) | 2 lines
--
--Update testckpt program to properly test the checkpoint system.
--
--------------------------------------------------------------------------
--r1395 | sdake | 2007-06-25 01:40:45 -0700 (Mon, 25 Jun 2007) | 3 lines
--
--Fix problem where sometimes when a checkpoint section is expired the timer
--also fires at the same time resulting in a warning.
--
--------------------------------------------------------------------------
--r1394 | sdake | 2007-06-24 20:11:10 -0700 (Sun, 24 Jun 2007) | 2 lines
--
--Add cpg_context_get and cpg_context_set man pages.
--
--------------------------------------------------------------------------
--r1393 | sdake | 2007-06-24 20:09:31 -0700 (Sun, 24 Jun 2007) | 2 lines
--
--Add cpg_context_get and cpg_context_set api calls.
--
--------------------------------------------------------------------------
--r1392 | sdake | 2007-06-24 20:07:30 -0700 (Sun, 24 Jun 2007) | 2 lines
--
--install timer.h file for external service handlers.
--
--------------------------------------------------------------------------
--r1390 | sdake | 2007-06-24 19:52:58 -0700 (Sun, 24 Jun 2007) | 2 lines
--
--Tests cpg_local_get functionality.
--
--------------------------------------------------------------------------
--r1389 | sdake | 2007-06-24 19:22:54 -0700 (Sun, 24 Jun 2007) | 3 lines
--
--Track timers based upon nanoseconds since epoch and add absolute and relative
--timers.
--
--------------------------------------------------------------------------
--r1387 | sdake | 2007-06-23 23:33:09 -0700 (Sat, 23 Jun 2007) | 2 lines
--
--Update all copyright and email addresses in source tree.
--
--------------------------------------------------------------------------
--r1382 | sdake | 2007-06-12 10:43:15 -0700 (Tue, 12 Jun 2007) | 2 lines
--
--Add cpg_local_get to get the local node id.
--
--------------------------------------------------------------------------
--r1372 | sdake | 2007-05-17 13:37:43 -0700 (Thu, 17 May 2007) | 3 lines
--
--on 32 bit platforms, the message source conn info could have uninitialized
--values.
--
--------------------------------------------------------------------------
--r1369 | sdake | 2007-04-24 16:11:56 -0700 (Tue, 24 Apr 2007) | 4 lines
--
--This bug was posted via bugzilla and a patch was attached. Essentially
--the checkpoint retention duration was being verified on a checkpoint
--open which should be ignored.
--
--------------------------------------------------------------------------
--r1368 | sdake | 2007-04-24 16:11:08 -0700 (Tue, 24 Apr 2007) | 2 lines
--
--Fix section iteration size comparison
--
--------------------------------------------------------------------------
--r1364 | sdake | 2007-04-24 16:05:56 -0700 (Tue, 24 Apr 2007) | 2 lines
--
--Have totemsrp use the proper ring id file.
--
--------------------------------------------------------------------------
--r1363 | sdake | 2007-04-24 16:05:38 -0700 (Tue, 24 Apr 2007) | 2 lines
--
--Fix references to evs_initialize in cpg_initialize man pages
--
--------------------------------------------------------------------------
--r1357 | sdake | 2007-03-21 13:07:58 -0700 (Wed, 21 Mar 2007) | 2 lines
--
--Fix some type errors within the AMF service.
--
--------------------------------------------------------------------------
--r1356 | sdake | 2007-03-21 13:07:25 -0700 (Wed, 21 Mar 2007) | 2 lines
--
--Patch to fix some documentation errors relating to CPG service.
--
--------------------------------------------------------------------------
--r1344 | sdake | 2006-12-18 09:08:02 -0700 (Mon, 18 Dec 2006) | 2 lines
--
--Fix compile warnings about unused variables.
--
--------------------------------------------------------------------------
--r1340 | sdake | 2006-12-18 08:02:48 -0700 (Mon, 18 Dec 2006) | 2 lines
--
--Fix unaligned access in totem ip on IA64 architecture.
--
--------------------------------------------------------------------------
--r1339 | sdake | 2006-12-12 11:54:51 -0700 (Tue, 12 Dec 2006) | 2 lines
--
--Convert some spaces to tabs.
--
--------------------------------------------------------------------------
--r1338 | sdake | 2006-12-12 11:54:25 -0700 (Tue, 12 Dec 2006) | 2 lines
--
--Destroy mutex after it is done being used instead of before it is done being used.
--
--------------------------------------------------------------------------
--r1337 | sdake | 2006-12-12 11:45:25 -0700 (Tue, 12 Dec 2006) | 2 lines
--
--Remove return and use pthread_exit instead.
--
--------------------------------------------------------------------------
--r1334 | sdake | 2006-12-12 11:38:51 -0700 (Tue, 12 Dec 2006) | 2 lines
--
--Backport comparison of 0 and NULL.
--
--------------------------------------------------------------------------
--r1330 | sdake | 2006-12-12 11:13:54 -0700 (Tue, 12 Dec 2006) | 2 lines
--
--Fix argument off by one in instiation of AMF components.
--
--------------------------------------------------------------------------
--r1329 | sdake | 2006-12-12 11:11:07 -0700 (Tue, 12 Dec 2006) | 2 lines
--
--Remove unnecessary strdup.
--
--------------------------------------------------------------------------
--r1325 | sdake | 2006-12-12 10:56:17 -0700 (Tue, 12 Dec 2006) | 2 lines
--
--Change rundir to /var/lib/openais.
--
--------------------------------------------------------------------------
--r1323 | pcaulfie | 2006-12-12 10:45:50 -0700 (Tue, 12 Dec 2006) | 2 lines
--
--Fix ordering of CPG join messages.
--
--------------------------------------------------------------------------
--r1319 | sdake | 2006-12-05 09:34:10 -0700 (Tue, 05 Dec 2006) | 2 lines
--
--Increase size of default outbound message queue.
--
--------------------------------------------------------------------------
--r1316 | sdake | 2006-11-29 14:30:58 -0700 (Wed, 29 Nov 2006) | 2 lines
--
--Improvements on segfault logging.
--
--------------------------------------------------------------------------
--r1315 | sdake | 2006-11-29 13:56:17 -0700 (Wed, 29 Nov 2006) | 2 lines
--
--Fix compile error in libcpg
--
--------------------------------------------------------------------------
--r1314 | sdake | 2006-11-29 13:47:40 -0700 (Wed, 29 Nov 2006) | 2 lines
--
--Change rundir to /var/openais otherwise core files and ringid file is deleted
--
--------------------------------------------------------------------------
--r1313 | sdake | 2006-11-29 13:35:32 -0700 (Wed, 29 Nov 2006) | 2 lines
--
--Flow control fixes for the CPG service.
--
--------------------------------------------------------------------------
--r1312 | fthomas | 2006-11-23 02:10:19 -0700 (Thu, 23 Nov 2006) | 1 line
--
--correct incorrect commit that must use SA_AIS_ERR_LIBRARY instead of ERR_LIBRARY
--------------------------------------------------------------------------
--r1311 | fthomas | 2006-11-23 01:49:21 -0700 (Thu, 23 Nov 2006) | 1 line
--
--handle case where POLLHUP or POLLERR are not supported by OS
--------------------------------------------------------------------------
--r1309 | fthomas | 2006-11-16 10:36:52 -0700 (Thu, 16 Nov 2006) | 1 line
--
--set default downcheck value to 1000ms
--------------------------------------------------------------------------
--r1308 | fthomas | 2006-11-16 10:34:44 -0700 (Thu, 16 Nov 2006) | 1 line
--
--remove invalid code / warnings detected by Intel compiler
--------------------------------------------------------------------------
--r1307 | sdake | 2006-11-15 00:23:10 -0700 (Wed, 15 Nov 2006) | 2 lines
--
--Remove flow control compile warning.
--
--------------------------------------------------------------------------
--r1306 | sdake | 2006-11-15 00:21:02 -0700 (Wed, 15 Nov 2006) | 2 lines
--
--Make clean for makefiles improvement to actually remove all files.
--
--------------------------------------------------------------------------
--r1305 | sdake | 2006-11-15 00:19:37 -0700 (Wed, 15 Nov 2006) | 2 lines
--
--Set scheduler SCHED_RR to max priority available in the system.
--
--------------------------------------------------------------------------
--r1300 | sdake | 2006-11-13 10:38:13 -0700 (Mon, 13 Nov 2006) | 2 lines
--
--Improve behavior of flow control of CPG service during configuration changes.
--
--------------------------------------------------------------------------
--r1296 | sdake | 2006-11-09 05:34:08 -0700 (Thu, 09 Nov 2006) | 2 lines
--
--Remove compile warnings.
--
--------------------------------------------------------------------------
--r1295 | sdake | 2006-11-09 05:26:56 -0700 (Thu, 09 Nov 2006) | 5 lines
--
--the totem membership protocol was changed to match specificatoins. The sending
--join messages now use the local seq id of he ring instead of the maximum seqidsrreceived. This resuls in running of the mp5 test for several hours. Also
--the consensus timeout was increased to allow for the membership protocol to
--form a proper membership in network overload situations.
--
--------------------------------------------------------------------------
--r1294 | sdake | 2006-11-08 18:33:06 -0700 (Wed, 08 Nov 2006) | 3 lines
--
--Modify location of ringid file and create and chdir to
--/var/run/openais directory so cores are saved there.
--
--------------------------------------------------------------------------
--r1293 | sdake | 2006-11-08 14:48:20 -0700 (Wed, 08 Nov 2006) | 2 lines
--
--Flush output of debug messages on exit or segv.
--
--------------------------------------------------------------------------
--r1288 | sdake | 2006-11-04 15:22:02 -0700 (Sat, 04 Nov 2006) | 2 lines
--
--Ported revision 1287 - updated README.devmap
--
--------------------------------------------------------------------------
--r1286 | sdake | 2006-11-03 16:48:53 -0700 (Fri, 03 Nov 2006) | 3 lines
--
--Fix problem where checkpoints can't be written afer an unlink opeation occurs
--and a new node is started.
--
--------------------------------------------------------------------------
--r1284 | sdake | 2006-10-24 13:31:15 -0700 (Tue, 24 Oct 2006) | 3 lines
--
--Checkpoint section variables were not properly initialized resulting in
--segfaults.
--
--------------------------------------------------------------------------
--r1283 | sdake | 2006-10-24 08:39:45 -0700 (Tue, 24 Oct 2006) | 2 lines
--
--Fix memory leaks.
--
--------------------------------------------------------------------------
--r1282 | sdake | 2006-10-24 04:28:18 -0700 (Tue, 24 Oct 2006) | 2 lines
--
--New generation checkpoint synchronization state machine.
--
--------------------------------------------------------------------------
--r1279 | sdake | 2006-10-23 21:08:57 -0700 (Mon, 23 Oct 2006) | 2 lines
--
--Call abort in synchronization service when processing is interrupted.
--
--------------------------------------------------------------------------
--r1278 | sdake | 2006-10-23 20:48:41 -0700 (Mon, 23 Oct 2006) | 2 lines
--
--Patch testckpt to use proper section id size.
--
--------------------------------------------------------------------------
--r1277 | sdake | 2006-10-23 20:36:40 -0700 (Mon, 23 Oct 2006) | 2 lines
--
--Replace spaces with tabs on two lines.
--
--------------------------------------------------------------------------
--r1276 | sdake | 2006-10-23 20:29:12 -0700 (Mon, 23 Oct 2006) | 2 lines
--
--remove makefile debug added accidentally in last patch
--
--------------------------------------------------------------------------
--r1275 | sdake | 2006-10-23 20:28:26 -0700 (Mon, 23 Oct 2006) | 2 lines
--
--pthread_mutex_destroy cleanup patch from Fabien
--
--------------------------------------------------------------------------
--r1271 | sdake | 2006-10-19 13:38:22 -0700 (Thu, 19 Oct 2006) | 2 lines
--
--Fix errors in ia64 alignment.
--
--------------------------------------------------------------------------
--r1270 | sdake | 2006-10-19 10:43:39 -0700 (Thu, 19 Oct 2006) | 2 lines
--
--Resolve IPC segfault.
--
--------------------------------------------------------------------------
--r1269 | sdake | 2006-10-18 16:10:34 -0700 (Wed, 18 Oct 2006) | 2 lines
--
--Specific stack size for ia64 architectures required.
--
--------------------------------------------------------------------------
--r1268 | sdake | 2006-10-18 16:09:59 -0700 (Wed, 18 Oct 2006) | 3 lines
--
--Align totem deliveries on 4 byte boudnaries to avoid segfaults and warnings
--on sparc and ia64 architectures.
--
--------------------------------------------------------------------------
--r1267 | sdake | 2006-10-16 09:07:01 -0700 (Mon, 16 Oct 2006) | 2 lines
--
--Rework of the checkpoint synchronization system.
--
--------------------------------------------------------------------------
--r1265 | sdake | 2006-10-12 15:24:36 -0700 (Thu, 12 Oct 2006) | 2 lines
--
--Only originate one regular token.
--
--------------------------------------------------------------------------
--r1264 | sdake | 2006-10-12 15:23:26 -0700 (Thu, 12 Oct 2006) | 3 lines
--
--If the failed_list has zero entries, don't add it as an iovector in join
--messages.
--
--------------------------------------------------------------------------
--r1263 | sdake | 2006-10-12 15:22:53 -0700 (Thu, 12 Oct 2006) | 3 lines
--
--Use the fullset variable instead of the local variable j to make easier code
--reading.
--
--------------------------------------------------------------------------
--r1262 | sdake | 2006-10-12 15:22:09 -0700 (Thu, 12 Oct 2006) | 2 lines
--
--Set the ring sequence number according to the totem specificatoins.
--
--------------------------------------------------------------------------
--r1261 | sdake | 2006-10-12 15:21:42 -0700 (Thu, 12 Oct 2006) | 2 lines
--
--Cleanup the way the memb_index variable is handled in the commit token
--
--------------------------------------------------------------------------
--r1260 | sdake | 2006-10-12 15:21:04 -0700 (Thu, 12 Oct 2006) | 3 lines
--
--Allocate the retransmission token in instance_initialize instead of
--totemsrp_initialize
--
--------------------------------------------------------------------------
--r1258 | sdake | 2006-10-09 00:43:45 -0700 (Mon, 09 Oct 2006) | 2 lines
--
--Accept commit token in proper cases.
--
--------------------------------------------------------------------------
--r1257 | sdake | 2006-10-09 00:43:04 -0700 (Mon, 09 Oct 2006) | 2 lines
--
--Fix subset operation to work properly.
--
--------------------------------------------------------------------------
--r1256 | sdake | 2006-10-09 00:42:36 -0700 (Mon, 09 Oct 2006) | 2 lines
--
--Remove some extra debug logging output when in DEBUG mode that is not needed.
--
--------------------------------------------------------------------------
--r1252 | sdake | 2006-10-04 21:11:40 -0700 (Wed, 04 Oct 2006) | 2 lines
--
--Print out left members properly from totemsrp.
--
--------------------------------------------------------------------------
--r1248 | sdake | 2006-09-28 11:49:00 -0700 (Thu, 28 Sep 2006) | 2 lines
--
--Set the proper size of responses to cpg_mcast messages.
--
--------------------------------------------------------------------------
--r1246 | sdake | 2006-09-27 15:57:03 -0700 (Wed, 27 Sep 2006) | 2 lines
--
--Flow control part 2 patch.
--
--------------------------------------------------------------------------
--r1245 | sdake | 2006-09-25 02:41:57 -0700 (Mon, 25 Sep 2006) | 2 lines
--
--Add cpgbench tool and group wide flow control services for the cpg service.
--
--------------------------------------------------------------------------
--r1230 | fthomas | 2006-08-28 03:12:25 -0700 (Mon, 28 Aug 2006) | 1 line
--
--add missing include for assert
--------------------------------------------------------------------------
--r1224 | sdake | 2006-08-21 21:40:26 -0700 (Mon, 21 Aug 2006) | 2 lines
--
--Fix up printing of SaNameT and mar_name_t in case it is not null terminated.
--
--------------------------------------------------------------------------
--r1223 | sdake | 2006-08-21 21:39:08 -0700 (Mon, 21 Aug 2006) | 2 lines
--
--Fix checkpoints with write size of zero to return INVALID PARAM error code
--
--------------------------------------------------------------------------
--r1217 | sdake | 2006-08-15 21:35:15 -0700 (Tue, 15 Aug 2006) | 2 lines
--
--Remove invalid commit.
--
--------------------------------------------------------------------------
--r1213 | sdake | 2006-08-15 21:22:30 -0700 (Tue, 15 Aug 2006) | 2 lines
--
--Return ERR_TIMEOUT on zero timeout parameter to saEvtEventChannelOpen.
--
--------------------------------------------------------------------------
--r1212 | sdake | 2006-08-15 18:22:40 -0700 (Tue, 15 Aug 2006) | 2 lines
--
--Return ERR_TIMEOUT if timeout parameter is zero in saEvtChannelOpen.
--
--------------------------------------------------------------------------
--r1210 | sdake | 2006-08-15 17:45:14 -0700 (Tue, 15 Aug 2006) | 2 lines
--
--Add more scalability by adding a new send_join parameter to openais.
--
--------------------------------------------------------------------------
--r1209 | sdake | 2006-08-15 17:37:54 -0700 (Tue, 15 Aug 2006) | 2 lines
--
--Remove warning about assert being undefined by including assert.h.
--
--------------------------------------------------------------------------
--r1205 | sdake | 2006-08-15 17:03:45 -0700 (Tue, 15 Aug 2006) | 2 lines
--
--Fix hash collision in cpg service.
--
--------------------------------------------------------------------------
--r1204 | sdake | 2006-08-15 16:57:44 -0700 (Tue, 15 Aug 2006) | 2 lines
--
--Install proper shared object files for clm service.
--
--------------------------------------------------------------------------
--r1203 | sdake | 2006-08-15 16:55:44 -0700 (Tue, 15 Aug 2006) | 2 lines
--
--Improve recovery state data output.
--
--------------------------------------------------------------------------
--r1202 | sdake | 2006-08-15 16:53:01 -0700 (Tue, 15 Aug 2006) | 3 lines
--
--Improve gather notifications so user knows where gather was entered from. This
--is useful for debugging.
--
--------------------------------------------------------------------------
--r1201 | sdake | 2006-08-15 16:51:56 -0700 (Tue, 15 Aug 2006) | 2 lines
--
--This cleans up some of the error reporting of the testckpt tool.
--
--------------------------------------------------------------------------
--r1198 | sdake | 2006-08-08 08:54:02 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Use braces in the totemip code.
--
--------------------------------------------------------------------------
--r1197 | sdake | 2006-08-08 08:52:49 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Ensure compile with GIVE_INFO gives proper information.
--
--------------------------------------------------------------------------
--r1196 | sdake | 2006-08-08 08:52:05 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Resend the commit token if it is lost
--
--------------------------------------------------------------------------
--r1195 | sdake | 2006-08-08 08:51:03 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Move SYNC output data to DEBUG mode.
--
--------------------------------------------------------------------------
--r1194 | sdake | 2006-08-08 08:49:31 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Give better user error messages when token is lost.
--
--------------------------------------------------------------------------
--r1193 | sdake | 2006-08-08 08:41:44 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Fix checkpoint synchronization.
--
--------------------------------------------------------------------------
--r1192 | sdake | 2006-08-08 08:41:22 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Move notice debug outputs in checkpoint service to debug outputs.
--
--------------------------------------------------------------------------
--r1191 | sdake | 2006-08-08 08:40:05 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Use GNU formatting for printf output
--
--------------------------------------------------------------------------
--r1190 | sdake | 2006-08-08 08:38:08 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Clean header includes from swab code.
--
--------------------------------------------------------------------------
--r1189 | sdake | 2006-08-08 08:35:42 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Fix endian marshalling in YKD service.
--
--------------------------------------------------------------------------
--r1188 | sdake | 2006-08-08 08:35:00 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Cleanup lcr_ifact code.
--
--------------------------------------------------------------------------
--r1187 | sdake | 2006-08-08 08:34:36 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Fix endian marshalling for eventing service.
--
--------------------------------------------------------------------------
--r1186 | sdake | 2006-08-08 08:34:10 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Add endian conversion for evs service.
--
--------------------------------------------------------------------------
--r1185 | sdake | 2006-08-08 08:33:13 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Fix marshalling with CPG service.
--
--------------------------------------------------------------------------
--r1184 | sdake | 2006-08-08 08:32:33 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Fix endian marshalling with clm service.
--
--------------------------------------------------------------------------
--r1183 | sdake | 2006-08-08 08:32:04 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Set proper socket for IPV6 membership add
--
--------------------------------------------------------------------------
--r1182 | sdake | 2006-08-08 08:30:40 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Fix processor count in EVS service so EVS service operates properly.
--
--------------------------------------------------------------------------
--r1181 | sdake | 2006-08-08 08:27:05 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--fix ckpt-rd and ckpt-wr test applications
--
--------------------------------------------------------------------------
--r1180 | sdake | 2006-08-08 08:23:33 -0700 (Tue, 08 Aug 2006) | 2 lines
--
--Use worker threads for debug output
--
--------------------------------------------------------------------------
--r1179 | sdake | 2006-08-07 15:50:58 -0700 (Mon, 07 Aug 2006) | 2 lines
--
--Unlink header prototype incorrect.
--
--------------------------------------------------------------------------
--r1173 | sdake | 2006-08-02 22:31:34 -0700 (Wed, 02 Aug 2006) | 2 lines
--
--Ensure sync_activate is only called once
--
--------------------------------------------------------------------------
--r1155 | sdake | 2006-07-24 22:18:52 -0700 (Mon, 24 Jul 2006) | 2 lines
--
--Added whitetank branch.
--
--------------------------------------------------------------------------
--r1153 | sdake | 2006-07-23 18:36:18 -0700 (Sun, 23 Jul 2006) | 2 lines
--
--Release of version 0.80 First Whitetank release
--
--------------------------------------------------------------------------
- r1152 | sdake | 2006-07-23 18:34:17 -0700 (Sun, 23 Jul 2006) | 2 lines
-
- Allow build type of COVERAGE for code coverage analysis
-diff -uNr openais-0.80.3/Makefile openais-0.80.3-r1661/Makefile
---- openais-0.80.3/Makefile 2007-06-25 05:07:30.000000000 +0200
-+++ openais-0.80.3-r1661/Makefile 2008-11-17 15:54:04.030604165 +0100
-@@ -196,4 +196,4 @@
- install -m 644 man/*.8 $(DESTDIR)$(MANDIR)/man8
-
- doxygen:
-- doxygen
-+ mkdir -p doc/api && doxygen
-diff -uNr openais-0.80.3/README.devmap openais-0.80.3-r1661/README.devmap
---- openais-0.80.3/README.devmap 2006-11-04 23:22:02.000000000 +0100
-+++ openais-0.80.3-r1661/README.devmap 2008-11-17 15:54:04.030604165 +0100
-@@ -1221,3 +1221,91 @@
- for other people.
-
- Have fun!
-+
-+---
-+IPC state machine
-+
-+lib_exit_fn may not use openais_response_send or openais_dispatch_send
-+
-+state INITIALIZING
-+------------------
-+receive response end of a library request
-+ create conn_io data structure
-+ if the connection's UID/GID is invalid
-+ conn_io_disconnect
-+ send response to conn_io with conn_io's address
-+ set conn_io refcnt to 1
-+
-+receive dispatch end of a library connection with response end conn_io address
-+ find matching connection
-+ if the connection's UID/GID is invalid
-+ conn_io_disconnect
-+ send reponse to conn_io
-+ create conn_info data structure
-+ if conn_io response end is valid
-+ store dispatch end of conn_io into conn_info data structure
-+ store response conn_io into conn_info data structure
-+ set conn_io refcnt to 1
-+ call lib_init_fn for service type
-+ set conn_info refcnt to 1
-+ set state to ACTIVE
-+
-+event response disconnects and conn_info not bound
-+ disconnect connection
-+event receive connects and response connection not found
-+ disconnect dispatch
-+event no dispatch connection within 5 seconds
-+ disconnect dispatch
-+event disconnect_request
-+ set state to DISCONNECT_REQUESTED
-+ decrement response conn_io refcnt by 1
-+ decrement dispatch conn_io refcnt by 1
-+
-+state ACTIVE
-+------------
-+do {
-+ increment conn_io refcnt by 1
-+ poll
-+ if invalid poll set state internal_disconnect_request
-+ dispatch library handler functions
-+ flush any output that can be flushed
-+ decrement conn_io refcnt by 1
-+ if state set to DISCONNECT_REQUESTED
-+ execute algorithm for disconnect requested state
-+}
-+
-+event internal_disconnect_request
-+ set state to DISCONNECT_REQUESTED
-+ decrement response conn_io refcnt by 1
-+ decrement dispatch conn_io refcnt by 1
-+event openais_conn_refcnt_increment
-+ increase conn_info reference count by 1
-+event openais_conn_refcnt_decrement
-+ decrease conn_info reference count by 1
-+
-+state DISCONNECT_REQUESTED
-+--------------------------
-+if this is the response conn_io data
-+do {
-+ if response conn_io refcnt is 0
-+ destroy conn_io data structure
-+ decrement conn_info reference count
-+ exit thread
-+ sleep configurable short duration
-+}
-+
-+if this is the dispatch conn_io data
-+do {
-+ if dispatch conn_io refcnt is 0
-+ call lib_exit_fn
-+ if successful
-+ destroy conn_io data structure
-+ decrement conn_info reference count
-+ exit thread
-+ sleep configurable short duration
-+}
-+
-+when conn_info reference count equals 0
-+ free conn_info data structure
-+
-+
-diff -uNr openais-0.80.3/exec/amf.c openais-0.80.3-r1661/exec/amf.c
---- openais-0.80.3/exec/amf.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/amf.c 2008-11-17 15:54:02.390605772 +0100
-@@ -480,7 +480,7 @@
- res_lib.header.id = MESSAGE_RES_AMF_COMPONENTREGISTER;
- res_lib.header.size = sizeof (struct res_lib_amf_componentregister);
- res_lib.header.error = error;
-- openais_conn_send_response (
-+ openais_response_send (
- comp->conn, &res_lib, sizeof (struct res_lib_amf_componentregister));
- }
- }
-@@ -544,7 +544,7 @@
- res_lib.header.id = MESSAGE_RES_AMF_RESPONSE;
- res_lib.header.size = sizeof (struct res_lib_amf_response);
- res_lib.header.error = retval;
-- openais_conn_send_response (comp->conn, &res_lib, sizeof (res_lib));
-+ openais_response_send (comp->conn, &res_lib, sizeof (res_lib));
- }
- }
-
-@@ -583,7 +583,7 @@
- res_lib.header.id = MESSAGE_RES_AMF_COMPONENTREGISTER;
- res_lib.header.size = sizeof (struct res_lib_amf_componentregister);
- res_lib.header.error = SA_AIS_ERR_INVALID_PARAM;
-- openais_conn_send_response (
-+ openais_response_send (
- conn, &res_lib, sizeof (struct res_lib_amf_componentregister));
- }
- }
-@@ -658,12 +658,13 @@
- res_lib.header.id = MESSAGE_RES_AMF_HEALTHCHECKSTART;
- res_lib.header.size = sizeof (res_lib);
- res_lib.header.error = error;
-- openais_conn_send_response (conn, &res_lib,
-+ openais_response_send (conn, &res_lib,
- sizeof (struct res_lib_amf_healthcheckstart));
- }
-
- static void message_handler_req_lib_amf_healthcheckconfirm (
-- void *conn, void *msg)
-+ void *conn,
-+ void *msg)
- {
- struct req_lib_amf_healthcheckconfirm *req_lib = msg;
- struct res_lib_amf_healthcheckconfirm res_lib;
-@@ -683,7 +684,7 @@
- res_lib.header.id = MESSAGE_RES_AMF_HEALTHCHECKCONFIRM;
- res_lib.header.size = sizeof (res_lib);
- res_lib.header.error = error;
-- openais_conn_send_response (conn, &res_lib, sizeof (res_lib));
-+ openais_response_send (conn, &res_lib, sizeof (res_lib));
- }
-
- static void message_handler_req_lib_amf_healthcheckstop (
-@@ -706,7 +707,7 @@
- res_lib.header.id = MESSAGE_RES_AMF_HEALTHCHECKSTOP;
- res_lib.header.size = sizeof (res_lib);
- res_lib.header.error = error;
-- openais_conn_send_response (conn, &res_lib, sizeof (res_lib));
-+ openais_response_send (conn, &res_lib, sizeof (res_lib));
- }
-
- static void message_handler_req_lib_amf_hastateget (void *conn, void *msg)
-@@ -732,7 +733,7 @@
- res_lib.header.size = sizeof (struct res_lib_amf_hastateget);
- res_lib.header.error = error;
-
-- openais_conn_send_response (conn, &res_lib,
-+ openais_response_send (conn, &res_lib,
- sizeof (struct res_lib_amf_hastateget));
- }
-
-@@ -788,7 +789,7 @@
- if (amfProtectionGroup) {
- res_lib_amf_protectiongrouptrack.header.error = SA_AIS_OK;
- }
-- openais_conn_send_response (conn, &res_lib_amf_protectiongrouptrack,
-+ openais_response_send (conn, &res_lib_amf_protectiongrouptrack,
- sizeof (struct res_lib_amf_protectiongrouptrack));
-
- if (amfProtectionGroup &&
-@@ -848,7 +849,7 @@
- if (track) {
- res_lib_amf_protectiongrouptrackstop.header.error = SA_AIS_OK;
- }
-- openais_conn_send_response (conn, &res_lib_amf_protectiongrouptrackstop,
-+ openais_response_send (conn, &res_lib_amf_protectiongrouptrackstop,
- sizeof (struct res_lib_amf_protectiongrouptrackstop));
-
- #endif
-@@ -896,7 +897,7 @@
- res_lib.header.size = sizeof (struct res_lib_amf_componenterrorreport);
- res_lib.header.id = MESSAGE_RES_AMF_COMPONENTERRORREPORT;
- res_lib.header.error = SA_AIS_ERR_NOT_EXIST;
-- openais_conn_send_response (conn, &res_lib,
-+ openais_response_send (conn, &res_lib,
- sizeof (struct res_lib_amf_componenterrorreport));
- }
- }
-@@ -963,7 +964,7 @@
- res_lib.header.id = MESSAGE_RES_AMF_RESPONSE;
- res_lib.header.size = sizeof (struct res_lib_amf_response);
- res_lib.header.error = retval;
-- openais_conn_send_response (conn, &res_lib, sizeof (res_lib));
-+ openais_response_send (conn, &res_lib, sizeof (res_lib));
- }
- }
-
-diff -uNr openais-0.80.3/exec/amfcomp.c openais-0.80.3-r1661/exec/amfcomp.c
---- openais-0.80.3/exec/amfcomp.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/amfcomp.c 2008-11-17 15:54:02.380604445 +0100
-@@ -547,8 +547,8 @@
- AMF_RESPONSE_COMPONENTTERMINATECALLBACK,
- component_terminate_callback_data);
-
-- openais_conn_send_response (
-- openais_conn_partner_get (comp->conn),
-+ openais_dispatch_send (
-+ comp->conn,
- &res_lib,
- sizeof (struct res_lib_amf_componentterminatecallback));
-
-@@ -817,8 +817,8 @@
-
- res_lib_amf_csiremovecallback.csiFlags = 0;
-
-- openais_conn_send_response (
-- openais_conn_partner_get (comp->conn),
-+ openais_dispatch_send (
-+ comp->conn,
- &res_lib_amf_csiremovecallback,
- sizeof (struct res_lib_amf_csiremovecallback));
- }
-@@ -1011,8 +1011,8 @@
-
- TRACE8 ("sending healthcheck request to component %s",
- res_lib.compName.value);
-- openais_conn_send_response (
-- openais_conn_partner_get (healthcheck->comp->conn),
-+ openais_dispatch_send (
-+ healthcheck->comp->conn,
- &res_lib, sizeof (struct res_lib_amf_healthcheckcallback));
- }
-
-@@ -1117,8 +1117,7 @@
- res_lib->invocation =
- invocation_create (AMF_RESPONSE_CSISETCALLBACK, csi_assignment);
-
-- openais_conn_send_response (
-- openais_conn_partner_get (comp->conn), res_lib, res_lib->header.size);
-+ openais_dispatch_send (comp->conn, res_lib, res_lib->header.size);
-
- free(p);
- }
-@@ -1129,11 +1128,14 @@
-
- if (comp->saAmfCompPresenceState == SA_AMF_PRESENCE_RESTARTING) {
- comp_presence_state_set (comp, SA_AMF_PRESENCE_INSTANTIATED);
-- } else if (comp->saAmfCompPresenceState == SA_AMF_PRESENCE_INSTANTIATING) {
-+ } else
-+ if (comp->saAmfCompPresenceState == SA_AMF_PRESENCE_INSTANTIATING) {
- amf_comp_operational_state_set (comp, SA_AMF_OPERATIONAL_ENABLED);
- comp_presence_state_set (comp, SA_AMF_PRESENCE_INSTANTIATED);
-- }
-- else {
-+ } else
-+ if (comp->saAmfCompPresenceState == SA_AMF_PRESENCE_UNINSTANTIATED) {
-+ return SA_AIS_ERR_INVALID_PARAM;
-+ } else {
- assert (0);
- }
-
-@@ -1151,7 +1153,7 @@
- res_lib.header.size = sizeof (struct res_lib_amf_componenterrorreport);
- res_lib.header.id = MESSAGE_RES_AMF_COMPONENTERRORREPORT;
- res_lib.header.error = SA_AIS_OK;
-- openais_conn_send_response (comp->conn, &res_lib, sizeof (res_lib));
-+ openais_dispatch_send (comp->conn, &res_lib, sizeof (res_lib));
- }
-
- /* report to SU and let it handle the problem */
-diff -uNr openais-0.80.3/exec/cfg.c openais-0.80.3-r1661/exec/cfg.c
---- openais-0.80.3/exec/cfg.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/cfg.c 2008-11-17 15:54:02.370604375 +0100
-@@ -268,7 +268,7 @@
- res_lib_cfg_ringreenable.header.id = MESSAGE_RES_CFG_RINGREENABLE;
- res_lib_cfg_ringreenable.header.size = sizeof (struct res_lib_cfg_ringreenable);
- res_lib_cfg_ringreenable.header.error = SA_AIS_OK;
-- openais_conn_send_response (
-+ openais_response_send (
- req_exec_cfg_ringreenable->source.conn,
- &res_lib_cfg_ringreenable,
- sizeof (struct res_lib_cfg_ringreenable));
-@@ -298,7 +298,7 @@
- res_lib_cfg_ringstatusget.header.error = SA_AIS_OK;
-
- totempg_ifaces_get (
-- this_ip->nodeid,
-+ totempg_my_nodeid_get(),
- interfaces,
- &status,
- &iface_count);
-@@ -312,7 +312,7 @@
- strcpy ((char *)&res_lib_cfg_ringstatusget.interface_name[i],
- totem_ip_string);
- }
-- openais_conn_send_response (
-+ openais_response_send (
- conn,
- &res_lib_cfg_ringstatusget,
- sizeof (struct res_lib_cfg_ringstatusget));
-diff -uNr openais-0.80.3/exec/ckpt.c openais-0.80.3-r1661/exec/ckpt.c
---- openais-0.80.3/exec/ckpt.c 2007-06-26 13:16:50.000000000 +0200
-+++ openais-0.80.3-r1661/exec/ckpt.c 2008-11-17 15:54:02.390605772 +0100
-@@ -1,6 +1,6 @@
- /*
- * Copyright (c) 2003-2006 MontaVista Software, Inc.
-- * Copyright (c) 2006-2007 Red Hat, Inc.
-+ * Copyright (c) 2006-2008 Red Hat, Inc.
- *
- * All rights reserved.
- *
-@@ -65,6 +65,8 @@
- #include "totempg.h"
- #include "print.h"
-
-+#define GLOBALID_CHECKPOINT_NAME "global_checkpoint_name_do_not_use_in_an_application"
-+
- #define CKPT_MAX_SECTION_DATA_SEND (1024*400)
-
- enum ckpt_message_req_types {
-@@ -92,6 +94,9 @@
- };
-
- enum sync_state {
-+ SYNC_STATE_NOT_STARTED,
-+ SYNC_STATE_STARTED,
-+ SYNC_STATE_GLOBALID,
- SYNC_STATE_CHECKPOINT,
- SYNC_STATE_REFCOUNT
- };
-@@ -156,6 +161,7 @@
-
- struct checkpoint {
- struct list_head list;
-+ struct list_head expiry_list;
- mar_name_t name;
- mar_uint32_t ckpt_id;
- mar_ckpt_checkpoint_creation_attributes_t checkpoint_creation_attributes;
-@@ -367,21 +373,27 @@
-
- DECLARE_LIST_INIT(checkpoint_recovery_list_head);
-
-+DECLARE_LIST_INIT(my_checkpoint_expiry_list_head);
-+
- static mar_uint32_t global_ckpt_id = 0;
-
--static enum sync_state my_sync_state;
-+static enum sync_state my_sync_state = SYNC_STATE_NOT_STARTED;
-
- static enum iteration_state my_iteration_state;
-
--static struct list_head *my_iteration_state_checkpoint;
-+static struct list_head *my_iteration_state_checkpoint_list;
-+
-+static struct list_head *my_iteration_state_section_list;
-
--static struct list_head *my_iteration_state_section;
-+static unsigned int my_old_member_list[PROCESSOR_COUNT_MAX];
-
--static unsigned int my_member_list[PROCESSOR_COUNT_MAX];
-+static unsigned int my_old_member_list_entries = 0;
-
--static unsigned int my_member_list_entries = 0;
-+static unsigned int my_should_sync = 0;
-
--static unsigned int my_lowest_nodeid = 0;
-+static unsigned int my_token_callback_active = 0;
-+
-+static void * my_token_callback_handle;
-
- struct checkpoint_cleanup {
- struct list_head list;
-@@ -756,51 +768,11 @@
- mar_refcount_set_t refcount_set[PROCESSOR_COUNT_MAX] __attribute__((aligned(8)));
- };
-
-+static int first_configuration = 1;
-+
- /*
- * Implementation
- */
--
--void clean_checkpoint_list(struct list_head *head)
--{
-- struct list_head *checkpoint_list;
-- struct checkpoint *checkpoint;
--
-- if (list_empty(head)) {
-- log_printf (LOG_LEVEL_DEBUG, "clean_checkpoint_list: List is empty \n");
-- return;
-- }
--
-- checkpoint_list = head->next;
-- while (checkpoint_list != head) {
-- checkpoint = list_entry (checkpoint_list,
-- struct checkpoint, list);
-- assert (checkpoint > 0);
--
-- /*
-- * If checkpoint has been unlinked and this is the last reference, delete it
-- */
-- if (checkpoint->unlinked && checkpoint->reference_count == 0) {
-- log_printf (LOG_LEVEL_DEBUG,"clean_checkpoint_list: deallocating checkpoint %s.\n",
-- checkpoint->name.value);
-- checkpoint_list = checkpoint_list->next;
-- checkpoint_release (checkpoint);
-- continue;
--
-- }
-- else if (checkpoint->reference_count == 0) {
-- log_printf (LOG_LEVEL_DEBUG, "clean_checkpoint_list: Starting timer to release checkpoint %s.\n",
-- checkpoint->name.value);
-- openais_timer_delete (checkpoint->retention_timer);
-- openais_timer_add_duration (
-- checkpoint->checkpoint_creation_attributes.retention_duration,
-- checkpoint,
-- timer_function_retention,
-- &checkpoint->retention_timer);
-- }
-- checkpoint_list = checkpoint_list->next;
-- }
--}
--
- static void ckpt_confchg_fn (
- enum totem_configuration_type configuration_type,
- unsigned int *member_list, int member_list_entries,
-@@ -809,40 +781,45 @@
- struct memb_ring_id *ring_id)
- {
- unsigned int i, j;
-+ unsigned int lowest_nodeid;
-+
-+ memcpy (&my_saved_ring_id, ring_id,
-+ sizeof (struct memb_ring_id));
-+ if (configuration_type != TOTEM_CONFIGURATION_REGULAR) {
-+ return;
-+ }
-+ if (my_sync_state != SYNC_STATE_NOT_STARTED) {
-+ return;
-+ }
-+
-+ my_sync_state = SYNC_STATE_STARTED;
-+
-+ my_should_sync = 0;
-
- /*
-- * Determine lowest nodeid in old regular configuration for the
-- * purpose of executing the synchronization algorithm
-+ * Handle regular configuration
- */
-- if (configuration_type == TOTEM_CONFIGURATION_TRANSITIONAL) {
-- for (i = 0; i < left_list_entries; i++) {
-- for (j = 0; j < my_member_list_entries; j++) {
-- if (left_list[i] == my_member_list[j]) {
-- my_member_list[j] = 0;
-+ lowest_nodeid = 0xffffffff;
-+
-+ for (i = 0; i < my_old_member_list_entries; i++) {
-+ for (j = 0; j < member_list_entries; j++) {
-+ if (my_old_member_list[i] == member_list[j]) {
-+ if (lowest_nodeid > member_list[j]) {
-+ lowest_nodeid = member_list[j];
- }
- }
-- }
-- }
--
-- my_lowest_nodeid = 0xffffffff;
-- for (i = 0; i < my_member_list_entries; i++) {
-- if ((my_member_list[i] != 0) &&
-- (my_member_list[i] < my_lowest_nodeid)) {
--
-- my_lowest_nodeid = my_member_list[i];
- }
- }
-+ memcpy (my_old_member_list, member_list,
-+ sizeof (unsigned int) * member_list_entries);
-+ my_old_member_list_entries = member_list_entries;
-
-- /*
-- * Handle regular configuration
-- */
-- if (configuration_type == TOTEM_CONFIGURATION_REGULAR) {
-- memcpy (my_member_list, member_list,
-- sizeof (unsigned int) * member_list_entries);
-- my_member_list_entries = member_list_entries;
-- memcpy (&my_saved_ring_id, ring_id,
-- sizeof (struct memb_ring_id));
-+ if ((first_configuration) ||
-+ (lowest_nodeid == totempg_my_nodeid_get())) {
-+
-+ my_should_sync = 1;
- }
-+ first_configuration = 0;
- }
-
- static struct checkpoint *checkpoint_find (
-@@ -1057,9 +1034,7 @@
- iovec.iov_base = (char *)&req_exec_ckpt_checkpointclose;
- iovec.iov_len = sizeof (req_exec_ckpt_checkpointclose);
-
-- assert (totempg_groups_mcast_joined (openais_group_handle, &iovec, 1, TOTEMPG_AGREED) == 0);
--
-- return (-1);
-+ return (totempg_groups_mcast_joined (openais_group_handle, &iovec, 1, TOTEMPG_AGREED));
- }
-
- static int ckpt_exec_init_fn (struct objdb_iface_ver0 *objdb)
-@@ -1301,6 +1276,7 @@
- checkpoint->unlinked = 0;
- list_init (&checkpoint->list);
- list_init (&checkpoint->sections_list_head);
-+ list_init (&checkpoint->expiry_list);
- list_add (&checkpoint->list, &checkpoint_list_head);
- checkpoint->reference_count = 1;
- checkpoint->retention_timer = 0;
-@@ -1401,12 +1377,12 @@
- res_lib_ckpt_checkpointopenasync.ckpt_id = checkpoint->ckpt_id;
- }
-
-- openais_conn_send_response (
-+ openais_response_send (
- req_exec_ckpt_checkpointopen->source.conn,
- &res_lib_ckpt_checkpointopenasync,
- sizeof (struct res_lib_ckpt_checkpointopenasync));
-- openais_conn_send_response (
-- openais_conn_partner_get (req_exec_ckpt_checkpointopen->source.conn),
-+ openais_dispatch_send (
-+ req_exec_ckpt_checkpointopen->source.conn,
- &res_lib_ckpt_checkpointopenasync,
- sizeof (struct res_lib_ckpt_checkpointopenasync));
- } else {
-@@ -1420,7 +1396,7 @@
- }
- res_lib_ckpt_checkpointopen.header.error = error;
-
-- openais_conn_send_response (
-+ openais_response_send (
- req_exec_ckpt_checkpointopen->source.conn,
- &res_lib_ckpt_checkpointopen,
- sizeof (struct res_lib_ckpt_checkpointopen));
-@@ -1513,29 +1489,67 @@
-
- }
-
--void timer_function_retention (void *data)
-+int callback_expiry (enum totem_callback_token_type type, void *data)
- {
- struct checkpoint *checkpoint = (struct checkpoint *)data;
-- struct req_exec_ckpt_checkpointretentiondurationexpire req_exec_ckpt_checkpointretentiondurationexpire;
-+ struct req_exec_ckpt_checkpointunlink req_exec_ckpt_checkpointunlink;
- struct iovec iovec;
-+ unsigned int res;
-+ struct list_head *list;
-
-- checkpoint->retention_timer = 0;
-- req_exec_ckpt_checkpointretentiondurationexpire.header.size =
-- sizeof (struct req_exec_ckpt_checkpointretentiondurationexpire);
-- req_exec_ckpt_checkpointretentiondurationexpire.header.id =
-- SERVICE_ID_MAKE (CKPT_SERVICE,
-- MESSAGE_REQ_EXEC_CKPT_CHECKPOINTRETENTIONDURATIONEXPIRE);
-+ list = my_checkpoint_expiry_list_head.next;
-+ while (!list_empty(&my_checkpoint_expiry_list_head)) {
-+ checkpoint = list_entry (list,
-+ struct checkpoint, expiry_list);
-
-- memcpy (&req_exec_ckpt_checkpointretentiondurationexpire.checkpoint_name,
-- &checkpoint->name,
-- sizeof (mar_name_t));
-- req_exec_ckpt_checkpointretentiondurationexpire.ckpt_id =
-- checkpoint->ckpt_id;
-+ if (checkpoint->reference_count == 0) {
-+ req_exec_ckpt_checkpointunlink.header.size =
-+ sizeof (struct req_exec_ckpt_checkpointunlink);
-+ req_exec_ckpt_checkpointunlink.header.id =
-+ SERVICE_ID_MAKE (CKPT_SERVICE,
-+ MESSAGE_REQ_EXEC_CKPT_CHECKPOINTUNLINK);
-+
-+ req_exec_ckpt_checkpointunlink.source.conn = 0;
-+ req_exec_ckpt_checkpointunlink.source.nodeid = 0;
-+
-+ memcpy (&req_exec_ckpt_checkpointunlink.checkpoint_name,
-+ &checkpoint->name,
-+ sizeof (mar_name_t));
-+
-+ iovec.iov_base = (char *)&req_exec_ckpt_checkpointunlink;
-+ iovec.iov_len = sizeof (req_exec_ckpt_checkpointunlink);
-+
-+ res = totempg_groups_mcast_joined (openais_group_handle, &iovec, 1, TOTEMPG_AGREED);
-+ if (res == -1) {
-+ return (-1);
-+ }
-+ log_printf (LOG_LEVEL_DEBUG,
-+ "Expiring checkpoint %s\n",
-+ get_mar_name_t (&checkpoint->name));
-+ }
-
-- iovec.iov_base = (char *)&req_exec_ckpt_checkpointretentiondurationexpire;
-- iovec.iov_len = sizeof (req_exec_ckpt_checkpointretentiondurationexpire);
-+ list_del (&checkpoint->expiry_list);
-+ list = my_checkpoint_expiry_list_head.next;
-+ }
-+ my_token_callback_active = 0;
-+ return (0);
-+}
-
-- assert (totempg_groups_mcast_joined (openais_group_handle, &iovec, 1, TOTEMPG_AGREED) == 0);
-+void timer_function_retention (void *data)
-+{
-+ struct checkpoint *checkpoint = (struct checkpoint *)data;
-+ checkpoint->retention_timer = 0;
-+ list_add (&checkpoint->expiry_list, &my_checkpoint_expiry_list_head);
-+
-+ if (my_token_callback_active == 0) {
-+ totempg_callback_token_create (
-+ &my_token_callback_handle,
-+ TOTEM_CALLBACK_TOKEN_SENT,
-+ 1,
-+ callback_expiry,
-+ NULL);
-+ my_token_callback_active = 1;
-+ }
- }
-
- static void message_handler_req_exec_ckpt_checkpointclose (
-@@ -1593,8 +1607,10 @@
- res_lib_ckpt_checkpointclose.header.size = sizeof (struct res_lib_ckpt_checkpointclose);
- res_lib_ckpt_checkpointclose.header.id = MESSAGE_RES_CKPT_CHECKPOINT_CHECKPOINTCLOSE;
- res_lib_ckpt_checkpointclose.header.error = error;
-- openais_conn_send_response (req_exec_ckpt_checkpointclose->source.conn,
-- &res_lib_ckpt_checkpointclose, sizeof (struct res_lib_ckpt_checkpointclose));
-+ openais_response_send (
-+ req_exec_ckpt_checkpointclose->source.conn,
-+ &res_lib_ckpt_checkpointclose,
-+ sizeof (struct res_lib_ckpt_checkpointclose));
- }
-
- /*
-@@ -1646,7 +1662,7 @@
- res_lib_ckpt_checkpointunlink.header.size = sizeof (struct res_lib_ckpt_checkpointunlink);
- res_lib_ckpt_checkpointunlink.header.id = MESSAGE_RES_CKPT_CHECKPOINT_CHECKPOINTUNLINK;
- res_lib_ckpt_checkpointunlink.header.error = error;
-- openais_conn_send_response (
-+ openais_response_send (
- req_exec_ckpt_checkpointunlink->source.conn,
- &res_lib_ckpt_checkpointunlink,
- sizeof (struct res_lib_ckpt_checkpointunlink));
-@@ -1694,7 +1710,7 @@
- res_lib_ckpt_checkpointretentiondurationset.header.id = MESSAGE_RES_CKPT_CHECKPOINT_CHECKPOINTRETENTIONDURATIONSET;
- res_lib_ckpt_checkpointretentiondurationset.header.error = error;
-
-- openais_conn_send_response (
-+ openais_response_send (
- req_exec_ckpt_checkpointretentiondurationset->source.conn,
- &res_lib_ckpt_checkpointretentiondurationset,
- sizeof (struct res_lib_ckpt_checkpointretentiondurationset));
-@@ -1900,7 +1916,8 @@
- res_lib_ckpt_sectioncreate.header.id = MESSAGE_RES_CKPT_CHECKPOINT_SECTIONCREATE;
- res_lib_ckpt_sectioncreate.header.error = error;
-
-- openais_conn_send_response (req_exec_ckpt_sectioncreate->source.conn,
-+ openais_response_send (
-+ req_exec_ckpt_sectioncreate->source.conn,
- &res_lib_ckpt_sectioncreate,
- sizeof (struct res_lib_ckpt_sectioncreate));
- }
-@@ -1965,7 +1982,7 @@
- res_lib_ckpt_sectiondelete.header.id = MESSAGE_RES_CKPT_CHECKPOINT_SECTIONDELETE;
- res_lib_ckpt_sectiondelete.header.error = error;
-
-- openais_conn_send_response (
-+ openais_response_send (
- req_exec_ckpt_sectiondelete->source.conn,
- &res_lib_ckpt_sectiondelete,
- sizeof (struct res_lib_ckpt_sectiondelete));
-@@ -2058,7 +2075,7 @@
- MESSAGE_RES_CKPT_CHECKPOINT_SECTIONEXPIRATIONTIMESET;
- res_lib_ckpt_sectionexpirationtimeset.header.error = error;
-
-- openais_conn_send_response (
-+ openais_response_send (
- req_exec_ckpt_sectionexpirationtimeset->source.conn,
- &res_lib_ckpt_sectionexpirationtimeset,
- sizeof (struct res_lib_ckpt_sectionexpirationtimeset));
-@@ -2168,7 +2185,7 @@
- MESSAGE_RES_CKPT_CHECKPOINT_SECTIONWRITE;
- res_lib_ckpt_sectionwrite.header.error = error;
-
-- openais_conn_send_response (
-+ openais_response_send (
- req_exec_ckpt_sectionwrite->source.conn,
- &res_lib_ckpt_sectionwrite,
- sizeof (struct res_lib_ckpt_sectionwrite));
-@@ -2265,7 +2282,7 @@
- MESSAGE_RES_CKPT_CHECKPOINT_SECTIONOVERWRITE;
- res_lib_ckpt_sectionoverwrite.header.error = error;
-
-- openais_conn_send_response (
-+ openais_response_send (
- req_exec_ckpt_sectionoverwrite->source.conn,
- &res_lib_ckpt_sectionoverwrite,
- sizeof (struct res_lib_ckpt_sectionoverwrite));
-@@ -2358,7 +2375,7 @@
- res_lib_ckpt_sectionread.data_read = section_size;
- }
-
-- openais_conn_send_response (
-+ openais_response_send (
- req_exec_ckpt_sectionread->source.conn,
- &res_lib_ckpt_sectionread,
- sizeof (struct res_lib_ckpt_sectionread));
-@@ -2369,7 +2386,7 @@
- if (error == SA_AIS_OK) {
- char *sd;
- sd = (char *)checkpoint_section->section_data;
-- openais_conn_send_response (
-+ openais_response_send (
- req_exec_ckpt_sectionread->source.conn,
- &sd[req_exec_ckpt_sectionread->data_offset],
- section_size);
-@@ -2394,6 +2411,7 @@
- struct checkpoint_cleanup *checkpoint_cleanup;
- struct list_head *list;
- struct ckpt_pd *ckpt_pd = (struct ckpt_pd *)openais_conn_private_data_get (conn);
-+ unsigned int res;
-
- log_printf (LOG_LEVEL_DEBUG, "checkpoint exit conn %p\n", conn);
-
-@@ -2407,9 +2425,16 @@
- struct checkpoint_cleanup, list);
-
- assert (checkpoint_cleanup->checkpoint_name.length != 0);
-- ckpt_checkpoint_close (
-+ res = ckpt_checkpoint_close (
- &checkpoint_cleanup->checkpoint_name,
- checkpoint_cleanup->ckpt_id);
-+ /*
-+ * If checkpoint_close fails because of full totem queue
-+ * return -1 ande try again later
-+ */
-+ if (res == -1) {
-+ return (-1);
-+ }
-
- list_del (&checkpoint_cleanup->list);
- free (checkpoint_cleanup);
-@@ -2578,7 +2603,7 @@
- res_lib_ckpt_activereplicaset.header.id = MESSAGE_RES_CKPT_ACTIVEREPLICASET;
- res_lib_ckpt_activereplicaset.header.error = error;
-
-- openais_conn_send_response (
-+ openais_response_send (
- conn,
- &res_lib_ckpt_activereplicaset,
- sizeof (struct res_lib_ckpt_activereplicaset));
-@@ -2641,7 +2666,7 @@
- res_lib_ckpt_checkpointstatusget.header.id = MESSAGE_RES_CKPT_CHECKPOINT_CHECKPOINTSTATUSGET;
- res_lib_ckpt_checkpointstatusget.header.error = SA_AIS_ERR_NOT_EXIST;
- }
-- openais_conn_send_response (
-+ openais_response_send (
- conn,
- &res_lib_ckpt_checkpointstatusget,
- sizeof (struct res_lib_ckpt_checkpointstatusget));
-@@ -2655,8 +2680,6 @@
- struct req_exec_ckpt_sectioncreate req_exec_ckpt_sectioncreate;
- struct iovec iovecs[2];
-
-- log_printf (LOG_LEVEL_DEBUG, "Section create from conn %p\n", conn);
--
- req_exec_ckpt_sectioncreate.header.id =
- SERVICE_ID_MAKE (CKPT_SERVICE,
- MESSAGE_REQ_EXEC_CKPT_SECTIONCREATE);
-@@ -2692,7 +2715,6 @@
- }
-
- if (iovecs[1].iov_len > 0) {
-- log_printf (LOG_LEVEL_DEBUG, "IOV_BASE is %p\n", iovecs[1].iov_base);
- assert (totempg_groups_mcast_joined (openais_group_handle, iovecs, 2, TOTEMPG_AGREED) == 0);
- } else {
- assert (totempg_groups_mcast_joined (openais_group_handle, iovecs, 1, TOTEMPG_AGREED) == 0);
-@@ -2967,7 +2989,7 @@
- res_lib_ckpt_checkpointsynchronize.header.size = sizeof (struct res_lib_ckpt_checkpointsynchronize);
- res_lib_ckpt_checkpointsynchronize.header.id = MESSAGE_RES_CKPT_CHECKPOINT_CHECKPOINTSYNCHRONIZE;
-
-- openais_conn_send_response (
-+ openais_response_send (
- conn,
- &res_lib_ckpt_checkpointsynchronize,
- sizeof (struct res_lib_ckpt_checkpointsynchronize));
-@@ -2998,13 +3020,13 @@
- res_lib_ckpt_checkpointsynchronizeasync.header.id = MESSAGE_RES_CKPT_CHECKPOINT_CHECKPOINTSYNCHRONIZEASYNC;
- res_lib_ckpt_checkpointsynchronizeasync.invocation = req_lib_ckpt_checkpointsynchronizeasync->invocation;
-
-- openais_conn_send_response (
-+ openais_response_send (
- conn,
- &res_lib_ckpt_checkpointsynchronizeasync,
- sizeof (struct res_lib_ckpt_checkpointsynchronizeasync));
-
-- openais_conn_send_response (
-- openais_conn_partner_get (conn),
-+ openais_dispatch_send (
-+ conn,
- &res_lib_ckpt_checkpointsynchronizeasync,
- sizeof (struct res_lib_ckpt_checkpointsynchronizeasync));
- }
-@@ -3133,7 +3155,7 @@
- res_lib_ckpt_sectioniterationinitialize.max_section_id_size =
- checkpoint->checkpoint_creation_attributes.max_section_id_size;
-
-- openais_conn_send_response (
-+ openais_response_send (
- conn,
- &res_lib_ckpt_sectioniterationinitialize,
- sizeof (struct res_lib_ckpt_sectioniterationinitialize));
-@@ -3174,7 +3196,7 @@
- res_lib_ckpt_sectioniterationfinalize.header.id = MESSAGE_RES_CKPT_SECTIONITERATIONFINALIZE;
- res_lib_ckpt_sectioniterationfinalize.header.error = error;
-
-- openais_conn_send_response (
-+ openais_response_send (
- conn,
- &res_lib_ckpt_sectioniterationfinalize,
- sizeof (struct res_lib_ckpt_sectioniterationfinalize));
-@@ -3262,13 +3284,13 @@
- res_lib_ckpt_sectioniterationnext.header.id = MESSAGE_RES_CKPT_SECTIONITERATIONNEXT;
- res_lib_ckpt_sectioniterationnext.header.error = error;
-
-- openais_conn_send_response (
-+ openais_response_send (
- conn,
- &res_lib_ckpt_sectioniterationnext,
- sizeof (struct res_lib_ckpt_sectioniterationnext));
-
- if (error == SA_AIS_OK) {
-- openais_conn_send_response (
-+ openais_response_send (
- conn,
- checkpoint_section->section_descriptor.section_id.id,
- checkpoint_section->section_descriptor.section_id.id_len);
-@@ -3366,19 +3388,29 @@
- list_init (ckpt_list_head);
- }
-
--static inline void sync_checkpoints_enter (void)
-+static inline void sync_gloalid_enter (void)
- {
- struct checkpoint *checkpoint;
-
- ENTER();
-
-- my_sync_state = SYNC_STATE_CHECKPOINT;
-- my_iteration_state = ITERATION_STATE_CHECKPOINT;
-- my_iteration_state_checkpoint = checkpoint_list_head.next;
-+ my_sync_state = SYNC_STATE_GLOBALID;
-+
-+ my_iteration_state_checkpoint_list = checkpoint_list_head.next;
-
- checkpoint = list_entry (checkpoint_list_head.next, struct checkpoint,
- list);
-- my_iteration_state_section = checkpoint->sections_list_head.next;
-+ my_iteration_state_section_list = checkpoint->sections_list_head.next;
-+
-+ LEAVE();
-+}
-+
-+static inline void sync_checkpoints_enter (void)
-+{
-+ ENTER();
-+
-+ my_sync_state = SYNC_STATE_CHECKPOINT;
-+ my_iteration_state = ITERATION_STATE_CHECKPOINT;
-
- LEAVE();
- }
-@@ -3386,13 +3418,15 @@
- static inline void sync_refcounts_enter (void)
- {
- my_sync_state = SYNC_STATE_REFCOUNT;
-+
-+ my_iteration_state_checkpoint_list = checkpoint_list_head.next;
- }
-
- static void ckpt_sync_init (void)
- {
- ENTER();
-
-- sync_checkpoints_enter();
-+ sync_gloalid_enter();
-
- LEAVE();
- }
-@@ -3432,6 +3466,19 @@
- return (totempg_groups_mcast_joined (openais_group_handle, &iovec, 1, TOTEMPG_AGREED));
- }
-
-+static int sync_checkpoint_globalid_transmit (void)
-+{
-+ struct checkpoint checkpoint;
-+
-+ strcpy ((char *)checkpoint.name.value, GLOBALID_CHECKPOINT_NAME);
-+
-+ checkpoint.name.length = strlen (GLOBALID_CHECKPOINT_NAME);
-+ checkpoint.ckpt_id = global_ckpt_id;
-+
-+ return (sync_checkpoint_transmit(&checkpoint));
-+}
-+
-+
- static int sync_checkpoint_section_transmit (
- struct checkpoint *checkpoint,
- struct checkpoint_section *checkpoint_section)
-@@ -3521,25 +3568,62 @@
- struct list_head *section_list;
- unsigned int res = 0;
-
-- for (checkpoint_list = checkpoint_list_head.next;
-+ /*
-+ * iterate through all checkpoints or sections
-+ * from the last successfully transmitted checkpoint or sectoin
-+ */
-+ for (checkpoint_list = my_iteration_state_checkpoint_list;
- checkpoint_list != &checkpoint_list_head;
- checkpoint_list = checkpoint_list->next) {
-
- checkpoint = list_entry (checkpoint_list, struct checkpoint, list);
-
-- res = sync_checkpoint_transmit (checkpoint);
-- if (res != 0) {
-- break;
-+ /*
-+ * Synchronize a checkpoint if there is room in the totem
-+ * buffers and we didn't previously synchronize a checkpoint
-+ */
-+ if (my_iteration_state == ITERATION_STATE_CHECKPOINT) {
-+ res = sync_checkpoint_transmit (checkpoint);
-+ if (res != 0) {
-+ /*
-+ * Couldn't sync this checkpoint keep processing
-+ */
-+ return (-1);
-+ }
-+ my_iteration_state_section_list = checkpoint->sections_list_head.next;
-+ my_iteration_state = ITERATION_STATE_SECTION;
- }
-- for (section_list = checkpoint->sections_list_head.next;
-+
-+ /*
-+ * Synchronize a checkpoint section if there is room in the
-+ * totem buffers
-+ */
-+ for (section_list = my_iteration_state_section_list;
- section_list != &checkpoint->sections_list_head;
- section_list = section_list->next) {
-
- checkpoint_section = list_entry (section_list, struct checkpoint_section, list);
- res = sync_checkpoint_section_transmit (checkpoint, checkpoint_section);
-+ if (res != 0) {
-+ /*
-+ * Couldn't sync this section keep processing
-+ */
-+ return (-1);
-+ }
-+ my_iteration_state_section_list = section_list->next;
- }
-+
-+ /*
-+ * Continue to iterating checkpoints
-+ */
-+ my_iteration_state = ITERATION_STATE_CHECKPOINT;
-+ my_iteration_state_checkpoint_list = checkpoint_list->next;
- }
-- return (res);
-+
-+ /*
-+ * all checkpoints and sections iterated
-+ */
-+ return (0);
- }
-
- unsigned int sync_refcounts_iterate (void)
-@@ -3548,7 +3632,7 @@
- struct list_head *list;
- unsigned int res = 0;
-
-- for (list = checkpoint_list_head.next;
-+ for (list = my_iteration_state_checkpoint_list;
- list != &checkpoint_list_head;
- list = list->next) {
-
-@@ -3558,48 +3642,68 @@
- if (res != 0) {
- break;
- }
-+ my_iteration_state_checkpoint_list = list->next;
- }
- return (res);
- }
-
- static int ckpt_sync_process (void)
- {
-- unsigned int done_queueing = 1;
-- unsigned int continue_processing = 0;
-+ unsigned int done_queueing;
-+ unsigned int continue_processing;
- unsigned int res;
-
- ENTER();
-
-+ continue_processing = 0;
-+
- switch (my_sync_state) {
-+ case SYNC_STATE_GLOBALID:
-+ done_queueing = 1;
-+ continue_processing = 1;
-+ if (my_should_sync) {
-+ res = sync_checkpoint_globalid_transmit ();
-+ if (res != 0) {
-+ done_queueing = 0;
-+ }
-+ }
-+ if (done_queueing) {
-+ sync_checkpoints_enter ();
-+ }
-+ break;
-+
- case SYNC_STATE_CHECKPOINT:
-- if (my_lowest_nodeid == this_ip->nodeid) {
-+ done_queueing = 1;
-+ continue_processing = 1;
-+
-+ if (my_should_sync) {
- TRACE1 ("should transmit checkpoints because lowest member in old configuration.\n");
- res = sync_checkpoints_iterate ();
-
-- if (res == 0) {
-- done_queueing = 1;
-+ /*
-+ * Not done iterating checkpoints
-+ */
-+ if (res != 0) {
-+ done_queueing = 0;
- }
- }
- if (done_queueing) {
- sync_refcounts_enter ();
- }
--
-- /*
-- * TODO recover current iteration state
-- */
-- continue_processing = 1;
- break;
-
- case SYNC_STATE_REFCOUNT:
-- done_queueing = 1;
-- if (my_lowest_nodeid == this_ip->nodeid) {
-+ if (my_should_sync) {
- TRACE1 ("transmit refcounts because this processor is the lowest member in old configuration.\n");
- res = sync_refcounts_iterate ();
-- }
-- if (done_queueing) {
-- continue_processing = 0;
-+ if (res != 0) {
-+ continue_processing = 1;
-+ }
- }
- break;
-+
-+ default:
-+ assert (0);
- }
-
- LEAVE();
-@@ -3620,7 +3724,7 @@
-
- list_init (&sync_checkpoint_list_head);
-
-- my_sync_state = SYNC_STATE_CHECKPOINT;
-+ my_sync_state = SYNC_STATE_NOT_STARTED;
-
- LEAVE();
- }
-@@ -3648,6 +3752,22 @@
- return;
- }
-
-+ /*
-+ * Discard checkpoints that are used to synchronize the global_ckpt_id
-+ * also setting the global ckpt_id as well.
-+ */
-+ if (memcmp (&req_exec_ckpt_sync_checkpoint->checkpoint_name.value,
-+ GLOBALID_CHECKPOINT_NAME,
-+ req_exec_ckpt_sync_checkpoint->checkpoint_name.length) == 0) {
-+
-+ if (req_exec_ckpt_sync_checkpoint->ckpt_id >= global_ckpt_id) {
-+ global_ckpt_id = req_exec_ckpt_sync_checkpoint->ckpt_id + 1;
-+ }
-+
-+ LEAVE();
-+ return;
-+ }
-+
- checkpoint = checkpoint_find_specific (
- &sync_checkpoint_list_head,
- &req_exec_ckpt_sync_checkpoint->checkpoint_name,
-diff -uNr openais-0.80.3/exec/clm.c openais-0.80.3-r1661/exec/clm.c
---- openais-0.80.3/exec/clm.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/clm.c 2008-11-17 15:54:02.380604445 +0100
-@@ -262,24 +262,29 @@
- mar_clm_cluster_node_t cluster_node __attribute__((aligned(8)));
- };
-
--static int clm_exec_init_fn (struct objdb_iface_ver0 *objdb)
-+static void my_cluster_node_load (void)
- {
-- log_init ("CLM");
-+ struct totem_ip_address interfaces[INTERFACE_MAX];
-+ unsigned int iface_count;
-+ char **status;
-+ const char *iface_string;
-+
-+ totempg_ifaces_get (
-+ totempg_my_nodeid_get (),
-+ interfaces,
-+ &status,
-+ &iface_count);
-
-- memset (cluster_node_entries, 0,
-- sizeof (mar_clm_cluster_node_t) * PROCESSOR_COUNT_MAX);
-+ iface_string = totemip_print (&interfaces[0]);
-
-- /*
-- * Build local cluster node data structure
-- */
- sprintf ((char *)my_cluster_node.node_address.value, "%s",
-- totemip_print (this_ip));
-+ iface_string);
- my_cluster_node.node_address.length =
- strlen ((char *)my_cluster_node.node_address.value);
-- if (this_ip->family == AF_INET) {
-+ if (totempg_my_family_get () == AF_INET) {
- my_cluster_node.node_address.family = SA_CLM_AF_INET;
- } else
-- if (this_ip->family == AF_INET6) {
-+ if (totempg_my_family_get () == AF_INET6) {
- my_cluster_node.node_address.family = SA_CLM_AF_INET6;
- } else {
- assert (0);
-@@ -289,8 +294,20 @@
- (char *)my_cluster_node.node_address.value);
- my_cluster_node.node_name.length =
- my_cluster_node.node_address.length;
-- my_cluster_node.node_id = this_ip->nodeid;
-+ my_cluster_node.node_id = totempg_my_nodeid_get ();
- my_cluster_node.member = 1;
-+
-+ memcpy (&cluster_node_entries[0], &my_cluster_node,
-+ sizeof (mar_clm_cluster_node_t));
-+}
-+
-+static int clm_exec_init_fn (struct objdb_iface_ver0 *objdb)
-+{
-+ log_init ("CLM");
-+
-+ memset (cluster_node_entries, 0,
-+ sizeof (mar_clm_cluster_node_t) * PROCESSOR_COUNT_MAX);
-+
- {
- #if defined(OPENAIS_LINUX)
- struct sysinfo s_info;
-@@ -313,7 +330,6 @@
- #endif
- }
-
-- memcpy (&cluster_node_entries[0], &my_cluster_node, sizeof (mar_clm_cluster_node_t));
- cluster_node_count = 1;
-
- main_clm_get_by_nodeid = clm_get_by_nodeid;
-@@ -391,7 +407,7 @@
- /*
- * Send notifications to all CLM listeners
- */
-- openais_conn_send_response (
-+ openais_dispatch_send (
- clm_pd->conn,
- &res_lib_clm_clustertrack,
- sizeof (struct res_lib_clm_clustertrack));
-@@ -519,20 +535,7 @@
- * Load the my_cluster_node data structure in case we are
- * transitioning to network interface up or down
- */
-- sprintf ((char *)my_cluster_node.node_address.value, "%s", totemip_print (this_ip));
-- my_cluster_node.node_address.length = strlen ((char *)my_cluster_node.node_address.value);
-- if (this_ip->family == AF_INET) {
-- my_cluster_node.node_address.family = SA_CLM_AF_INET;
-- } else
-- if (this_ip->family == AF_INET6) {
-- my_cluster_node.node_address.family = SA_CLM_AF_INET6;
-- } else {
-- assert (0);
-- }
-- strcpy ((char *)my_cluster_node.node_name.value,
-- (char *)my_cluster_node.node_address.value);
-- my_cluster_node.node_name.length = my_cluster_node.node_address.length;
-- my_cluster_node.node_id = this_ip->nodeid;
-+ my_cluster_node_load ();
- }
-
- /*
-@@ -664,14 +667,16 @@
- list_add (&clm_pd->list, &library_notification_send_listhead);
- }
-
-- openais_conn_send_response (conn, &res_lib_clm_clustertrack,
-+ openais_response_send (
-+ conn,
-+ &res_lib_clm_clustertrack,
- sizeof (struct res_lib_clm_clustertrack));
-
- if (req_lib_clm_clustertrack->return_in_callback) {
- res_lib_clm_clustertrack.header.id = MESSAGE_RES_CLM_TRACKCALLBACK;
-
-- openais_conn_send_response (
-- openais_conn_partner_get (conn),
-+ openais_dispatch_send (
-+ conn,
- &res_lib_clm_clustertrack,
- sizeof (struct res_lib_clm_clustertrack));
- }
-@@ -696,7 +701,9 @@
- list_del (&clm_pd->list);
- list_init (&clm_pd->list);
-
-- openais_conn_send_response (conn, &res_lib_clm_trackstop,
-+ openais_response_send (
-+ conn,
-+ &res_lib_clm_trackstop,
- sizeof (struct res_lib_clm_trackstop));
- }
-
-@@ -732,7 +739,11 @@
- if (valid) {
- memcpy (&res_clm_nodeget.cluster_node, cluster_node, sizeof (mar_clm_cluster_node_t));
- }
-- openais_conn_send_response (conn, &res_clm_nodeget, sizeof (struct res_clm_nodeget));
-+
-+ openais_response_send (
-+ conn,
-+ &res_clm_nodeget,
-+ sizeof (struct res_clm_nodeget));
- }
-
- static void message_handler_req_lib_clm_nodegetasync (void *conn, void *msg)
-@@ -767,7 +778,9 @@
- res_clm_nodegetasync.header.id = MESSAGE_RES_CLM_NODEGETASYNC;
- res_clm_nodegetasync.header.error = SA_AIS_OK;
-
-- openais_conn_send_response (conn, &res_clm_nodegetasync,
-+ openais_response_send (
-+ conn,
-+ &res_clm_nodegetasync,
- sizeof (struct res_clm_nodegetasync));
-
- /*
-@@ -781,7 +794,8 @@
- memcpy (&res_clm_nodegetcallback.cluster_node, cluster_node,
- sizeof (mar_clm_cluster_node_t));
- }
-- openais_conn_send_response (openais_conn_partner_get (conn),
-+ openais_dispatch_send (
-+ conn,
- &res_clm_nodegetcallback,
- sizeof (struct res_clm_nodegetcallback));
- }
-diff -uNr openais-0.80.3/exec/cpg.c openais-0.80.3-r1661/exec/cpg.c
---- openais-0.80.3/exec/cpg.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/cpg.c 2008-11-17 15:54:02.380604445 +0100
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2006-2007 Red Hat, Inc.
-+ * Copyright (c) 2006 Red Hat, Inc.
- * Copyright (c) 2006 Sun Microsystems, Inc.
- *
- * All rights reserved.
-@@ -32,6 +32,9 @@
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-+#ifndef OPENAIS_BSD
-+#include <alloca.h>
-+#endif
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <sys/un.h>
-@@ -60,8 +63,11 @@
- #include "totempg.h"
- #include "totemip.h"
- #include "main.h"
-+#include "flow.h"
-+#include "tlist.h"
- #include "ipc.h"
- #include "mempool.h"
-+#include "objdb.h"
- #include "service.h"
- #include "jhash.h"
- #include "swab.h"
-@@ -255,7 +261,7 @@
- };
-
- struct openais_service_handler cpg_service_handler = {
-- .name = (unsigned char*)"openais cluster closed process group service v1.01",
-+ .name = (unsigned char *)"openais cluster closed process group service v1.01",
- .id = CPG_SERVICE,
- .private_data_size = sizeof (struct process_info),
- .flow_control = OPENAIS_FLOW_CONTROL_REQUIRED,
-@@ -434,14 +440,14 @@
- }
-
- if (conn) {
-- openais_conn_send_response(conn, buf, size);
-+ openais_dispatch_send(conn, buf, size);
- }
- else {
- /* Send it to all listeners */
- for (iter = gi->members.next, tmp=iter->next; iter != &gi->members; iter = tmp, tmp=iter->next) {
- struct process_info *pi = list_entry(iter, struct process_info, list);
- if (pi->trackerconn && (pi->flags & PI_FLAG_MEMBER)) {
-- if (openais_conn_send_response(pi->trackerconn, buf, size) == -1) {
-+ if (openais_dispatch_send(pi->trackerconn, buf, size) == -1) {
- // Error ??
- }
- }
-@@ -477,14 +483,17 @@
- struct group_info *gi = pi->group;
- mar_cpg_address_t notify_info;
-
-- log_printf(LOG_LEVEL_DEBUG, "exit_fn for conn=%p\n", conn);
--
- if (gi) {
- notify_info.pid = pi->pid;
-- notify_info.nodeid = this_ip->nodeid;
-+ notify_info.nodeid = totempg_my_nodeid_get();
- notify_info.reason = CONFCHG_CPG_REASON_PROCDOWN;
- cpg_node_joinleave_send(gi, pi, MESSAGE_REQ_EXEC_CPG_PROCLEAVE, CONFCHG_CPG_REASON_PROCDOWN);
- list_del(&pi->list);
-+ openais_ipc_flow_control_destroy (
-+ conn,
-+ CPG_SERVICE,
-+ (unsigned char *)gi->group_name.value,
-+ (unsigned int)gi->group_name.length);
- }
- return (0);
- }
-@@ -531,7 +540,7 @@
- req_exec_cpg_procjoin.header.size = sizeof(req_exec_cpg_procjoin);
- req_exec_cpg_procjoin.header.id = SERVICE_ID_MAKE(CPG_SERVICE, fn);
-
-- req_exec_cpg_iovec.iov_base = &req_exec_cpg_procjoin;
-+ req_exec_cpg_iovec.iov_base = (char *)&req_exec_cpg_procjoin;
- req_exec_cpg_iovec.iov_len = sizeof(req_exec_cpg_procjoin);
-
- result = totempg_groups_mcast_joined (openais_group_handle, &req_exec_cpg_iovec, 1, TOTEMPG_AGREED);
-@@ -544,15 +553,17 @@
- struct list_head *remlist)
- {
- int i;
-- struct list_head *iter, *iter2, *tmp;
-+ struct list_head *iter, *iter2;
- struct process_info *pi;
- struct group_info *gi;
-
- for (i=0; i < GROUP_HASH_SIZE; i++) {
-- for (iter = group_lists[i].next; iter != &group_lists[i]; iter = iter->next) {
-+ for (iter = group_lists[i].next; iter != &group_lists[i];) {
- gi = list_entry(iter, struct group_info, list);
-- for (iter2 = gi->members.next, tmp = iter2->next; iter2 != &gi->members; iter2 = tmp, tmp = iter2->next) {
-+ iter = iter->next;
-+ for (iter2 = gi->members.next; iter2 != &gi->members;) {
- pi = list_entry(iter2, struct process_info, list);
-+ iter2 = iter2->next;
-
- if (pi->nodeid == nodeid) {
-
-@@ -627,8 +638,8 @@
- lowest_nodeid = member_list[i];
- }
-
-- log_printf(LOG_LEVEL_DEBUG, "confchg, low nodeid=%d, us = %d\n", lowest_nodeid, this_ip->nodeid);
-- if (lowest_nodeid == this_ip->nodeid) {
-+ log_printf(LOG_LEVEL_DEBUG, "confchg, low nodeid=%d, us = %d\n", lowest_nodeid, totempg_my_nodeid_get());
-+ if (lowest_nodeid == totempg_my_nodeid_get()) {
-
- req_exec_cpg_downlist.header.id = SERVICE_ID_MAKE(CPG_SERVICE, MESSAGE_REQ_EXEC_CPG_DOWNLIST);
- req_exec_cpg_downlist.header.size = sizeof(struct req_exec_cpg_downlist);
-@@ -643,7 +654,7 @@
-
- /* Don't send this message until we get the final configuration message */
- if (configuration_type == TOTEM_CONFIGURATION_REGULAR && req_exec_cpg_downlist.left_nodes) {
-- req_exec_cpg_iovec.iov_base = &req_exec_cpg_downlist;
-+ req_exec_cpg_iovec.iov_base = (char *)&req_exec_cpg_downlist;
- req_exec_cpg_iovec.iov_len = req_exec_cpg_downlist.header.size;
-
- totempg_groups_mcast_joined (openais_group_handle, &req_exec_cpg_iovec, 1, TOTEMPG_AGREED);
-@@ -688,10 +699,16 @@
- static void exec_cpg_downlist_endian_convert (void *msg)
- {
- struct req_exec_cpg_downlist *req_exec_cpg_downlist = (struct req_exec_cpg_downlist *)msg;
-+ unsigned int i;
-
- req_exec_cpg_downlist->left_nodes = swab32(req_exec_cpg_downlist->left_nodes);
-+
-+ for (i = 0; i < req_exec_cpg_downlist->left_nodes; i++) {
-+ req_exec_cpg_downlist->nodeids[i] = swab32(req_exec_cpg_downlist->nodeids[i]);
-+ }
- }
-
-+
- static void exec_cpg_mcast_endian_convert (void *msg)
- {
- struct req_exec_cpg_mcast *req_exec_cpg_mcast = (struct req_exec_cpg_mcast *)msg;
-@@ -723,7 +740,7 @@
- if (pi->pid == pid && pi->nodeid == nodeid) {
-
- /* It could be a local join message */
-- if ((nodeid == this_ip->nodeid) &&
-+ if ((nodeid == totempg_my_nodeid_get()) &&
- (!pi->flags & PI_FLAG_MEMBER)) {
- goto local_join;
- } else {
-@@ -810,7 +827,7 @@
- struct req_exec_cpg_procjoin *req_exec_cpg_procjoin = (struct req_exec_cpg_procjoin *)message;
- struct group_info *gi;
- struct process_info *pi;
-- struct list_head *iter;
-+ volatile struct list_head *iter;
- mar_cpg_address_t notify_info;
-
- log_printf(LOG_LEVEL_DEBUG, "got procleave message from cluster node %d\n", nodeid);
-@@ -827,19 +844,28 @@
- 1, &notify_info,
- MESSAGE_RES_CPG_CONFCHG_CALLBACK);
-
-- /* Find the node/PID to remove */
-- for (iter = gi->members.next; iter != &gi->members; iter = iter->next) {
-+ /*
-+ * Find the node/PID to remove
-+ */
-+ for (iter = gi->members.next; iter != &gi->members;) {
- pi = list_entry(iter, struct process_info, list);
-+
-+ iter = iter->next;
-+
- if (pi->pid == req_exec_cpg_procjoin->pid &&
- pi->nodeid == nodeid) {
-
-- list_del(&pi->list);
-- if (!pi->conn)
-- free(pi);
--
- if (list_empty(&gi->members)) {
- remove_group(gi);
- }
-+
-+ list_del(&pi->list);
-+ if (pi->conn) {
-+ openais_conn_info_refcnt_dec(pi->conn);
-+ } else {
-+ free(pi);
-+ }
-+
- break;
- }
- }
-@@ -858,7 +884,7 @@
- nodeid);
-
- /* Ignore our own messages */
-- if (nodeid == this_ip->nodeid) {
-+ if (nodeid == totempg_my_nodeid_get()) {
- return;
- }
-
-@@ -898,6 +924,7 @@
- openais_ipc_flow_control_local_decrement (req_exec_cpg_mcast->source.conn);
- process_info = (struct process_info *)openais_conn_private_data_get (req_exec_cpg_mcast->source.conn);
- res_lib_cpg_mcast->flow_control_state = process_info->flow_control_state;
-+ openais_conn_info_refcnt_dec (req_exec_cpg_mcast->source.conn);
- }
- memcpy(&res_lib_cpg_mcast->group_name, &gi->group_name,
- sizeof(mar_cpg_name_t));
-@@ -907,8 +934,8 @@
- /* Send to all interested members */
- for (iter = gi->members.next; iter != &gi->members; iter = iter->next) {
- struct process_info *pi = list_entry(iter, struct process_info, list);
-- if (pi->trackerconn) {
-- openais_conn_send_response(
-+ if (pi->trackerconn && (pi->flags & PI_FLAG_MEMBER)) {
-+ openais_dispatch_send (
- pi->trackerconn,
- buf,
- res_lib_cpg_mcast->header.size);
-@@ -937,7 +964,7 @@
- gi = list_entry(iter, struct group_info, list);
- for (iter2 = gi->members.next; iter2 != &gi->members; iter2 = iter2->next) {
- struct process_info *pi = list_entry(iter2, struct process_info, list);
-- if (pi->pid && pi->nodeid == this_ip->nodeid) {
-+ if (pi->pid && pi->nodeid == totempg_my_nodeid_get()) {
- count++;
- }
- }
-@@ -964,7 +991,7 @@
- for (iter2 = gi->members.next; iter2 != &gi->members; iter2 = iter2->next) {
-
- struct process_info *pi = list_entry(iter2, struct process_info, list);
-- if (pi->pid && pi->nodeid == this_ip->nodeid) {
-+ if (pi->pid && pi->nodeid == totempg_my_nodeid_get()) {
- memcpy(&jle->group_name, &gi->group_name, sizeof(mar_cpg_name_t));
- jle->pid = pi->pid;
- jle++;
-@@ -987,6 +1014,7 @@
- struct process_info *pi = (struct process_info *)openais_conn_private_data_get (conn);
- pi->conn = conn;
-
-+ openais_conn_info_refcnt_inc (conn);
- log_printf(LOG_LEVEL_DEBUG, "lib_init_fn: conn=%p, pi=%p\n", conn, pi);
- return (0);
- }
-@@ -1023,7 +1051,7 @@
- pi);
-
- /* Add a node entry for us */
-- pi->nodeid = this_ip->nodeid;
-+ pi->nodeid = totempg_my_nodeid_get();
- pi->pid = req_lib_cpg_join->pid;
- pi->group = gi;
- list_add(&pi->list, &gi->members);
-@@ -1035,7 +1063,7 @@
- res_lib_cpg_join.header.size = sizeof(res_lib_cpg_join);
- res_lib_cpg_join.header.id = MESSAGE_RES_CPG_JOIN;
- res_lib_cpg_join.header.error = error;
-- openais_conn_send_response(conn, &res_lib_cpg_join, sizeof(res_lib_cpg_join));
-+ openais_response_send(conn, &res_lib_cpg_join, sizeof(res_lib_cpg_join));
- }
-
- /* Leave message from the library */
-@@ -1046,8 +1074,6 @@
- struct group_info *gi;
- SaAisErrorT error = SA_AIS_OK;
-
-- log_printf(LOG_LEVEL_DEBUG, "got leave request on %p\n", conn);
--
- if (!pi || !pi->pid || !pi->group) {
- error = SA_AIS_ERR_INVALID_PARAM;
- goto leave_ret;
-@@ -1070,7 +1096,7 @@
- res_lib_cpg_leave.header.size = sizeof(res_lib_cpg_leave);
- res_lib_cpg_leave.header.id = MESSAGE_RES_CPG_LEAVE;
- res_lib_cpg_leave.header.error = error;
-- openais_conn_send_response(conn, &res_lib_cpg_leave, sizeof(res_lib_cpg_leave));
-+ openais_response_send(conn, &res_lib_cpg_leave, sizeof(res_lib_cpg_leave));
- }
-
- /* Mcast message from the library */
-@@ -1093,7 +1119,7 @@
- res_lib_cpg_mcast.header.id = MESSAGE_RES_CPG_MCAST;
- res_lib_cpg_mcast.header.error = SA_AIS_ERR_ACCESS; /* TODO Better error code ?? */
- res_lib_cpg_mcast.flow_control_state = CPG_FLOW_CONTROL_DISABLED;
-- openais_conn_send_response(conn, &res_lib_cpg_mcast,
-+ openais_response_send(conn, &res_lib_cpg_mcast,
- sizeof(res_lib_cpg_mcast));
- return;
- }
-@@ -1101,15 +1127,16 @@
- req_exec_cpg_mcast.header.size = sizeof(req_exec_cpg_mcast) + msglen;
- req_exec_cpg_mcast.header.id = SERVICE_ID_MAKE(CPG_SERVICE,
- MESSAGE_REQ_EXEC_CPG_MCAST);
-+ openais_conn_info_refcnt_inc (conn);
- req_exec_cpg_mcast.pid = pi->pid;
- req_exec_cpg_mcast.msglen = msglen;
- message_source_set (&req_exec_cpg_mcast.source, conn);
- memcpy(&req_exec_cpg_mcast.group_name, &gi->group_name,
- sizeof(mar_cpg_name_t));
-
-- req_exec_cpg_iovec[0].iov_base = &req_exec_cpg_mcast;
-+ req_exec_cpg_iovec[0].iov_base = (char *)&req_exec_cpg_mcast;
- req_exec_cpg_iovec[0].iov_len = sizeof(req_exec_cpg_mcast);
-- req_exec_cpg_iovec[1].iov_base = &req_lib_cpg_mcast->message;
-+ req_exec_cpg_iovec[1].iov_base = (char *)&req_lib_cpg_mcast->message;
- req_exec_cpg_iovec[1].iov_len = msglen;
-
- // TODO: guarantee type...
-@@ -1120,7 +1147,7 @@
- res_lib_cpg_mcast.header.id = MESSAGE_RES_CPG_MCAST;
- res_lib_cpg_mcast.header.error = SA_AIS_OK;
- res_lib_cpg_mcast.flow_control_state = pi->flow_control_state;
-- openais_conn_send_response(conn, &res_lib_cpg_mcast,
-+ openais_response_send(conn, &res_lib_cpg_mcast,
- sizeof(res_lib_cpg_mcast));
- }
-
-@@ -1134,7 +1161,7 @@
- res.size = sizeof(res);
- res.id = MESSAGE_RES_CPG_MEMBERSHIP;
- res.error = SA_AIS_ERR_ACCESS; /* TODO Better error code */
-- openais_conn_send_response(conn, &res, sizeof(res));
-+ openais_response_send(conn, &res, sizeof(res));
- return;
- }
-
-@@ -1148,7 +1175,6 @@
- struct res_lib_cpg_trackstart res_lib_cpg_trackstart;
- struct group_info *gi;
- struct process_info *otherpi;
-- void *otherconn;
- SaAisErrorT error = SA_AIS_OK;
-
- log_printf(LOG_LEVEL_DEBUG, "got trackstart request on %p\n", conn);
-@@ -1160,7 +1186,6 @@
- }
-
- /* Find the partner connection and add us to it's process_info struct */
-- otherconn = openais_conn_partner_get (conn);
- otherpi = (struct process_info *)openais_conn_private_data_get (conn);
- otherpi->trackerconn = conn;
-
-@@ -1168,7 +1193,7 @@
- res_lib_cpg_trackstart.header.size = sizeof(res_lib_cpg_trackstart);
- res_lib_cpg_trackstart.header.id = MESSAGE_RES_CPG_TRACKSTART;
- res_lib_cpg_trackstart.header.error = SA_AIS_OK;
-- openais_conn_send_response(conn, &res_lib_cpg_trackstart, sizeof(res_lib_cpg_trackstart));
-+ openais_response_send(conn, &res_lib_cpg_trackstart, sizeof(res_lib_cpg_trackstart));
- }
-
- static void message_handler_req_lib_cpg_trackstop (void *conn, void *message)
-@@ -1176,7 +1201,6 @@
- struct req_lib_cpg_trackstop *req_lib_cpg_trackstop = (struct req_lib_cpg_trackstop *)message;
- struct res_lib_cpg_trackstop res_lib_cpg_trackstop;
- struct process_info *otherpi;
-- void *otherconn;
- struct group_info *gi;
- SaAisErrorT error = SA_AIS_OK;
-
-@@ -1189,7 +1213,6 @@
- }
-
- /* Find the partner connection and add us to it's process_info struct */
-- otherconn = openais_conn_partner_get (conn);
- otherpi = (struct process_info *)openais_conn_private_data_get (conn);
- otherpi->trackerconn = NULL;
-
-@@ -1197,7 +1220,7 @@
- res_lib_cpg_trackstop.header.size = sizeof(res_lib_cpg_trackstop);
- res_lib_cpg_trackstop.header.id = MESSAGE_RES_CPG_TRACKSTOP;
- res_lib_cpg_trackstop.header.error = SA_AIS_OK;
-- openais_conn_send_response(conn, &res_lib_cpg_trackstop.header, sizeof(res_lib_cpg_trackstop));
-+ openais_response_send(conn, &res_lib_cpg_trackstop.header, sizeof(res_lib_cpg_trackstop));
- }
-
- static void message_handler_req_lib_cpg_local_get (void *conn, void *message)
-@@ -1207,8 +1230,8 @@
- res_lib_cpg_local_get.header.size = sizeof(res_lib_cpg_local_get);
- res_lib_cpg_local_get.header.id = MESSAGE_RES_CPG_LOCAL_GET;
- res_lib_cpg_local_get.header.error = SA_AIS_OK;
-- res_lib_cpg_local_get.local_nodeid = this_ip->nodeid;
-+ res_lib_cpg_local_get.local_nodeid = totempg_my_nodeid_get ();
-
-- openais_conn_send_response(conn, &res_lib_cpg_local_get,
-+ openais_response_send(conn, &res_lib_cpg_local_get,
- sizeof(res_lib_cpg_local_get));
- }
-diff -uNr openais-0.80.3/exec/evs.c openais-0.80.3-r1661/exec/evs.c
---- openais-0.80.3/exec/evs.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/evs.c 2008-11-17 15:54:02.380604445 +0100
-@@ -244,7 +244,8 @@
- */
- for (list = confchg_notify.next; list != &confchg_notify; list = list->next) {
- evs_pd = list_entry (list, struct evs_pd, list);
-- openais_conn_send_response (evs_pd->conn,
-+ openais_dispatch_send (
-+ evs_pd->conn,
- &res_evs_confchg_callback,
- sizeof (res_evs_confchg_callback));
- }
-@@ -262,7 +263,9 @@
- list_init (&evs_pd->list);
- list_add (&evs_pd->list, &confchg_notify);
-
-- openais_conn_send_response (conn, &res_evs_confchg_callback,
-+ openais_dispatch_send (
-+ conn,
-+ &res_evs_confchg_callback,
- sizeof (res_evs_confchg_callback));
-
- return (0);
-@@ -308,7 +311,9 @@
- res_lib_evs_join.header.id = MESSAGE_RES_EVS_JOIN;
- res_lib_evs_join.header.error = error;
-
-- openais_conn_send_response (conn, &res_lib_evs_join,
-+ openais_response_send (
-+ conn,
-+ &res_lib_evs_join,
- sizeof (struct res_lib_evs_join));
- }
-
-@@ -354,7 +359,9 @@
- res_lib_evs_leave.header.id = MESSAGE_RES_EVS_LEAVE;
- res_lib_evs_leave.header.error = error;
-
-- openais_conn_send_response (conn, &res_lib_evs_leave,
-+ openais_response_send (
-+ conn,
-+ &res_lib_evs_leave,
- sizeof (struct res_lib_evs_leave));
- }
-
-@@ -397,7 +404,9 @@
- res_lib_evs_mcast_joined.header.id = MESSAGE_RES_EVS_MCAST_JOINED;
- res_lib_evs_mcast_joined.header.error = error;
-
-- openais_conn_send_response (conn, &res_lib_evs_mcast_joined,
-+ openais_response_send (
-+ conn,
-+ &res_lib_evs_mcast_joined,
- sizeof (struct res_lib_evs_mcast_joined));
- }
-
-@@ -443,7 +452,9 @@
- res_lib_evs_mcast_groups.header.id = MESSAGE_RES_EVS_MCAST_GROUPS;
- res_lib_evs_mcast_groups.header.error = error;
-
-- openais_conn_send_response (conn, &res_lib_evs_mcast_groups,
-+ openais_response_send (
-+ conn,
-+ &res_lib_evs_mcast_groups,
- sizeof (struct res_lib_evs_mcast_groups));
- }
-
-@@ -454,7 +465,7 @@
- res_lib_evs_membership_get.header.size = sizeof (struct res_lib_evs_membership_get);
- res_lib_evs_membership_get.header.id = MESSAGE_RES_EVS_MEMBERSHIP_GET;
- res_lib_evs_membership_get.header.error = EVS_OK;
-- res_lib_evs_membership_get.local_nodeid = this_ip->nodeid;
-+ res_lib_evs_membership_get.local_nodeid = totempg_my_nodeid_get ();
- memcpy (&res_lib_evs_membership_get.member_list,
- &res_evs_confchg_callback.member_list,
- sizeof (res_lib_evs_membership_get.member_list));
-@@ -462,7 +473,9 @@
- res_lib_evs_membership_get.member_list_entries =
- res_evs_confchg_callback.member_list_entries;
-
-- openais_conn_send_response (conn, &res_lib_evs_membership_get,
-+ openais_response_send (
-+ conn,
-+ &res_lib_evs_membership_get,
- sizeof (struct res_lib_evs_membership_get));
- }
-
-@@ -487,8 +500,10 @@
- int i, j;
- struct evs_pd *evs_pd;
-
-- res_evs_deliver_callback.header.size = sizeof (struct res_evs_deliver_callback) +
-- req_exec_evs_mcast->msg_len;
-+ res_evs_deliver_callback.header.size =
-+ sizeof (struct res_evs_deliver_callback) +
-+ req_exec_evs_mcast->msg_len;
-+
- res_evs_deliver_callback.header.id = MESSAGE_RES_EVS_DELIVER_CALLBACK;
- res_evs_deliver_callback.header.error = SA_AIS_OK;
- res_evs_deliver_callback.msglen = req_exec_evs_mcast->msg_len;
-@@ -517,9 +532,13 @@
-
- if (found) {
- res_evs_deliver_callback.local_nodeid = nodeid;
-- openais_conn_send_response (evs_pd->conn, &res_evs_deliver_callback,
-+ openais_dispatch_send (
-+ evs_pd->conn,
-+ &res_evs_deliver_callback,
- sizeof (struct res_evs_deliver_callback));
-- openais_conn_send_response (evs_pd->conn, msg_addr,
-+ openais_dispatch_send (
-+ evs_pd->conn,
-+ msg_addr,
- req_exec_evs_mcast->msg_len);
- }
- }
-diff -uNr openais-0.80.3/exec/evt.c openais-0.80.3-r1661/exec/evt.c
---- openais-0.80.3/exec/evt.c 2007-06-25 04:22:54.000000000 +0200
-+++ openais-0.80.3-r1661/exec/evt.c 2008-11-17 15:54:02.390605772 +0100
-@@ -1853,8 +1853,10 @@
- res.evd_head.size = sizeof(res);
- res.evd_head.id = MESSAGE_RES_EVT_AVAILABLE;
- res.evd_head.error = SA_AIS_OK;
-- openais_conn_send_response(openais_conn_partner_get(conn),
-- &res, sizeof(res));
-+ openais_dispatch_send (
-+ conn,
-+ &res,
-+ sizeof(res));
- }
-
- }
-@@ -1987,6 +1989,7 @@
- if (!ep) {
- log_printf(LOG_LEVEL_WARNING,
- "5Memory allocation error, can't deliver event\n");
-+ free (ed);
- return;
- }
- ep->cel_chan_handle = eco->eco_lib_handle;
-@@ -2264,7 +2267,7 @@
- res.ico_head.size = sizeof(res);
- res.ico_head.id = MESSAGE_RES_EVT_OPEN_CHANNEL;
- res.ico_head.error = error;
-- openais_conn_send_response(conn, &res, sizeof(res));
-+ openais_response_send(conn, &res, sizeof(res));
- }
-
- /*
-@@ -2321,7 +2324,7 @@
- res.ico_head.size = sizeof(res);
- res.ico_head.id = MESSAGE_RES_EVT_OPEN_CHANNEL;
- res.ico_head.error = error;
-- openais_conn_send_response(conn, &res, sizeof(res));
-+ openais_dispatch_send(conn, &res, sizeof(res));
- }
-
-
-@@ -2414,7 +2417,7 @@
- res.icc_head.size = sizeof(res);
- res.icc_head.id = MESSAGE_RES_EVT_CLOSE_CHANNEL;
- res.icc_head.error = ((ret == 0) ? SA_AIS_OK : SA_AIS_ERR_BAD_HANDLE);
-- openais_conn_send_response(conn, &res, sizeof(res));
-+ openais_response_send(conn, &res, sizeof(res));
- }
-
- /*
-@@ -2486,7 +2489,7 @@
- res.iuc_head.size = sizeof(res);
- res.iuc_head.id = MESSAGE_RES_EVT_UNLINK_CHANNEL;
- res.iuc_head.error = error;
-- openais_conn_send_response(conn, &res, sizeof(res));
-+ openais_response_send(conn, &res, sizeof(res));
- }
-
- /*
-@@ -2590,7 +2593,7 @@
- res.ics_head.size = sizeof(res);
- res.ics_head.id = MESSAGE_RES_EVT_SUBSCRIBE;
- res.ics_head.error = error;
-- openais_conn_send_response(conn, &res, sizeof(res));
-+ openais_response_send(conn, &res, sizeof(res));
-
- /*
- * See if an existing event with a retention time
-@@ -2623,7 +2626,7 @@
- res.ics_head.size = sizeof(res);
- res.ics_head.id = MESSAGE_RES_EVT_SUBSCRIBE;
- res.ics_head.error = error;
-- openais_conn_send_response(conn, &res, sizeof(res));
-+ openais_response_send(conn, &res, sizeof(res));
- }
-
- /*
-@@ -2690,7 +2693,7 @@
- res.icu_head.size = sizeof(res);
- res.icu_head.id = MESSAGE_RES_EVT_UNSUBSCRIBE;
- res.icu_head.error = error;
-- openais_conn_send_response(conn, &res, sizeof(res));
-+ openais_response_send(conn, &res, sizeof(res));
- }
-
- /*
-@@ -2762,7 +2765,7 @@
- res.iep_head.id = MESSAGE_RES_EVT_PUBLISH;
- res.iep_head.error = error;
- res.iep_event_id = event_id;
-- openais_conn_send_response(conn, &res, sizeof(res));
-+ openais_response_send(conn, &res, sizeof(res));
- }
-
- /*
-@@ -2826,7 +2829,7 @@
- res.iec_head.size = sizeof(res);
- res.iec_head.id = MESSAGE_RES_EVT_CLEAR_RETENTIONTIME;
- res.iec_head.error = error;
-- openais_conn_send_response(conn, &res, sizeof(res));
-+ openais_response_send(conn, &res, sizeof(res));
-
- }
-
-@@ -2865,7 +2868,7 @@
- edp->ed_event.led_head.id = MESSAGE_RES_EVT_EVENT_DATA;
- edp->ed_event.led_head.error = SA_AIS_OK;
- free(cel);
-- openais_conn_send_response(conn, &edp->ed_event,
-+ openais_response_send(conn, &edp->ed_event,
- edp->ed_event.led_head.size);
- free_event_data(edp);
- goto data_get_done;
-@@ -2875,7 +2878,7 @@
- res.led_head.size = sizeof(res.led_head);
- res.led_head.id = MESSAGE_RES_EVT_EVENT_DATA;
- res.led_head.error = SA_AIS_ERR_NOT_EXIST;
-- openais_conn_send_response(conn, &res, res.led_head.size);
-+ openais_response_send(conn, &res, res.led_head.size);
-
- /*
- * See if there are any events that the app doesn't know about
-@@ -3037,7 +3040,7 @@
- struct unlink_chan_pending *ucp;
- struct retention_time_clear_pending *rtc;
- struct libevt_pd *esip =
-- openais_conn_private_data_get(openais_conn_partner_get(conn));
-+ openais_conn_private_data_get(conn);
-
- log_printf(LOG_LEVEL_DEBUG, "saEvtFinalize (Event exit request)\n");
- log_printf(LOG_LEVEL_DEBUG, "saEvtFinalize %d evts on list\n",
-@@ -3430,7 +3433,7 @@
- res.ico_head.id = MESSAGE_RES_EVT_OPEN_CHANNEL;
- res.ico_head.error = SA_AIS_ERR_TIMEOUT;
- ocp->ocp_invocation = OPEN_TIMED_OUT;
-- openais_conn_send_response(ocp->ocp_conn, &res, sizeof(res));
-+ openais_response_send(ocp->ocp_conn, &res, sizeof(res));
- }
-
- /*
-@@ -3520,15 +3523,14 @@
- resa.ica_channel_handle = handle;
- resa.ica_c_handle = ocp->ocp_c_handle;
- resa.ica_invocation = ocp->ocp_invocation;
-- openais_conn_send_response(openais_conn_partner_get(ocp->ocp_conn),
-- &resa, sizeof(resa));
-+ openais_dispatch_send(ocp->ocp_conn, &resa, sizeof(resa));
- } else {
- struct res_evt_channel_open res;
- res.ico_head.size = sizeof(res);
- res.ico_head.id = MESSAGE_RES_EVT_OPEN_CHANNEL;
- res.ico_head.error = (ret == 0 ? SA_AIS_OK : SA_AIS_ERR_BAD_HANDLE);
- res.ico_channel_handle = handle;
-- openais_conn_send_response(ocp->ocp_conn, &res, sizeof(res));
-+ openais_response_send(ocp->ocp_conn, &res, sizeof(res));
- }
-
- if (timer_del_status == 0) {
-@@ -3553,7 +3555,7 @@
- res.iuc_head.size = sizeof(res);
- res.iuc_head.id = MESSAGE_RES_EVT_UNLINK_CHANNEL;
- res.iuc_head.error = SA_AIS_OK;
-- openais_conn_send_response(ucp->ucp_conn, &res, sizeof(res));
-+ openais_response_send(ucp->ucp_conn, &res, sizeof(res));
-
- free(ucp);
- }
-@@ -3573,7 +3575,7 @@
- res.iec_head.size = sizeof(res);
- res.iec_head.id = MESSAGE_RES_EVT_CLEAR_RETENTIONTIME;
- res.iec_head.error = ret;
-- openais_conn_send_response(rtc->rtc_conn, &res, sizeof(res));
-+ openais_response_send(rtc->rtc_conn, &res, sizeof(res));
-
- list_del(&rtc->rtc_entry);
- free(rtc);
-diff -uNr openais-0.80.3/exec/ipc.c openais-0.80.3-r1661/exec/ipc.c
---- openais-0.80.3/exec/ipc.c 2007-06-25 04:22:54.000000000 +0200
-+++ openais-0.80.3-r1661/exec/ipc.c 2008-11-17 15:54:02.380604445 +0100
-@@ -1,5 +1,4 @@
- /*
-- * Copyright (c) 2002-2006 MontaVista Software, Inc.
- * Copyright (c) 2006-2007 Red Hat, Inc.
- *
- * All rights reserved.
-@@ -32,6 +31,9 @@
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-+#ifndef _GNU_SOURCE
-+#define _GNU_SOURCE 1
-+#endif
- #include <pthread.h>
- #include <assert.h>
- #include <pwd.h>
-@@ -54,7 +56,11 @@
- #include <signal.h>
- #include <sched.h>
- #include <time.h>
-+#if defined(HAVE_GETPEERUCRED)
-+#include <ucred.h>
-+#endif
-
-+#include "swab.h"
- #include "../include/saAis.h"
- #include "../include/list.h"
- #include "../include/queue.h"
-@@ -66,6 +72,8 @@
- #include "mainconfig.h"
- #include "totemconfig.h"
- #include "main.h"
-+#include "flow.h"
-+#include "tlist.h"
- #include "ipc.h"
- #include "flow.h"
- #include "service.h"
-@@ -79,6 +87,10 @@
-
- #include "util.h"
-
-+#ifdef OPENAIS_SOLARIS
-+#define MSG_NOSIGNAL 0
-+#endif
-+
- #define SERVER_BACKLOG 5
-
- /*
-@@ -94,11 +106,11 @@
-
- static unsigned int g_gid_valid = 0;
-
--static struct totem_ip_address *my_ip;
--
- static totempg_groups_handle ipc_handle;
-
--DECLARE_LIST_INIT (conn_info_list_head);
-+static pthread_mutex_t conn_io_list_mutex = PTHREAD_MUTEX_INITIALIZER;
-+
-+DECLARE_LIST_INIT (conn_io_list_head);
-
- static void (*ipc_serialize_lock_fn) (void);
-
-@@ -109,148 +121,282 @@
- size_t mlen;
- };
-
--enum conn_state {
-- CONN_STATE_ACTIVE,
-- CONN_STATE_SECURITY,
-- CONN_STATE_REQUESTED,
-- CONN_STATE_CLOSED,
-- CONN_STATE_DISCONNECTED
-+enum conn_io_state {
-+ CONN_IO_STATE_INITIALIZING,
-+ CONN_IO_STATE_AUTHENTICATED,
-+ CONN_IO_STATE_INIT_FAILED
- };
-
--struct conn_info {
-- int fd; /* File descriptor */
-- unsigned int events; /* events polled for by file descriptor */
-- enum conn_state state; /* State of this connection */
-- pthread_t thread; /* thread identifier */
-+enum conn_info_state {
-+ CONN_INFO_STATE_INITIALIZING,
-+ CONN_INFO_STATE_ACTIVE,
-+ CONN_INFO_STATE_DISCONNECT_REQUESTED,
-+ CONN_INFO_STATE_DISCONNECTED
-+};
-+
-+struct conn_info;
-+
-+struct conn_io {
-+ int fd; /* File descriptor */
-+ unsigned int events; /* events polled for by file descriptor */
-+ pthread_t thread; /* thread identifier */
- pthread_attr_t thread_attr; /* thread attribute */
-- char *inb; /* Input buffer for non-blocking reads */
-- int inb_nextheader; /* Next message header starts here */
-- int inb_start; /* Start location of input buffer */
-- int inb_inuse; /* Bytes currently stored in input buffer */
-- struct queue outq; /* Circular queue for outgoing requests */
-- int byte_start; /* Byte to start sending from in head of queue */
-- enum service_types service;/* Type of service so dispatch knows how to route message */
-- int authenticated; /* Is this connection authenticated? */
-- void *private_data; /* library connection private data */
-- struct conn_info *conn_info_partner; /* partner connection dispatch<->response */
-+ char *inb; /* Input buffer for non-blocking reads */
-+ int inb_nextheader; /* Next message header starts here */
-+ int inb_start; /* Start location of input buffer */
-+ int inb_inuse; /* Bytes currently stored in input buffer */
-+ struct queue outq; /* Circular queue for outgoing requests */
-+ int byte_start; /* Byte to start sending from in head of queue */
-+ unsigned int fcc; /* flow control local count */
-+ enum conn_io_state state; /* state of this conn_io connection */
-+ struct conn_info *conn_info; /* connection information combining multiple conn_io structs */
-+ unsigned int refcnt; /* reference count for conn_io data structure */
-+ pthread_mutex_t mutex;
-+ unsigned int service;
-+ struct list_head list;
-+};
-+
-+
-+struct conn_info {
-+ enum conn_info_state state; /* State of this connection */
-+ enum service_types service; /* Type of service so dispatch knows how to route message */
-+ void *private_data; /* library connection private data */
- unsigned int flow_control_handle; /* flow control identifier */
- unsigned int flow_control_enabled; /* flow control enabled bit */
-- unsigned int flow_control_local_count; /* flow control local count */
- enum openais_flow_control flow_control; /* Does this service use IPC flow control */
- pthread_mutex_t flow_control_mutex;
-+ unsigned int flow_control_local_count; /* flow control local count */
- int (*lib_exit_fn) (void *conn);
-- struct timerlist timerlist;
- pthread_mutex_t mutex;
-- pthread_mutex_t *shared_mutex;
-- struct list_head list;
-+ struct conn_io *conn_io_response;
-+ struct conn_io *conn_io_dispatch;
-+ unsigned int refcnt;
- };
-
--static void *prioritized_poll_thread (void *conn);
--static int conn_info_outq_flush (struct conn_info *conn_info);
--static void libais_deliver (struct conn_info *conn_info);
--static void ipc_flow_control (struct conn_info *conn_info);
-+static void *prioritized_poll_thread (void *conn_io_in);
-+static int conn_io_outq_flush (struct conn_io *conn_io);
-+static void conn_io_deliver (struct conn_io *conn_io);
-+//static void ipc_flow_control (struct conn_info *conn_info);
-+static inline void conn_info_destroy (struct conn_info *conn_info);
-+static void conn_io_destroy (struct conn_io *conn_io);
-+static int conn_io_send (struct conn_io *conn_io, void *msg, int mlen);
-+static inline struct conn_info *conn_info_create (void);
-+static int conn_io_found (struct conn_io *conn_io_to_match);
-+
-+static int response_init_send (struct conn_io *conn_io, void *message);
-+static int dispatch_init_send (struct conn_io *conn_io, void *message);
-
- /*
- * IPC Initializers
- */
-
--static int response_init_send_response (
-- struct conn_info *conn_info,
-- void *message);
--static int dispatch_init_send_response (
-- struct conn_info *conn_info,
-- void *message);
--
--static int (*ais_init_service[]) (struct conn_info *conn_info, void *message) = {
-- response_init_send_response,
-- dispatch_init_send_response
-+static int conn_io_refcnt_value (struct conn_io *conn_io)
-+{
-+ unsigned int refcnt;
-+
-+ pthread_mutex_lock (&conn_io->mutex);
-+ refcnt = conn_io->refcnt;
-+ pthread_mutex_unlock (&conn_io->mutex);
-+
-+ return (refcnt);
-+}
-+
-+static void conn_io_refcnt_inc (struct conn_io *conn_io)
-+{
-+ pthread_mutex_lock (&conn_io->mutex);
-+ conn_io->refcnt += 1;
-+ pthread_mutex_unlock (&conn_io->mutex);
-+}
-+
-+static int conn_io_refcnt_dec (struct conn_io *conn_io)
-+{
-+ unsigned int refcnt;
-+
-+ pthread_mutex_lock (&conn_io->mutex);
-+ conn_io->refcnt -= 1;
-+ refcnt = conn_io->refcnt;
-+ pthread_mutex_unlock (&conn_io->mutex);
-+
-+ return (refcnt);
-+}
-+
-+static void conn_info_refcnt_inc (struct conn_info *conn_info)
-+{
-+ /*
-+ * Connection not fully initialized yet
-+ */
-+ if (conn_info == NULL) {
-+ return;
-+ }
-+ pthread_mutex_lock (&conn_info->mutex);
-+ conn_info->refcnt += 1;
-+ pthread_mutex_unlock (&conn_info->mutex);
-+}
-+
-+static void conn_info_refcnt_dec (struct conn_info *conn_info)
-+{
-+ int refcnt;
-+
-+ /*
-+ * Connection not fully initialized yet
-+ */
-+ if (conn_info == NULL) {
-+ return;
-+ }
-+ pthread_mutex_lock (&conn_info->mutex);
-+ conn_info->refcnt -= 1;
-+ refcnt = conn_info->refcnt;
-+ assert (refcnt >= 0);
-+ pthread_mutex_unlock (&conn_info->mutex);
-+
-+ if (refcnt == 0) {
-+ conn_info_destroy (conn_info);
-+ }
-+}
-+
-+void openais_conn_info_refcnt_dec (void *conn)
-+{
-+ struct conn_info *conn_info = (struct conn_info *)conn;
-+
-+ conn_info_refcnt_dec (conn_info);
-+}
-+
-+void openais_conn_info_refcnt_inc (void *conn)
-+{
-+ struct conn_info *conn_info = (struct conn_info *)conn;
-+
-+ conn_info_refcnt_inc (conn_info);
-+}
-+
-+static int (*ais_init_service[]) (struct conn_io *conn_io, void *message) = {
-+ response_init_send,
-+ dispatch_init_send
- };
-
--static void libais_disconnect_security (struct conn_info *conn_info)
-+static void disconnect_request (struct conn_info *conn_info)
- {
-- conn_info->state = CONN_STATE_SECURITY;
-- close (conn_info->fd);
-+unsigned int res;
-+ /*
-+ * connection not fully active yet
-+ */
-+ if (conn_info == NULL) {
-+ return;
-+ }
-+ /*
-+ * We only want to decrement the reference count on these two
-+ * conn_io contexts one time
-+ */
-+ if (conn_info->state != CONN_INFO_STATE_ACTIVE) {
-+ return;
-+ }
-+ res = conn_io_refcnt_dec (conn_info->conn_io_response);
-+ res = conn_io_refcnt_dec (conn_info->conn_io_dispatch);
-+ conn_info->state = CONN_INFO_STATE_DISCONNECT_REQUESTED;
- }
-
--static int response_init_send_response (
-- struct conn_info *conn_info,
-+static int response_init_send (
-+ struct conn_io *conn_io,
- void *message)
- {
- SaAisErrorT error = SA_AIS_ERR_ACCESS;
-- uintptr_t cinfo = (uintptr_t)conn_info;
-+ uintptr_t cinfo = (uintptr_t)conn_io;
- mar_req_lib_response_init_t *req_lib_response_init = (mar_req_lib_response_init_t *)message;
- mar_res_lib_response_init_t res_lib_response_init;
-
-- if (conn_info->authenticated) {
-- conn_info->service = req_lib_response_init->resdis_header.service;
-+ if (conn_io->state == CONN_IO_STATE_AUTHENTICATED) {
- error = SA_AIS_OK;
-+ conn_io->service = req_lib_response_init->resdis_header.service;
- }
- res_lib_response_init.header.size = sizeof (mar_res_lib_response_init_t);
- res_lib_response_init.header.id = MESSAGE_RES_INIT;
- res_lib_response_init.header.error = error;
- res_lib_response_init.conn_info = (mar_uint64_t)cinfo;
-
-- openais_conn_send_response (
-- conn_info,
-+ conn_io_send (
-+ conn_io,
- &res_lib_response_init,
- sizeof (res_lib_response_init));
-
- if (error == SA_AIS_ERR_ACCESS) {
-- libais_disconnect_security (conn_info);
-+ conn_io_destroy (conn_io);
- return (-1);
- }
-+
- return (0);
- }
-
--static int dispatch_init_send_response (
-- struct conn_info *conn_info,
-+/*
-+ * This is called iwth ipc_serialize_lock_fn() called
-+ * Therefore there are no races with the destruction of the conn_io
-+ * data structure
-+ */
-+static int dispatch_init_send (
-+ struct conn_io *conn_io,
- void *message)
- {
- SaAisErrorT error = SA_AIS_ERR_ACCESS;
- uintptr_t cinfo;
- mar_req_lib_dispatch_init_t *req_lib_dispatch_init = (mar_req_lib_dispatch_init_t *)message;
- mar_res_lib_dispatch_init_t res_lib_dispatch_init;
-- struct conn_info *msg_conn_info;
-+ struct conn_io *msg_conn_io;
-+ struct conn_info *conn_info;
-+ unsigned int service;
-+
-+ service = req_lib_dispatch_init->resdis_header.service;
-+ cinfo = (uintptr_t)req_lib_dispatch_init->conn_info;
-+ msg_conn_io = (struct conn_io *)cinfo;
-
-- if (conn_info->authenticated) {
-- conn_info->service = req_lib_dispatch_init->resdis_header.service;
-- if (!ais_service[req_lib_dispatch_init->resdis_header.service])
-+ /*
-+ * The response IPC connection has disconnected already for
-+ * some reason and is no longer referenceable in the system
-+ */
-+ if (conn_io->state == CONN_IO_STATE_AUTHENTICATED) {
-+ /*
-+ * If the response conn_io isn't found, it disconnected.
-+ * Hence, a full connection cannot be made and this connection
-+ * should be aborted by the poll thread
-+ */
-+ if (conn_io_found (msg_conn_io) == 0) {
-+ error = SA_AIS_ERR_TRY_AGAIN;
-+ conn_io->state = CONN_IO_STATE_INIT_FAILED;
-+ } else
-+ /*
-+ * If no service is found for the requested library service,
-+ * the proper service handler isn't loaded and this connection
-+ * should be aborted by the poll thread
-+ */
-+ if (ais_service[service] == NULL) {
- error = SA_AIS_ERR_NOT_SUPPORTED;
-- else
-+ conn_io->state = CONN_IO_STATE_INIT_FAILED;
-+ } else {
- error = SA_AIS_OK;
-+ }
-
-- cinfo = (uintptr_t)req_lib_dispatch_init->conn_info;
-- conn_info->conn_info_partner = (struct conn_info *)cinfo;
--
-- /* temporary fix for memory leak
-+ /*
-+ * The response and dispatch conn_io structures are available.
-+ * Attempt to allocate the appropriate memory for the private
-+ * data area
- */
-- pthread_mutex_destroy (conn_info->conn_info_partner->shared_mutex);
-- free (conn_info->conn_info_partner->shared_mutex);
--
-- conn_info->conn_info_partner->shared_mutex = conn_info->shared_mutex;
--
-- list_add (&conn_info_list_head, &conn_info->list);
-- list_add (&conn_info_list_head, &conn_info->conn_info_partner->list);
--
-- msg_conn_info = (struct conn_info *)cinfo;
-- msg_conn_info->conn_info_partner = conn_info;
--
- if (error == SA_AIS_OK) {
- int private_data_size;
-
-- private_data_size = ais_service[req_lib_dispatch_init->resdis_header.service]->private_data_size;
-+ conn_info = conn_info_create ();
-+ private_data_size = ais_service[service]->private_data_size;
- if (private_data_size) {
- conn_info->private_data = malloc (private_data_size);
-
-- conn_info->conn_info_partner->private_data = conn_info->private_data;
-+ /*
-+ * No private data could be allocated so
-+ * request the poll thread to abort
-+ */
- if (conn_info->private_data == NULL) {
-+ conn_io->state = CONN_IO_STATE_INIT_FAILED;
- error = SA_AIS_ERR_NO_MEMORY;
- } else {
- memset (conn_info->private_data, 0, private_data_size);
- }
- } else {
- conn_info->private_data = NULL;
-- conn_info->conn_info_partner->private_data = NULL;
- }
- }
- }
-@@ -259,287 +405,203 @@
- res_lib_dispatch_init.header.id = MESSAGE_RES_INIT;
- res_lib_dispatch_init.header.error = error;
-
-- openais_conn_send_response (
-- conn_info,
-- &res_lib_dispatch_init,
-- sizeof (res_lib_dispatch_init));
--
-- if (error == SA_AIS_ERR_ACCESS) {
-- libais_disconnect_security (conn_info);
-- return (-1);
-- }
- if (error != SA_AIS_OK) {
-+ conn_io_send (
-+ conn_io,
-+ &res_lib_dispatch_init,
-+ sizeof (res_lib_dispatch_init));
-+
- return (-1);
- }
-
-- conn_info->state = CONN_STATE_ACTIVE;
-- conn_info->conn_info_partner->state = CONN_STATE_ACTIVE;
-- conn_info->lib_exit_fn = ais_service[conn_info->service]->lib_exit_fn;
-+ /*
-+ * connect both dispatch and response conn_ios into the conn_info
-+ * data structure
-+ */
-+ conn_info->state = CONN_INFO_STATE_ACTIVE;
-+ conn_info->lib_exit_fn = ais_service[service]->lib_exit_fn;
-+ conn_info->conn_io_response = msg_conn_io;
-+ conn_info->conn_io_response->conn_info = conn_info;
-+ conn_info->conn_io_dispatch = conn_io;
-+ conn_info->service = service;
-+ conn_io->service = service;
-+ conn_io->conn_info = conn_info;
- ais_service[conn_info->service]->lib_init_fn (conn_info);
-
- conn_info->flow_control = ais_service[conn_info->service]->flow_control;
-- conn_info->conn_info_partner->flow_control = ais_service[conn_info->service]->flow_control;
- if (ais_service[conn_info->service]->flow_control == OPENAIS_FLOW_CONTROL_REQUIRED) {
- openais_flow_control_ipc_init (
- &conn_info->flow_control_handle,
- conn_info->service);
-
- }
-+
-+ /*
-+ * Tell the library the IPC connections are configured
-+ */
-+ conn_io_send (
-+ conn_io,
-+ &res_lib_dispatch_init,
-+ sizeof (res_lib_dispatch_init));
- return (0);
- }
-
- /*
- * Create a connection data structure
- */
--static inline unsigned int conn_info_create (int fd) {
-+static inline struct conn_info *conn_info_create (void)
-+{
- struct conn_info *conn_info;
-- int res;
-
- conn_info = malloc (sizeof (struct conn_info));
- if (conn_info == 0) {
-- return (ENOMEM);
-+ return (NULL);
- }
-
- memset (conn_info, 0, sizeof (struct conn_info));
-
-- res = queue_init (&conn_info->outq, SIZEQUEUE,
-+ conn_info->refcnt = 2;
-+ pthread_mutex_init (&conn_info->mutex, NULL);
-+ conn_info->state = CONN_INFO_STATE_INITIALIZING;
-+
-+ return (conn_info);
-+}
-+
-+static inline void conn_info_destroy (struct conn_info *conn_info)
-+{
-+ if (conn_info->private_data) {
-+ free (conn_info->private_data);
-+ }
-+ pthread_mutex_destroy (&conn_info->mutex);
-+ free (conn_info);
-+}
-+
-+static int conn_io_create (int fd)
-+{
-+ int res;
-+ struct conn_io *conn_io;
-+
-+ conn_io = malloc (sizeof (struct conn_io));
-+ if (conn_io == NULL) {
-+ return (-1);
-+ }
-+ memset (conn_io, 0, sizeof (struct conn_io));
-+
-+ res = queue_init (&conn_io->outq, SIZEQUEUE,
- sizeof (struct outq_item));
- if (res != 0) {
-- free (conn_info);
-- return (ENOMEM);
-+ return (-1);
- }
-- conn_info->inb = malloc (sizeof (char) * SIZEINB);
-- if (conn_info->inb == NULL) {
-- queue_free (&conn_info->outq);
-- free (conn_info);
-- return (ENOMEM);
-- }
-- conn_info->shared_mutex = malloc (sizeof (pthread_mutex_t));
-- if (conn_info->shared_mutex == NULL) {
-- free (conn_info->inb);
-- queue_free (&conn_info->outq);
-- free (conn_info);
-- return (ENOMEM);
-+
-+ conn_io->inb = malloc (sizeof (char) * SIZEINB);
-+ if (conn_io->inb == NULL) {
-+ queue_free (&conn_io->outq);
-+ return (-1);
- }
-
-- pthread_mutex_init (&conn_info->mutex, NULL);
-- pthread_mutex_init (&conn_info->flow_control_mutex, NULL);
-- pthread_mutex_init (conn_info->shared_mutex, NULL);
-+ conn_io->fd = fd;
-+ conn_io->events = POLLIN|POLLNVAL;
-+ conn_io->refcnt = 1;
-+ conn_io->service = SOCKET_SERVICE_INIT;
-+ conn_io->state = CONN_IO_STATE_INITIALIZING;
-
-- list_init (&conn_info->list);
-- conn_info->state = CONN_STATE_ACTIVE;
-- conn_info->fd = fd;
-- conn_info->events = POLLIN|POLLNVAL;
-- conn_info->service = SOCKET_SERVICE_INIT;
-+ pthread_attr_init (&conn_io->thread_attr);
-
-- pthread_attr_init (&conn_info->thread_attr);
--/*
-- * IA64 needs more stack space then other arches
-- */
-+ pthread_mutex_init (&conn_io->mutex, NULL);
-+
-+ /*
-+ * IA64 needs more stack space then other arches
-+ */
- #if defined(__ia64__)
-- pthread_attr_setstacksize (&conn_info->thread_attr, 400000);
-+ pthread_attr_setstacksize (&conn_io->thread_attr, 400000);
- #else
-- pthread_attr_setstacksize (&conn_info->thread_attr, 200000);
-+ pthread_attr_setstacksize (&conn_io->thread_attr, 200000);
- #endif
-
-- pthread_attr_setdetachstate (&conn_info->thread_attr, PTHREAD_CREATE_DETACHED);
-- res = pthread_create (&conn_info->thread, &conn_info->thread_attr,
-- prioritized_poll_thread, conn_info);
-+ pthread_attr_setdetachstate (&conn_io->thread_attr, PTHREAD_CREATE_DETACHED);
-+
-+ res = pthread_create (&conn_io->thread, &conn_io->thread_attr,
-+ prioritized_poll_thread, conn_io);
-+
-+ list_init (&conn_io->list);
-+
-+ pthread_mutex_lock (&conn_io_list_mutex);
-+ list_add (&conn_io->list, &conn_io_list_head);
-+ pthread_mutex_unlock (&conn_io_list_mutex);
- return (res);
- }
-
--static void conn_info_destroy (struct conn_info *conn_info)
-+static void conn_io_destroy (struct conn_io *conn_io)
- {
- struct outq_item *outq_item;
-
- /*
- * Free the outq queued items
- */
-- while (!queue_is_empty (&conn_info->outq)) {
-- outq_item = queue_item_get (&conn_info->outq);
-+ while (!queue_is_empty (&conn_io->outq)) {
-+ outq_item = queue_item_get (&conn_io->outq);
- free (outq_item->msg);
-- queue_item_remove (&conn_info->outq);
-+ queue_item_remove (&conn_io->outq);
- }
-
-- queue_free (&conn_info->outq);
-- free (conn_info->inb);
-- if (conn_info->conn_info_partner) {
-- conn_info->conn_info_partner->conn_info_partner = NULL;
-- }
-+ queue_free (&conn_io->outq);
-+ free (conn_io->inb);
-+ close (conn_io->fd);
-+ pthread_mutex_lock (&conn_io_list_mutex);
-+ list_del (&conn_io->list);
-+ pthread_mutex_unlock (&conn_io_list_mutex);
-
-- pthread_attr_destroy (&conn_info->thread_attr);
-- pthread_mutex_destroy (&conn_info->mutex);
--
-- list_del (&conn_info->list);
-- free (conn_info);
--}
--
--static int libais_connection_active (struct conn_info *conn_info)
--{
-- return (conn_info->state == CONN_STATE_ACTIVE);
-+ pthread_attr_destroy (&conn_io->thread_attr);
-+ pthread_mutex_destroy (&conn_io->mutex);
-+ free (conn_io);
- }
-
--static void libais_disconnect_request (struct conn_info *conn_info)
-+static int conn_io_found (struct conn_io *conn_io_to_match)
- {
-- if (conn_info->state == CONN_STATE_ACTIVE) {
-- conn_info->state = CONN_STATE_REQUESTED;
-- conn_info->conn_info_partner->state = CONN_STATE_REQUESTED;
-- }
--}
-+ struct list_head *list;
-+ struct conn_io *conn_io;
-
--static int libais_disconnect (struct conn_info *conn_info)
--{
-- int res = 0;
--
-- assert (conn_info->state != CONN_STATE_ACTIVE);
--
-- if (conn_info->state == CONN_STATE_DISCONNECTED) {
-- assert (0);
-- }
--
-- /*
-- * Close active connections
-- */
-- if (conn_info->state == CONN_STATE_ACTIVE || conn_info->state == CONN_STATE_REQUESTED) {
-- close (conn_info->fd);
-- conn_info->state = CONN_STATE_CLOSED;
-- close (conn_info->conn_info_partner->fd);
-- conn_info->conn_info_partner->state = CONN_STATE_CLOSED;
-- }
--
-- /*
-- * Note we will only call the close operation once on the first time
-- * one of the connections is closed
-- */
-- if (conn_info->state == CONN_STATE_CLOSED) {
-- if (conn_info->lib_exit_fn) {
-- res = conn_info->lib_exit_fn (conn_info);
-- }
-- if (res == -1) {
-- return (-1);
-- }
-- if (conn_info->conn_info_partner->lib_exit_fn) {
-- res = conn_info->conn_info_partner->lib_exit_fn (conn_info);
-- }
-- if (res == -1) {
-- return (-1);
-+ for (list = conn_io_list_head.next; list != &conn_io_list_head;
-+ list = list->next) {
-+
-+ conn_io = list_entry (list, struct conn_io, list);
-+ if (conn_io == conn_io_to_match) {
-+ return (1);
- }
- }
-- conn_info->state = CONN_STATE_DISCONNECTED;
-- conn_info->conn_info_partner->state = CONN_STATE_DISCONNECTED;
-- if (conn_info->flow_control_enabled == 1) {
-- openais_flow_control_disable (conn_info->flow_control_handle);
-- }
-- return (0);
--}
-
--static inline void conn_info_mutex_lock (
-- struct conn_info *conn_info,
-- unsigned int service)
--{
-- if (service == SOCKET_SERVICE_INIT) {
-- pthread_mutex_lock (&conn_info->mutex);
-- } else {
-- pthread_mutex_lock (conn_info->shared_mutex);
-- }
--}
--static inline void conn_info_mutex_unlock (
-- struct conn_info *conn_info,
-- unsigned int service)
--{
-- if (service == SOCKET_SERVICE_INIT) {
-- pthread_mutex_unlock (&conn_info->mutex);
-- } else {
-- pthread_mutex_unlock (conn_info->shared_mutex);
-- }
-+ return (0);
- }
-
- /*
- * This thread runs in a specific thread priority mode to handle
-- * I/O requests from the library
-+ * I/O requests from or to the library
- */
--static void *prioritized_poll_thread (void *conn)
-+static void *prioritized_poll_thread (void *conn_io_in)
- {
-- struct conn_info *conn_info = (struct conn_info *)conn;
-+ struct conn_io *conn_io = (struct conn_io *)conn_io_in;
-+ struct conn_info *conn_info = NULL;
- struct pollfd ufd;
- int fds;
- struct sched_param sched_param;
- int res;
-- pthread_mutex_t *rel_mutex;
-- unsigned int service;
-- struct conn_info *cinfo_partner;
-- void *private_data;
-
--#if defined(OPENAIS_BSD) || defined(OPENAIS_LINUX)
-- res = sched_get_priority_max (SCHED_RR);
-- if (res != -1) {
-- sched_param.sched_priority = res;
-- res = pthread_setschedparam (conn_info->thread, SCHED_RR, &sched_param);
-- if (res == -1) {
-- log_printf (LOG_LEVEL_WARNING, "Could not set SCHED_RR at priority %d: %s\n",
-- sched_param.sched_priority, strerror (errno));
-- }
-- } else
-- log_printf (LOG_LEVEL_WARNING, "Could not get maximum scheduler priority: %s\n", strerror (errno));
--#else
-- log_printf(LOG_LEVEL_WARNING, "Scheduler priority left to default value (no OS support)\n");
--#endif
-+ sched_param.sched_priority = 99;
-+ res = pthread_setschedparam (conn_io->thread, SCHED_RR, &sched_param);
-
-- ufd.fd = conn_info->fd;
-+ ufd.fd = conn_io->fd;
- for (;;) {
- retry_poll:
-- service = conn_info->service;
-- ufd.events = conn_info->events;
-+ conn_info = conn_io->conn_info;
-+ conn_io_refcnt_inc (conn_io);
-+ conn_info_refcnt_inc (conn_info);
-+
-+ ufd.events = conn_io->events;
- ufd.revents = 0;
- fds = poll (&ufd, 1, -1);
--
-- conn_info_mutex_lock (conn_info, service);
--
-- switch (conn_info->state) {
-- case CONN_STATE_SECURITY:
-- conn_info_mutex_unlock (conn_info, service);
-- pthread_mutex_destroy (conn_info->shared_mutex);
-- free (conn_info->shared_mutex);
-- conn_info_destroy (conn);
-- pthread_exit (0);
-- break;
--
-- case CONN_STATE_REQUESTED:
-- case CONN_STATE_CLOSED:
-- res = libais_disconnect (conn);
-- if (res != 0) {
-- conn_info_mutex_unlock (conn_info, service);
-- goto retry_poll;
-- }
-- break;
--
-- case CONN_STATE_DISCONNECTED:
-- rel_mutex = conn_info->shared_mutex;
-- private_data = conn_info->private_data;
-- cinfo_partner = conn_info->conn_info_partner;
-- conn_info_destroy (conn);
-- if (service == SOCKET_SERVICE_INIT) {
-- pthread_mutex_unlock (&conn_info->mutex);
-- } else {
-- pthread_mutex_unlock (rel_mutex);
-- }
-- if (cinfo_partner == NULL) {
-- pthread_mutex_destroy (rel_mutex);
-- free (rel_mutex);
-- free (private_data);
-- }
-- pthread_exit (0);
-- /*
-- * !! NOTE !! this is the exit point for this thread
-- */
-- break;
--
-- default:
-- break;
-- }
--
- if (fds == -1) {
-- conn_info_mutex_unlock (conn_info, service);
-+ conn_io_refcnt_dec (conn_io);
-+ conn_info_refcnt_dec (conn_info);
- goto retry_poll;
- }
-
-@@ -547,49 +609,151 @@
-
- if (fds == 1 && ufd.revents) {
- if (ufd.revents & (POLLERR|POLLHUP)) {
-+ disconnect_request (conn_info);
-+ conn_info_refcnt_dec (conn_info);
-+ conn_io_refcnt_dec (conn_io);
-+ /*
-+ * If conn_info not set, wait for it to be set
-+ * else break out of for loop
-+ */
-+ if (conn_info == NULL) {
-+ ipc_serialize_unlock_fn ();
-+ continue;
-+ } else {
-+ ipc_serialize_unlock_fn ();
-+ break;
-+ }
-+ }
-
-- libais_disconnect_request (conn_info);
--
-- conn_info_mutex_unlock (conn_info, service);
-+ if (conn_info && conn_info->state == CONN_INFO_STATE_DISCONNECT_REQUESTED) {
-+ conn_info_refcnt_dec (conn_info);
-+ conn_io_refcnt_dec (conn_io);
- ipc_serialize_unlock_fn ();
-- continue;
-+ break;
- }
-
- if (ufd.revents & POLLOUT) {
-- conn_info_outq_flush (conn_info);
-+ conn_io_outq_flush (conn_io);
- }
-
- if ((ufd.revents & POLLIN) == POLLIN) {
-- libais_deliver (conn_info);
-+ conn_io_deliver (conn_io);
- }
-
-- ipc_flow_control (conn_info);
-+ /*
-+ * IPC initializiation failed because response fd
-+ * disconnected before it was linked to dispatch fd
-+ */
-+ if (conn_io->state == CONN_IO_STATE_INIT_FAILED) {
-+ conn_io_destroy (conn_io);
-+ conn_info_refcnt_dec (conn_info);
-+ ipc_serialize_unlock_fn ();
-+ pthread_exit (0);
-+ }
-+ /*
-+ * IPC initializiation failed because response fd
-+ * disconnected before it was linked to dispatch fd
-+ */
-+ if (conn_io->state == CONN_IO_STATE_INIT_FAILED) {
-+ break;
-+ }
-+
-+// ipc_flow_control (conn_info);
-
- }
-
- ipc_serialize_unlock_fn ();
-- conn_info_mutex_unlock (conn_info, service);
-+
-+ conn_io_refcnt_dec (conn_io);
-+ conn_info_refcnt_dec (conn_info);
-+ }
-+
-+ ipc_serialize_lock_fn ();
-+
-+ /*
-+ * IPC initializiation failed because response fd
-+ * disconnected before it was linked to dispatch fd
-+ */
-+ if (conn_io->conn_info == NULL || conn_io->state == CONN_IO_STATE_INIT_FAILED) {
-+ conn_io_destroy (conn_io);
-+ conn_info_refcnt_dec (conn_info);
-+ ipc_serialize_unlock_fn ();
-+ pthread_exit (0);
- }
-
-+ conn_info = conn_io->conn_info;
-+
-+ /*
-+ * This is the response conn_io
-+ */
-+ if (conn_info->conn_io_response == conn_io) {
-+ for (;;) {
-+ if (conn_io_refcnt_value (conn_io) == 0) {
-+ conn_io->conn_info = NULL;
-+ conn_io_destroy (conn_io);
-+ conn_info_refcnt_dec (conn_info);
-+ ipc_serialize_unlock_fn ();
-+ pthread_exit (0);
-+ }
-+ usleep (1000);
-+ printf ("sleep 1\n");
-+ }
-+ } /* response conn_io */
-+
-+ /*
-+ * This is the dispatch conn_io
-+ */
-+ if (conn_io->conn_info->conn_io_dispatch == conn_io) {
-+ ipc_serialize_unlock_fn ();
-+ for (;;) {
-+ ipc_serialize_lock_fn ();
-+ if (conn_io_refcnt_value (conn_io) == 0) {
-+ res = 0; // TODO
-+ /*
-+ * Execute the library exit function
-+ */
-+ if (conn_io->conn_info->lib_exit_fn) {
-+ res = conn_io->conn_info->lib_exit_fn (conn_info);
-+ }
-+ if (res == 0) {
-+ if (conn_io->conn_info->flow_control_enabled == 1) {
-+// openais_flow_control_disable (
-+// conn_info->flow_control_handle);
-+ }
-+ conn_io->conn_info = NULL;
-+ conn_io_destroy (conn_io);
-+ conn_info_refcnt_dec (conn_info);
-+ ipc_serialize_unlock_fn ();
-+ pthread_exit (0);
-+ }
-+ } /* refcnt == 0 */
-+ ipc_serialize_unlock_fn ();
-+ usleep (1000);
-+ } /* for (;;) */
-+ } /* dispatch conn_io */
-+
- /*
- * This code never reached
- */
- return (0);
- }
-
--#if defined(OPENAIS_LINUX)
-+#if defined(OPENAIS_LINUX) || defined(OPENAIS_SOLARIS)
- /* SUN_LEN is broken for abstract namespace
- */
- #define AIS_SUN_LEN(a) sizeof(*(a))
--
--char *socketname = "libais.socket";
- #else
- #define AIS_SUN_LEN(a) SUN_LEN(a)
-+#endif
-
-+#if defined(OPENAIS_LINUX)
-+char *socketname = "libais.socket";
-+#else
- char *socketname = "/var/run/libais.socket";
- #endif
-
-
-+#ifdef COMPILOE_OUT
- static void ipc_flow_control (struct conn_info *conn_info)
- {
- unsigned int entries_used;
-@@ -647,8 +811,9 @@
- }
- }
- }
-+#endif
-
--static int conn_info_outq_flush (struct conn_info *conn_info) {
-+static int conn_io_outq_flush (struct conn_io *conn_io) {
- struct queue *outq;
- int res = 0;
- struct outq_item *queue_item;
-@@ -656,46 +821,51 @@
- struct iovec iov_send;
- char *msg_addr;
-
-- if (!libais_connection_active (conn_info)) {
-- return (-1);
-- }
-- outq = &conn_info->outq;
-+ outq = &conn_io->outq;
-
- msg_send.msg_iov = &iov_send;
- msg_send.msg_name = 0;
- msg_send.msg_namelen = 0;
- msg_send.msg_iovlen = 1;
-+#ifndef OPENAIS_SOLARIS
- msg_send.msg_control = 0;
- msg_send.msg_controllen = 0;
- msg_send.msg_flags = 0;
-+#else
-+ msg_send.msg_accrights = 0;
-+ msg_send.msg_accrightslen = 0;
-+#endif
-
-+ pthread_mutex_lock (&conn_io->mutex);
- while (!queue_is_empty (outq)) {
- queue_item = queue_item_get (outq);
- msg_addr = (char *)queue_item->msg;
-- msg_addr = &msg_addr[conn_info->byte_start];
-+ msg_addr = &msg_addr[conn_io->byte_start];
-
- iov_send.iov_base = msg_addr;
-- iov_send.iov_len = queue_item->mlen - conn_info->byte_start;
-+ iov_send.iov_len = queue_item->mlen - conn_io->byte_start;
-
- retry_sendmsg:
-- res = sendmsg (conn_info->fd, &msg_send, MSG_NOSIGNAL);
-+ res = sendmsg (conn_io->fd, &msg_send, MSG_NOSIGNAL);
- if (res == -1 && errno == EINTR) {
- goto retry_sendmsg;
- }
- if (res == -1 && errno == EAGAIN) {
-+ pthread_mutex_unlock (&conn_io->mutex);
- return (0);
- }
- if (res == -1 && errno == EPIPE) {
-- libais_disconnect_request (conn_info);
-+ disconnect_request (conn_io->conn_info);
-+ pthread_mutex_unlock (&conn_io->mutex);
- return (0);
- }
- if (res == -1) {
-- printf ("ERRNO is %d\n", errno);
- assert (0); /* some other unhandled error here */
- }
-- if (res + conn_info->byte_start != queue_item->mlen) {
-- conn_info->byte_start += res;
-+ if (res + conn_io->byte_start != queue_item->mlen) {
-+ conn_io->byte_start += res;
-
-+ pthread_mutex_unlock (&conn_io->mutex);
- return (0);
- }
-
-@@ -703,14 +873,15 @@
- * Message sent, try sending another message
- */
- queue_item_remove (outq);
-- conn_info->byte_start = 0;
-+ conn_io->byte_start = 0;
- free (queue_item->msg);
- } /* while queue not empty */
-
- if (queue_is_empty (outq)) {
-- conn_info->events = POLLIN|POLLNVAL;
-+ conn_io->events = POLLIN|POLLNVAL;
- }
-
-+ pthread_mutex_unlock (&conn_io->mutex);
- return (0);
- }
-
-@@ -721,7 +892,7 @@
- char buf[4096];
- };
-
--static void libais_deliver (struct conn_info *conn_info)
-+static void conn_io_deliver (struct conn_io *conn_io)
- {
- int res;
- mar_req_header_t *header;
-@@ -733,9 +904,6 @@
- char cmsg_cred[CMSG_SPACE (sizeof (struct ucred))];
- struct ucred *cred;
- int on = 0;
--#else
-- uid_t euid;
-- gid_t egid;
- #endif
- int send_ok = 0;
- int send_ok_joined = 0;
-@@ -746,9 +914,10 @@
- msg_recv.msg_iovlen = 1;
- msg_recv.msg_name = 0;
- msg_recv.msg_namelen = 0;
-+#ifndef OPENAIS_SOLARIS
- msg_recv.msg_flags = 0;
-
-- if (conn_info->authenticated) {
-+ if (conn_io->state == CONN_IO_STATE_AUTHENTICATED) {
- msg_recv.msg_control = 0;
- msg_recv.msg_controllen = 0;
- } else {
-@@ -756,25 +925,61 @@
- msg_recv.msg_control = (void *)cmsg_cred;
- msg_recv.msg_controllen = sizeof (cmsg_cred);
- #else
-- euid = -1; egid = -1;
-- if (getpeereid(conn_info->fd, &euid, &egid) != -1 &&
-- (euid == 0 || egid == g_gid_valid)) {
-- conn_info->authenticated = 1;
-- }
-- if (conn_info->authenticated == 0) {
-- log_printf (LOG_LEVEL_SECURITY, "Connection not authenticated because gid is %d, expecting %d\n", egid, g_gid_valid);
-+ {
-+ uid_t euid;
-+ gid_t egid;
-+
-+ euid = -1; egid = -1;
-+ if (getpeereid(conn_io->fd, &euid, &egid) != -1 &&
-+ (euid == 0 || egid == g_gid_valid)) {
-+ conn_io->state = CONN_IO_STATE_AUTHENTICATED;
-+ }
-+ if (conn_io->state == CONN_IO_STATE_INITIALIZING) {
-+ log_printf (LOG_LEVEL_SECURITY, "Connection not authenticated because gid is %d, expecting %d\n", egid, g_gid_valid);
-+ }
- }
- #endif
- }
-
-- iov_recv.iov_base = &conn_info->inb[conn_info->inb_start];
-- iov_recv.iov_len = (SIZEINB) - conn_info->inb_start;
-- if (conn_info->inb_inuse == SIZEINB) {
-+#else /* OPENAIS_SOLARIS */
-+ msg_recv.msg_accrights = 0;
-+ msg_recv.msg_accrightslen = 0;
-+
-+
-+ if (! conn_info->authenticated) {
-+#ifdef HAVE_GETPEERUCRED
-+ ucred_t *uc;
-+ uid_t euid = -1;
-+ gid_t egid = -1;
-+
-+ if (getpeerucred (conn_info->fd, &uc) == 0) {
-+ euid = ucred_geteuid (uc);
-+ egid = ucred_getegid (uc);
-+ if ((euid == 0) || (egid == g_gid_valid)) {
-+ conn_info->authenticated = 1;
-+ }
-+ ucred_free(uc);
-+ }
-+ if (conn_info->authenticated == 0) {
-+ log_printf (LOG_LEVEL_SECURITY, "Connection not authenticated because gid is %d, expecting %d\n", (int)egid, g_gid_valid);
-+ }
-+ #else
-+ log_printf (LOG_LEVEL_SECURITY, "Connection not authenticated "
-+ "because platform does not support "
-+ "authentication with sockets, continuing "
-+ "with a fake authentication\n");
-+ conn_info->authenticated = 1;
-+ #endif
-+ }
-+ #endif
-+ iov_recv.iov_base = &conn_io->inb[conn_io->inb_start];
-+ iov_recv.iov_len = (SIZEINB) - conn_io->inb_start;
-+ if (conn_io->inb_inuse == SIZEINB) {
- return;
- }
-
- retry_recv:
-- res = recvmsg (conn_info->fd, &msg_recv, MSG_NOSIGNAL);
-+ res = recvmsg (conn_io->fd, &msg_recv, MSG_NOSIGNAL);
- if (res == -1 && errno == EINTR) {
- goto retry_recv;
- } else
-@@ -786,7 +991,7 @@
- /* On many OS poll never return POLLHUP or POLLERR.
- * EOF is detected when recvmsg return 0.
- */
-- libais_disconnect_request (conn_info);
-+ disconnect_request (conn_io);
- #endif
- return;
- }
-@@ -795,17 +1000,17 @@
- * Authenticate if this connection has not been authenticated
- */
- #ifdef OPENAIS_LINUX
-- if (conn_info->authenticated == 0) {
-+ if (conn_io->state == CONN_IO_STATE_INITIALIZING) {
- cmsg = CMSG_FIRSTHDR (&msg_recv);
- assert (cmsg);
- cred = (struct ucred *)CMSG_DATA (cmsg);
- if (cred) {
- if (cred->uid == 0 || cred->gid == g_gid_valid) {
-- setsockopt(conn_info->fd, SOL_SOCKET, SO_PASSCRED, &on, sizeof (on));
-- conn_info->authenticated = 1;
-+ setsockopt(conn_io->fd, SOL_SOCKET, SO_PASSCRED, &on, sizeof (on));
-+ conn_io->state = CONN_IO_STATE_AUTHENTICATED;
- }
- }
-- if (conn_info->authenticated == 0) {
-+ if (conn_io->state == CONN_IO_STATE_INITIALIZING) {
- log_printf (LOG_LEVEL_SECURITY, "Connection not authenticated because gid is %d, expecting %d\n", cred->gid, g_gid_valid);
- }
- }
-@@ -814,23 +1019,23 @@
- * Dispatch all messages received in recvmsg that can be dispatched
- * sizeof (mar_req_header_t) needed at minimum to do any processing
- */
-- conn_info->inb_inuse += res;
-- conn_info->inb_start += res;
-+ conn_io->inb_inuse += res;
-+ conn_io->inb_start += res;
-
-- while (conn_info->inb_inuse >= sizeof (mar_req_header_t) && res != -1) {
-- header = (mar_req_header_t *)&conn_info->inb[conn_info->inb_start - conn_info->inb_inuse];
-+ while (conn_io->inb_inuse >= sizeof (mar_req_header_t) && res != -1) {
-+ header = (mar_req_header_t *)&conn_io->inb[conn_io->inb_start - conn_io->inb_inuse];
-
-- if (header->size > conn_info->inb_inuse) {
-+ if (header->size > conn_io->inb_inuse) {
- break;
- }
-- service = conn_info->service;
-+ service = conn_io->service;
-
- /*
- * If this service is in init phase, initialize service
- * else handle message using service service
- */
-- if (service == SOCKET_SERVICE_INIT) {
-- res = ais_init_service[header->id] (conn_info, header);
-+ if (conn_io->service == SOCKET_SERVICE_INIT) {
-+ res = ais_init_service[header->id] (conn_io, header);
- } else {
- /*
- * Not an init service, but a standard service
-@@ -847,7 +1052,7 @@
- * to queue a message, otherwise tell the library we are busy and to
- * try again later
- */
-- send_ok_joined_iovec.iov_base = header;
-+ send_ok_joined_iovec.iov_base = (char *)header;
- send_ok_joined_iovec.iov_len = header->size;
- send_ok_joined = totempg_groups_send_ok_joined (openais_group_handle,
- &send_ok_joined_iovec, 1);
-@@ -860,7 +1065,7 @@
- (sync_in_process() == 0)));
-
- if (send_ok) {
-- ais_service[service]->lib_service[header->id].lib_handler_fn(conn_info, header);
-+ ais_service[service]->lib_service[header->id].lib_handler_fn(conn_io->conn_info, header);
- } else {
-
- /*
-@@ -871,33 +1076,33 @@
- res_overlay.header.id =
- ais_service[service]->lib_service[header->id].response_id;
- res_overlay.header.error = SA_AIS_ERR_TRY_AGAIN;
-- openais_conn_send_response (
-- conn_info,
-+ conn_io_send (
-+ conn_io,
- &res_overlay,
- res_overlay.header.size);
- }
- }
-- conn_info->inb_inuse -= header->size;
-+ conn_io->inb_inuse -= header->size;
- } /* while */
-
-- if (conn_info->inb_inuse == 0) {
-- conn_info->inb_start = 0;
-+ if (conn_io->inb_inuse == 0) {
-+ conn_io->inb_start = 0;
- } else
--// BUG if (connections[conn_info->fd].inb_start + connections[conn_info->fd].inb_inuse >= SIZEINB) {
-- if (conn_info->inb_start >= SIZEINB) {
-+// BUG if (connections[conn_io->fd].inb_start + connections[conn_io->fd].inb_inuse >= SIZEINB) {
-+ if (conn_io->inb_start >= SIZEINB) {
- /*
- * If in buffer is full, move it back to start
- */
-- memmove (conn_info->inb,
-- &conn_info->inb[conn_info->inb_start - conn_info->inb_inuse],
-- sizeof (char) * conn_info->inb_inuse);
-- conn_info->inb_start = conn_info->inb_inuse;
-+ memmove (conn_io->inb,
-+ &conn_io->inb[conn_io->inb_start - conn_io->inb_inuse],
-+ sizeof (char) * conn_io->inb_inuse);
-+ conn_io->inb_start = conn_io->inb_inuse;
- }
-
- return;
- }
-
--static int poll_handler_libais_accept (
-+static int poll_handler_accept (
- poll_handle handle,
- int fd,
- int revent,
-@@ -945,7 +1150,7 @@
-
- log_printf (LOG_LEVEL_DEBUG, "connection received from libais client %d.\n", new_fd);
-
-- res = conn_info_create (new_fd);
-+ res = conn_io_create (new_fd);
- if (res != 0) {
- close (new_fd);
- }
-@@ -961,7 +1166,7 @@
- int ret = 0;
-
- assert (source != NULL);
-- if (source->nodeid == my_ip->nodeid) {
-+ if (source->nodeid == totempg_my_nodeid_get ()) {
- ret = 1;
- }
- return ret;
-@@ -973,7 +1178,7 @@
- {
- assert ((source != NULL) && (conn != NULL));
- memset (source, 0, sizeof (mar_message_source_t));
-- source->nodeid = my_ip->nodeid;
-+ source->nodeid = totempg_my_nodeid_get ();
- source->conn = conn;
- }
-
-@@ -989,15 +1194,12 @@
- void openais_ipc_init (
- void (*serialize_lock_fn) (void),
- void (*serialize_unlock_fn) (void),
-- unsigned int gid_valid,
-- struct totem_ip_address *my_ip_in)
-+ unsigned int gid_valid)
- {
- int libais_server_fd;
- struct sockaddr_un un_addr;
- int res;
-
-- log_init ("IPC");
--
- ipc_serialize_lock_fn = serialize_lock_fn;
-
- ipc_serialize_unlock_fn = serialize_unlock_fn;
-@@ -1011,7 +1213,7 @@
- openais_exit_error (AIS_DONE_LIBAIS_SOCKET);
- };
-
-- totemip_nosigpipe(libais_server_fd);
-+ totemip_nosigpipe (libais_server_fd);
- res = fcntl (libais_server_fd, F_SETFL, O_NONBLOCK);
- if (res == -1) {
- log_printf (LOG_LEVEL_ERROR, "Could not set non-blocking operation on server socket: %s\n", strerror (errno));
-@@ -1043,12 +1245,10 @@
- * Setup libais connection dispatch routine
- */
- poll_dispatch_add (aisexec_poll_handle, libais_server_fd,
-- POLLIN, 0, poll_handler_libais_accept);
-+ POLLIN, 0, poll_handler_accept);
-
- g_gid_valid = gid_valid;
-
-- my_ip = my_ip_in;
--
- /*
- * Reset internal state of flow control when
- * configuration change occurs
-@@ -1067,33 +1267,14 @@
- {
- struct conn_info *conn_info = (struct conn_info *)conn;
-
-- if (conn != NULL) {
-- return ((void *)conn_info->private_data);
-- } else {
-- return NULL;
-- }
-+ return (conn_info->private_data);
- }
-
--/*
-- * Get the conn info partner connection
-- */
--void *openais_conn_partner_get (void *conn)
--{
-- struct conn_info *conn_info = (struct conn_info *)conn;
--
-- if (conn != NULL) {
-- return ((void *)conn_info->conn_info_partner);
-- } else {
-- return NULL;
-- }
--}
--
--int openais_conn_send_response (
-- void *conn,
-+static int conn_io_send (
-+ struct conn_io *conn_io,
- void *msg,
- int mlen)
- {
-- struct queue *outq;
- char *cmsg;
- int res = 0;
- int queue_empty;
-@@ -1102,47 +1283,47 @@
- struct msghdr msg_send;
- struct iovec iov_send;
- char *msg_addr;
-- struct conn_info *conn_info = (struct conn_info *)conn;
-
-- if (conn_info == NULL) {
-- return -1;
-- }
--
-- if (!libais_connection_active (conn_info)) {
-- return (-1);
-+ if (conn_io == NULL) {
-+ assert (0);
- }
-
-- ipc_flow_control (conn_info);
--
-- outq = &conn_info->outq;
-+// ipc_flow_control (conn_info);
-
- msg_send.msg_iov = &iov_send;
- msg_send.msg_name = 0;
- msg_send.msg_namelen = 0;
- msg_send.msg_iovlen = 1;
-+#ifndef OPENAIS_SOLARIS
- msg_send.msg_control = 0;
- msg_send.msg_controllen = 0;
- msg_send.msg_flags = 0;
-+#else
-+ msg_send.msg_accrights = 0;
-+ msg_send.msg_accrightslen = 0;
-+#endif
-
-- if (queue_is_full (outq)) {
-+ pthread_mutex_lock (&conn_io->mutex);
-+ if (queue_is_full (&conn_io->outq)) {
- /*
- * Start a disconnect if we have not already started one
- * and report that the outgoing queue is full
- */
- log_printf (LOG_LEVEL_ERROR, "Library queue is full, disconnecting library connection.\n");
-- libais_disconnect_request (conn_info);
-+ disconnect_request (conn_io->conn_info);
-+ pthread_mutex_unlock (&conn_io->mutex);
- return (-1);
- }
-- while (!queue_is_empty (outq)) {
-- queue_item = queue_item_get (outq);
-+ while (!queue_is_empty (&conn_io->outq)) {
-+ queue_item = queue_item_get (&conn_io->outq);
- msg_addr = (char *)queue_item->msg;
-- msg_addr = &msg_addr[conn_info->byte_start];
-+ msg_addr = &msg_addr[conn_io->byte_start];
-
- iov_send.iov_base = msg_addr;
-- iov_send.iov_len = queue_item->mlen - conn_info->byte_start;
-+ iov_send.iov_len = queue_item->mlen - conn_io->byte_start;
-
- retry_sendmsg:
-- res = sendmsg (conn_info->fd, &msg_send, MSG_NOSIGNAL);
-+ res = sendmsg (conn_io->fd, &msg_send, MSG_NOSIGNAL);
- if (res == -1 && errno == EINTR) {
- goto retry_sendmsg;
- }
-@@ -1150,29 +1331,30 @@
- break; /* outgoing kernel queue full */
- }
- if (res == -1 && errno == EPIPE) {
-- libais_disconnect_request (conn_info);
-+ disconnect_request (conn_io->conn_info);
-+ pthread_mutex_unlock (&conn_io->mutex);
- return (0);
- }
- if (res == -1) {
-- assert (0);
-+// assert (0);
- break; /* some other error, stop trying to send message */
- }
-- if (res + conn_info->byte_start != queue_item->mlen) {
-- conn_info->byte_start += res;
-+ if (res + conn_io->byte_start != queue_item->mlen) {
-+ conn_io->byte_start += res;
- break;
- }
-
- /*
- * Message sent, try sending another message
- */
-- queue_item_remove (outq);
-- conn_info->byte_start = 0;
-+ queue_item_remove (&conn_io->outq);
-+ conn_io->byte_start = 0;
- free (queue_item->msg);
- } /* while queue not empty */
-
- res = -1;
-
-- queue_empty = queue_is_empty (outq);
-+ queue_empty = queue_is_empty (&conn_io->outq);
- /*
- * Send request message
- */
-@@ -1181,21 +1363,19 @@
- iov_send.iov_base = msg;
- iov_send.iov_len = mlen;
- retry_sendmsg_two:
-- res = sendmsg (conn_info->fd, &msg_send, MSG_NOSIGNAL);
-+ res = sendmsg (conn_io->fd, &msg_send, MSG_NOSIGNAL);
- if (res == -1 && errno == EINTR) {
- goto retry_sendmsg_two;
- }
- if (res == -1 && errno == EAGAIN) {
-- conn_info->byte_start = 0;
-- conn_info->events = POLLIN|POLLNVAL;
-+ conn_io->byte_start = 0;
- }
- if (res != -1) {
- if (res != mlen) {
-- conn_info->byte_start += res;
-+ conn_io->byte_start += res;
- res = -1;
- } else {
-- conn_info->byte_start = 0;
-- conn_info->events = POLLIN|POLLNVAL;
-+ conn_io->byte_start = 0;
- }
- }
- }
-@@ -1207,21 +1387,26 @@
- cmsg = malloc (mlen);
- if (cmsg == 0) {
- log_printf (LOG_LEVEL_ERROR, "Library queue couldn't allocate a message, disconnecting library connection.\n");
-- libais_disconnect_request (conn_info);
-+ disconnect_request (conn_io->conn_info);
-+ pthread_mutex_unlock (&conn_io->mutex);
- return (-1);
- }
- queue_item_out.msg = cmsg;
- queue_item_out.mlen = mlen;
- memcpy (cmsg, msg, mlen);
-- queue_item_add (outq, &queue_item_out);
-+ queue_item_add (&conn_io->outq, &queue_item_out);
-
- /*
-- * Send a pthread_kill to interrupt the poll syscall
-- * and start a new poll operation in the thread
-+ * Send a pthread_kill to interrupt the blocked poll syscall
-+ * and start a new poll operation in the thread if
-+ * POLLOUT is not already set
- */
-- conn_info->events = POLLIN|POLLOUT|POLLNVAL;
-- pthread_kill (conn_info->thread, SIGUSR1);
-+ if (conn_io->events != (POLLIN|POLLOUT|POLLNVAL)) {
-+ conn_io->events = POLLIN|POLLOUT|POLLNVAL;
-+ pthread_kill (conn_io->thread, SIGUSR1);
-+ }
- }
-+ pthread_mutex_unlock (&conn_io->mutex);
- return (0);
- }
-
-@@ -1242,7 +1427,6 @@
- id_len,
- flow_control_state_set_fn,
- context);
-- conn_info->conn_info_partner->flow_control_handle = conn_info->flow_control_handle;
- }
-
- void openais_ipc_flow_control_destroy (
-@@ -1283,3 +1467,18 @@
-
- pthread_mutex_unlock (&conn_info->flow_control_mutex);
- }
-+
-+
-+int openais_response_send (void *conn, void *msg, int mlen)
-+{
-+ struct conn_info *conn_info = (struct conn_info *)conn;
-+
-+ return (conn_io_send (conn_info->conn_io_response, msg, mlen));
-+}
-+
-+int openais_dispatch_send (void *conn, void *msg, int mlen)
-+{
-+ struct conn_info *conn_info = (struct conn_info *)conn;
-+
-+ return (conn_io_send (conn_info->conn_io_dispatch, msg, mlen));
-+}
-diff -uNr openais-0.80.3/exec/ipc.h openais-0.80.3-r1661/exec/ipc.h
---- openais-0.80.3/exec/ipc.h 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/ipc.h 2008-11-17 15:54:02.380604445 +0100
-@@ -42,17 +42,20 @@
-
- extern int message_source_is_local (mar_message_source_t *source);
-
--extern void *openais_conn_partner_get (void *conn);
--
- extern void *openais_conn_private_data_get (void *conn);
-
--extern int openais_conn_send_response (void *conn, void *msg, int mlen);
-+extern int openais_response_send (void *conn, void *msg, int mlen);
-+
-+extern int openais_dispatch_send (void *conn, void *msg, int mlen);
-+
-+extern void openais_conn_info_refcnt_dec (void *conn);
-+
-+extern void openais_conn_info_refcnt_inc (void *conn);
-
- extern void openais_ipc_init (
- void (*serialize_lock_fn) (void),
- void (*serialize_unlock_fn) (void),
-- unsigned int gid_valid,
-- struct totem_ip_address *non_loopback_ip);
-+ unsigned int gid_valid);
-
- extern int openais_ipc_timer_add (
- void *conn,
-diff -uNr openais-0.80.3/exec/keygen.c openais-0.80.3-r1661/exec/keygen.c
---- openais-0.80.3/exec/keygen.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/keygen.c 2008-11-17 15:54:02.380604445 +0100
-@@ -73,7 +73,7 @@
- /*
- * Open key
- */
-- authkey_fd = open ("/etc/ais/authkey", O_CREAT|O_WRONLY);
-+ authkey_fd = open ("/etc/ais/authkey", O_CREAT|O_WRONLY, 600);
- if (authkey_fd == -1) {
- perror ("Could not create /etc/ais/authkey");
- exit (1);
-@@ -81,7 +81,7 @@
- /*
- * Set security of authorization key to uid = 0 uid = 0 mode = 0400
- */
-- fchown (authkey_fd, 0, 0);
-+ res = fchown (authkey_fd, 0, 0);
- fchmod (authkey_fd, 0400);
-
- printf ("Writing openais key to /etc/ais/authkey.\n");
-diff -uNr openais-0.80.3/exec/lck.c openais-0.80.3-r1661/exec/lck.c
---- openais-0.80.3/exec/lck.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/lck.c 2008-11-17 15:54:02.390605772 +0100
-@@ -719,12 +719,12 @@
- &req_exec_lck_resourceopen->source,
- sizeof (mar_message_source_t));
-
-- openais_conn_send_response (
-+ openais_response_send (
- req_exec_lck_resourceopen->source.conn,
- &res_lib_lck_resourceopenasync,
- sizeof (struct res_lib_lck_resourceopenasync));
-- openais_conn_send_response (
-- openais_conn_partner_get (req_exec_lck_resourceopen->source.conn),
-+ openais_dispatch_send (
-+ req_exec_lck_resourceopen->source.conn,
- &res_lib_lck_resourceopenasync,
- sizeof (struct res_lib_lck_resourceopenasync));
- } else {
-@@ -738,7 +738,7 @@
- &req_exec_lck_resourceopen->source,
- sizeof (mar_message_source_t));
-
-- openais_conn_send_response (req_exec_lck_resourceopen->source.conn,
-+ openais_response_send (req_exec_lck_resourceopen->source.conn,
- &res_lib_lck_resourceopen,
- sizeof (struct res_lib_lck_resourceopen));
- }
-@@ -774,7 +774,7 @@
- res_lib_lck_resourceclose.header.size = sizeof (struct res_lib_lck_resourceclose);
- res_lib_lck_resourceclose.header.id = MESSAGE_RES_LCK_RESOURCECLOSE;
- res_lib_lck_resourceclose.header.error = error;
-- openais_conn_send_response (
-+ openais_response_send (
- req_exec_lck_resourceclose->source.conn,
- &res_lib_lck_resourceclose, sizeof (struct res_lib_lck_resourceclose));
- }
-@@ -801,8 +801,8 @@
- res_lib_lck_lockwaitercallback.mode_held = SA_LCK_PR_LOCK_MODE;
- }
-
-- openais_conn_send_response (
-- openais_conn_partner_get (resource_lock->callback_source.conn),
-+ openais_dispatch_send (
-+ resource_lock->callback_source.conn,
- &res_lib_lck_lockwaitercallback,
- sizeof (struct res_lib_lck_lockwaitercallback));
- }
-@@ -837,8 +837,8 @@
- res_lib_lck_resourcelockasync.lockStatus = resource_lock->lock_status;
- res_lib_lck_resourcelockasync.invocation = resource_lock->invocation;
- res_lib_lck_resourcelockasync.lockId = resource_lock->lock_id;
-- openais_conn_send_response (
-- openais_conn_partner_get (source->conn),
-+ openais_dispatch_send (
-+ source->conn,
- &res_lib_lck_resourcelockasync,
- sizeof (struct res_lib_lck_resourcelockasync));
- }
-@@ -861,7 +861,7 @@
- res_lib_lck_resourcelock.header.error = error;
- res_lib_lck_resourcelock.resource_lock = (void *)resource_lock;
- res_lib_lck_resourcelock.lockStatus = resource_lock->lock_status;
-- openais_conn_send_response (source->conn,
-+ openais_response_send (source->conn,
- &res_lib_lck_resourcelock,
- sizeof (struct res_lib_lck_resourcelock));
- }
-@@ -1133,14 +1133,11 @@
- * Deliver async response to library
- */
- req_exec_lck_resourcelock->source.conn =
-- openais_conn_partner_get (req_exec_lck_resourcelock->source.conn);
-+ req_exec_lck_resourcelock->source.conn;
- resource_lock_async_deliver (
- &req_exec_lck_resourcelock->source,
- resource_lock,
- SA_AIS_OK);
--// TODO why is this twice ?
-- req_exec_lck_resourcelock->source.conn =
-- openais_conn_partner_get (req_exec_lck_resourcelock->source.conn);
- }
-
- error_exit:
-@@ -1184,11 +1181,11 @@
- res_lib_lck_resourceunlockasync.invocation =
- req_exec_lck_resourceunlock->invocation;
-
-- openais_conn_send_response (
-+ openais_dispatch_send (
- req_exec_lck_resourceunlock->source.conn,
- &res_lib_lck_resourceunlockasync,
- sizeof (struct res_lib_lck_resourceunlockasync));
-- openais_conn_send_response (
-+ openais_response_send (
- resource_lock->callback_source.conn,
- &res_lib_lck_resourceunlockasync,
- sizeof (struct res_lib_lck_resourceunlockasync));
-@@ -1196,8 +1193,10 @@
- res_lib_lck_resourceunlock.header.size = sizeof (struct res_lib_lck_resourceunlock);
- res_lib_lck_resourceunlock.header.id = MESSAGE_RES_LCK_RESOURCEUNLOCK;
- res_lib_lck_resourceunlock.header.error = error;
-- openais_conn_send_response (req_exec_lck_resourceunlock->source.conn,
-- &res_lib_lck_resourceunlock, sizeof (struct res_lib_lck_resourceunlock));
-+ openais_response_send (
-+ req_exec_lck_resourceunlock->source.conn,
-+ &res_lib_lck_resourceunlock,
-+ sizeof (struct res_lib_lck_resourceunlock));
- }
- }
- }
-@@ -1253,8 +1252,10 @@
- res_lib_lck_lockpurge.header.size = sizeof (struct res_lib_lck_lockpurge);
- res_lib_lck_lockpurge.header.id = MESSAGE_RES_LCK_LOCKPURGE;
- res_lib_lck_lockpurge.header.error = error;
-- openais_conn_send_response (req_exec_lck_lockpurge->source.conn,
-- &res_lib_lck_lockpurge, sizeof (struct res_lib_lck_lockpurge));
-+ openais_response_send (
-+ req_exec_lck_lockpurge->source.conn,
-+ &res_lib_lck_lockpurge,
-+ sizeof (struct res_lib_lck_lockpurge));
- }
- }
-
-@@ -1366,7 +1367,8 @@
- res_lib_lck_resourceclose.header.id = MESSAGE_RES_LCK_RESOURCECLOSE;
- res_lib_lck_resourceclose.header.error = SA_AIS_ERR_NOT_EXIST;
-
-- openais_conn_send_response (conn,
-+ openais_response_send (
-+ conn,
- &res_lib_lck_resourceclose,
- sizeof (struct res_lib_lck_resourceclose));
- }
-diff -uNr openais-0.80.3/exec/main.c openais-0.80.3-r1661/exec/main.c
---- openais-0.80.3/exec/main.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/main.c 2008-11-17 15:54:02.400604305 +0100
-@@ -120,8 +120,6 @@
- }
-
-
--struct totem_ip_address *this_ip;
--struct totem_ip_address this_non_loopback_ip;
- #define LOCALHOST_IP inet_addr("127.0.0.1")
-
- totempg_groups_handle openais_group_handle;
-@@ -175,15 +173,29 @@
- static int openais_sync_callbacks_retrieve (int sync_id,
- struct sync_callbacks *callbacks)
- {
-- if (ais_service[sync_id] == NULL) {
-+ unsigned int ais_service_index;
-+ unsigned int ais_services_found = 0;
-+
-+ for (ais_service_index = 0;
-+ ais_service_index < SERVICE_HANDLER_MAXIMUM_COUNT;
-+ ais_service_index++) {
-+
-+ if (ais_service[ais_service_index] != NULL) {
-+ if (ais_services_found == sync_id) {
-+ break;
-+ }
-+ ais_services_found += 1;
-+ }
-+ }
-+ if (ais_service_index == SERVICE_HANDLER_MAXIMUM_COUNT) {
- memset (callbacks, 0, sizeof (struct sync_callbacks));
- return (-1);
- }
-- callbacks->name = ais_service[sync_id]->name;
-- callbacks->sync_init = ais_service[sync_id]->sync_init;
-- callbacks->sync_process = ais_service[sync_id]->sync_process;
-- callbacks->sync_activate = ais_service[sync_id]->sync_activate;
-- callbacks->sync_abort = ais_service[sync_id]->sync_abort;
-+ callbacks->name = ais_service[ais_service_index]->name;
-+ callbacks->sync_init = ais_service[ais_service_index]->sync_init;
-+ callbacks->sync_process = ais_service[ais_service_index]->sync_process;
-+ callbacks->sync_activate = ais_service[ais_service_index]->sync_activate;
-+ callbacks->sync_abort = ais_service[ais_service_index]->sync_abort;
- return (0);
- }
-
-@@ -200,10 +212,6 @@
-
- memcpy (&aisexec_ring_id, ring_id, sizeof (struct memb_ring_id));
-
-- if (!totemip_localhost_check(this_ip)) {
-- totemip_copy(&this_non_loopback_ip, this_ip);
-- }
--
- /*
- * Call configuration change for all services
- */
-@@ -262,7 +270,6 @@
-
- static void aisexec_tty_detach (void)
- {
--#ifndef DEBUG
- /*
- * Disconnect from TTY if this is not a debug run
- */
-@@ -279,7 +286,6 @@
- exit (0);
- break;
- }
--#endif
- }
-
- static void aisexec_setscheduler (void)
-@@ -392,17 +398,31 @@
- int res;
- int totem_log_service;
- log_init ("MAIN");
-+ unsigned int background;
-+ int ch;
-
-- aisexec_tty_detach ();
-+ background = 1;
-+
-+ while ((ch = getopt (argc, argv, "fp")) != EOF) {
-+ switch (ch) {
-+ case 'f':
-+ background = 0;
-+ break;
-+ default:
-+ fprintf (stderr, "Usage:\n");
-+ fprintf (stderr, " -f : Start application in forground.\n");
-+ return EXIT_FAILURE;
-+ }
-+ }
-+
-+ if (background) {
-+ aisexec_tty_detach ();
-+ }
-
- log_printf (LOG_LEVEL_NOTICE, "AIS Executive Service RELEASE '%s'\n", RELEASE_VERSION);
- log_printf (LOG_LEVEL_NOTICE, "Copyright (C) 2002-2006 MontaVista Software, Inc and contributors.\n");
- log_printf (LOG_LEVEL_NOTICE, "Copyright (C) 2006 Red Hat, Inc.\n");
-
-- memset(&this_non_loopback_ip, 0, sizeof(struct totem_ip_address));
--
-- totemip_localhost(AF_INET, &this_non_loopback_ip);
--
- signal (SIGINT, sigintr_handler);
- signal (SIGUSR2, sigusr2_handler);
- signal (SIGSEGV, sigsegv_handler);
-@@ -548,8 +568,6 @@
- /*
- * This must occur after totempg is initialized because "this_ip" must be set
- */
-- this_ip = &totem_config.interfaces[0].boundto;
--
- res = openais_service_init_all (service_count, objdb);
- if (res == -1) {
- log_printf (LOG_LEVEL_ERROR, "Could not init services\n");
-@@ -577,8 +595,7 @@
- openais_ipc_init (
- serialize_mutex_lock,
- serialize_mutex_unlock,
-- gid_valid,
-- &this_non_loopback_ip);
-+ gid_valid);
-
- /*
- * Start main processing loop
-diff -uNr openais-0.80.3/exec/main.h openais-0.80.3-r1661/exec/main.h
---- openais-0.80.3/exec/main.h 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/main.h 2008-11-17 15:54:02.400604305 +0100
-@@ -53,8 +53,6 @@
-
- #define SIZEINB MESSAGE_SIZE_MAX
-
--extern struct totem_ip_address *this_ip;
--
- extern struct totempg_group openais_group;
-
- extern totempg_groups_handle openais_group_handle;
-diff -uNr openais-0.80.3/exec/msg.c openais-0.80.3-r1661/exec/msg.c
---- openais-0.80.3/exec/msg.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/msg.c 2008-11-17 15:54:02.400604305 +0100
-@@ -675,9 +675,6 @@
- /*
- * Initialize the saved ring ID.
- */
--// saved_ring_id.seq = 0;
--// saved_ring_id.rep.s_addr = this_ip->sin_addr.s_addr;
--
- return (0);
- }
-
-@@ -810,12 +807,12 @@
- &req_exec_msg_queueopen->source,
- sizeof (mar_message_source_t));
-
-- openais_conn_send_response (
-+ openais_response_send (
- req_exec_msg_queueopen->source.conn,
- &res_lib_msg_queueopenasync,
- sizeof (struct res_lib_msg_queueopenasync));
-- openais_conn_send_response (
-- openais_conn_partner_get (req_exec_msg_queueopen->source.conn),
-+ openais_dispatch_send (
-+ req_exec_msg_queueopen->source.conn,
- &res_lib_msg_queueopenasync,
- sizeof (struct res_lib_msg_queueopenasync));
- } else {
-@@ -829,7 +826,7 @@
- &req_exec_msg_queueopen->source,
- sizeof (mar_message_source_t));
-
-- openais_conn_send_response (
-+ openais_dispatch_send (
- req_exec_msg_queueopen->source.conn,
- &res_lib_msg_queueopen,
- sizeof (struct res_lib_msg_queueopen));
-@@ -868,8 +865,10 @@
- res_lib_msg_queueclose.header.size = sizeof (struct res_lib_msg_queueclose);
- res_lib_msg_queueclose.header.id = MESSAGE_RES_MSG_QUEUECLOSE;
- res_lib_msg_queueclose.header.error = error;
-- openais_conn_send_response (req_exec_msg_queueclose->source.conn,
-- &res_lib_msg_queueclose, sizeof (struct res_lib_msg_queueclose));
-+ openais_dispatch_send (
-+ req_exec_msg_queueclose->source.conn,
-+ &res_lib_msg_queueclose,
-+ sizeof (struct res_lib_msg_queueclose));
- }
- }
-
-@@ -930,7 +929,7 @@
- res_lib_msg_queuegroupcreate.header.id = MESSAGE_RES_MSG_QUEUEGROUPCREATE;
- res_lib_msg_queuegroupcreate.header.error = error;
-
-- openais_conn_send_response (
-+ openais_dispatch_send (
- req_exec_msg_queuegroupcreate->source.conn,
- &res_lib_msg_queuegroupcreate,
- sizeof (struct res_lib_msg_queuegroupcreate));
-@@ -977,7 +976,7 @@
- res_lib_msg_queuegroupinsert.header.id = MESSAGE_RES_MSG_QUEUEGROUPCREATE;
- res_lib_msg_queuegroupinsert.header.error = error;
-
-- openais_conn_send_response (
-+ openais_dispatch_send (
- req_exec_msg_queuegroupinsert->source.conn,
- &res_lib_msg_queuegroupinsert,
- sizeof (struct res_lib_msg_queuegroupinsert));
-@@ -1021,7 +1020,7 @@
- res_lib_msg_queuegroupremove.header.id = MESSAGE_RES_MSG_QUEUEGROUPCREATE;
- res_lib_msg_queuegroupremove.header.error = error;
-
-- openais_conn_send_response (
-+ openais_dispatch_send (
- req_exec_msg_queuegroupremove->source.conn,
- &res_lib_msg_queuegroupremove,
- sizeof (struct res_lib_msg_queuegroupremove));
-@@ -1052,7 +1051,7 @@
- res_lib_msg_queuegroupdelete.header.id = MESSAGE_RES_MSG_QUEUEGROUPCREATE;
- res_lib_msg_queuegroupdelete.header.error = error;
-
-- openais_conn_send_response (
-+ openais_dispatch_send (
- req_exec_msg_queuegroupdelete->source.conn,
- &res_lib_msg_queuegroupdelete,
- sizeof (struct res_lib_msg_queuegroupdelete));
-diff -uNr openais-0.80.3/exec/service.c openais-0.80.3-r1661/exec/service.c
---- openais-0.80.3/exec/service.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/service.c 2008-11-17 15:54:02.380604445 +0100
-@@ -87,7 +87,7 @@
- }
- };
-
--struct openais_service_handler *ais_service[128];
-+struct openais_service_handler *ais_service[SERVICE_HANDLER_MAXIMUM_COUNT];
-
- /*
- * Adds a service handler to the object database
-diff -uNr openais-0.80.3/exec/service.h openais-0.80.3-r1661/exec/service.h
---- openais-0.80.3/exec/service.h 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/service.h 2008-11-17 15:54:02.380604445 +0100
-@@ -44,6 +44,7 @@
- #endif
-
- #define SERVICE_ID_MAKE(a,b) ( ((a)<<16) | (b) )
-+#define SERVICE_HANDLER_MAXIMUM_COUNT 64
-
- enum openais_flow_control {
- OPENAIS_FLOW_CONTROL_REQUIRED = 1,
-diff -uNr openais-0.80.3/exec/sync.c openais-0.80.3-r1661/exec/sync.c
---- openais-0.80.3/exec/sync.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/sync.c 2008-11-17 15:54:02.390605772 +0100
-@@ -198,9 +198,10 @@
- {
- int res;
-
--// TODO rewrite this to get rid of the for (;;)
- for (;;) {
-- res = sync_callbacks_retrieve (sync_recovery_index, &sync_callbacks);
-+ res = sync_callbacks_retrieve (sync_recovery_index,
-+ &sync_callbacks);
-+
- /*
- * No more service handlers have sync callbacks at this time
- ` */
-@@ -418,7 +419,6 @@
- log_printf (LOG_LEVEL_DEBUG,
- "Committing synchronization for (%s)\n",
- sync_callbacks.name);
--
- }
-
- /*
-@@ -452,8 +452,12 @@
- {
- sync_ring_id = ring_id;
-
-+ if (configuration_type != TOTEM_CONFIGURATION_REGULAR) {
-+ return;
-+ }
- if (sync_processing && sync_callbacks.sync_abort != NULL) {
- sync_callbacks.sync_abort ();
-+ sync_callbacks.sync_activate = NULL;
- }
- /*
- * If no virtual synchrony filter configured, then start
-diff -uNr openais-0.80.3/exec/timer.c openais-0.80.3-r1661/exec/timer.c
---- openais-0.80.3/exec/timer.c 2007-06-25 04:22:54.000000000 +0200
-+++ openais-0.80.3-r1661/exec/timer.c 2008-11-17 15:54:02.400604305 +0100
-@@ -126,13 +126,13 @@
- if (fds == -1) {
- goto retry_poll;
- }
-- pthread_mutex_lock (&timer_mutex);
- timer_serialize_lock_fn ();
-+ pthread_mutex_lock (&timer_mutex);
-
- timerlist_expire (&timers_timerlist);
-
-- timer_serialize_unlock_fn ();
- pthread_mutex_unlock (&timer_mutex);
-+ timer_serialize_unlock_fn ();
- }
-
- pthread_exit (0);
-@@ -177,7 +177,7 @@
- int res;
- int unlock;
-
-- if (pthread_equal (pthread_self(), expiry_thread) == 0) {
-+ if (pthread_equal (pthread_self(), expiry_thread) != 0) {
- unlock = 0;
- } else {
- unlock = 1;
-@@ -209,7 +209,7 @@
- int res;
- int unlock;
-
-- if (pthread_equal (pthread_self(), expiry_thread) == 0) {
-+ if (pthread_equal (pthread_self(), expiry_thread) != 0) {
- unlock = 0;
- } else {
- unlock = 1;
-@@ -241,7 +241,7 @@
- return;
- }
-
-- if (pthread_equal (pthread_self(), expiry_thread) == 0) {
-+ if (pthread_equal (pthread_self(), expiry_thread) != 0) {
- unlock = 0;
- } else {
- unlock = 1;
-diff -uNr openais-0.80.3/exec/totem.h openais-0.80.3-r1661/exec/totem.h
---- openais-0.80.3/exec/totem.h 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/totem.h 2008-11-17 15:54:02.400604305 +0100
-@@ -89,6 +89,7 @@
- struct totem_interface *interfaces;
- int interface_count;
- unsigned int node_id;
-+ unsigned int clear_node_high_bit;
-
- /*
- * key information
-diff -uNr openais-0.80.3/exec/totemconfig.c openais-0.80.3-r1661/exec/totemconfig.c
---- openais-0.80.3/exec/totemconfig.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/totemconfig.c 2008-11-17 15:54:02.400604305 +0100
-@@ -174,6 +174,13 @@
- */
- objdb_get_int (objdb, object_totem_handle, "nodeid", &totem_config->node_id);
-
-+ totem_config->clear_node_high_bit = 0;
-+ if (!objdb_get_string (objdb,object_totem_handle, "clear_node_high_bit", &str)) {
-+ if (strcmp (str, "yes") == 0) {
-+ totem_config->clear_node_high_bit = 1;
-+ }
-+ }
-+
- objdb_get_int (objdb,object_totem_handle, "threads", &totem_config->threads);
-
-
-diff -uNr openais-0.80.3/exec/totemmrp.c openais-0.80.3-r1661/exec/totemmrp.c
---- openais-0.80.3/exec/totemmrp.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/totemmrp.c 2008-11-17 15:54:02.390605772 +0100
-@@ -191,6 +191,16 @@
- return (res);
- }
-
-+int totemmrp_my_nodeid_get (void)
-+{
-+ return (totemsrp_my_nodeid_get (totemsrp_handle_in));
-+}
-+
-+int totemmrp_my_family_get (void)
-+{
-+ return (totemsrp_my_family_get (totemsrp_handle_in));
-+}
-+
- extern int totemmrp_ring_reenable (void)
- {
- int res;
-diff -uNr openais-0.80.3/exec/totemmrp.h openais-0.80.3-r1661/exec/totemmrp.h
---- openais-0.80.3/exec/totemmrp.h 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/totemmrp.h 2008-11-17 15:54:02.390605772 +0100
-@@ -105,6 +105,10 @@
- char ***status,
- unsigned int *iface_count);
-
-+extern int totemmrp_my_nodeid_get (void);
-+
-+extern int totemmrp_my_family_get (void);
-+
- extern int totemmrp_ring_reenable (void);
-
- #endif /* TOTEMMRP_H_DEFINED */
-diff -uNr openais-0.80.3/exec/totemnet.c openais-0.80.3-r1661/exec/totemnet.c
---- openais-0.80.3/exec/totemnet.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/totemnet.c 2008-11-17 15:54:02.370604375 +0100
-@@ -1227,6 +1227,15 @@
-
- instance->totemnet_poll_handle = poll_handle;
-
-+ if(instance->totem_config->node_id == 0) {
-+ int32_t nodeid = 0;
-+ memcpy (&nodeid, instance->totem_interface->bindnet.addr, sizeof (int32_t));
-+ if(nodeid < 0 && instance->totem_config->clear_node_high_bit) {
-+ nodeid = 0 - nodeid;
-+ }
-+ instance->totem_config->node_id = nodeid;
-+ }
-+
- instance->totem_interface->bindnet.nodeid = instance->totem_config->node_id;
-
- instance->context = context;
-diff -uNr openais-0.80.3/exec/totempg.c openais-0.80.3-r1661/exec/totempg.c
---- openais-0.80.3/exec/totempg.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/totempg.c 2008-11-17 15:54:02.380604445 +0100
-@@ -720,14 +720,16 @@
- * Multicast a message
- */
- static int mcast_msg (
-- struct iovec *iovec,
-+ struct iovec *iovec_in,
- int iov_len,
- int guarantee)
- {
- int res = 0;
- struct totempg_mcast mcast;
- struct iovec iovecs[3];
-+ struct iovec iovec[64];
- int i;
-+ int dest, src;
- int max_packet_size = 0;
- int copy_len = 0;
- int copy_base = 0;
-@@ -736,6 +738,18 @@
- pthread_mutex_lock (&mcast_msg_mutex);
- totemmrp_new_msg_signal ();
-
-+ /*
-+ * Remove zero length iovectors from the list
-+ */
-+ assert (iov_len < 64);
-+ for (dest = 0, src = 0; src < iov_len; src++) {
-+ if (iovec_in[src].iov_len) {
-+ memcpy (&iovec[dest++], &iovec_in[src],
-+ sizeof (struct iovec));
-+ }
-+ }
-+ iov_len = dest;
-+
- max_packet_size = TOTEMPG_PACKET_SIZE -
- (sizeof (unsigned short) * (mcast_packed_msg_count + 1));
-
-@@ -870,13 +884,14 @@
- /*
- * Determine if a message of msg_size could be queued
- */
-+#define FUZZY_AVAIL_SUBTRACT 5
- static int send_ok (
- int msg_size)
- {
- int avail = 0;
- int total;
-
-- avail = totemmrp_avail ();
-+ avail = totemmrp_avail () - FUZZY_AVAIL_SUBTRACT;
-
- /*
- * msg size less then totempg_totem_config->net_mtu - 25 will take up
-@@ -1241,3 +1256,12 @@
- return (iface_string);
- }
-
-+int totempg_my_nodeid_get (void)
-+{
-+ return (totemmrp_my_nodeid_get());
-+}
-+
-+int totempg_my_family_get (void)
-+{
-+ return (totemmrp_my_family_get());
-+}
-diff -uNr openais-0.80.3/exec/totempg.h openais-0.80.3-r1661/exec/totempg.h
---- openais-0.80.3/exec/totempg.h 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/totempg.h 2008-11-17 15:54:02.380604445 +0100
-@@ -137,8 +137,12 @@
- char ***status,
- unsigned int *iface_count);
-
--extern int totempg_ring_reenable (void);
--
- extern char *totempg_ifaces_print (unsigned int nodeid);
-
-+extern int totempg_my_nodeid_get (void);
-+
-+extern int totempg_my_family_get (void);
-+
-+extern int totempg_ring_reenable (void);
-+
- #endif /* TOTEMPG_H_DEFINED */
-diff -uNr openais-0.80.3/exec/totemsrp.c openais-0.80.3-r1661/exec/totemsrp.c
---- openais-0.80.3/exec/totemsrp.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/totemsrp.c 2008-11-17 15:54:02.400604305 +0100
-@@ -138,6 +138,11 @@
- MESSAGE_TYPE_TOKEN_HOLD_CANCEL = 5, /* cancel the holding of the token */
- };
-
-+enum encapsulation_type {
-+ MESSAGE_ENCAPSULATED = 1,
-+ MESSAGE_NOT_ENCAPSULATED = 2
-+};
-+
- /*
- * New membership algorithm local variables
- */
-@@ -393,8 +398,6 @@
-
- unsigned int my_token_seq;
-
-- unsigned int my_commit_token_seq;
--
- /*
- * Timers
- */
-@@ -551,7 +554,8 @@
- int fcc_mcasts_allowed);
- static void messages_free (struct totemsrp_instance *instance, unsigned int token_aru);
-
--static void memb_ring_id_store (struct totemsrp_instance *instance);
-+static void memb_ring_id_set_and_store (struct totemsrp_instance *instance,
-+ struct memb_ring_id *ring_id);
- static void memb_state_commit_token_update (struct totemsrp_instance *instance, struct memb_commit_token *commit_token);
- static void memb_state_commit_token_target_set (struct totemsrp_instance *instance, struct memb_commit_token *commit_token);
- static int memb_state_commit_token_send (struct totemsrp_instance *instance, struct memb_commit_token *memb_commit_token);
-@@ -615,12 +619,10 @@
-
- list_init (&instance->token_callback_sent_listhead);
-
-- instance->my_received_flg = 0;
-+ instance->my_received_flg = 1;
-
- instance->my_token_seq = SEQNO_START_TOKEN - 1;
-
-- instance->my_commit_token_seq = SEQNO_START_TOKEN - 1;
--
- instance->memb_state = MEMB_STATE_OPERATIONAL;
-
- instance->set_aru = -1;
-@@ -903,6 +905,43 @@
- return (res);
- }
-
-+int totemsrp_my_nodeid_get (
-+ totemsrp_handle handle)
-+{
-+ struct totemsrp_instance *instance;
-+ int res;
-+
-+ res = hdb_handle_get (&totemsrp_instance_database, handle,
-+ (void *)&instance);
-+ if (res != 0) {
-+ return (0);
-+ }
-+
-+ res = instance->totem_config->interfaces[0].boundto.nodeid;
-+
-+ hdb_handle_put (&totemsrp_instance_database, handle);
-+ return (res);
-+}
-+
-+int totemsrp_my_family_get (
-+ totemsrp_handle handle)
-+{
-+ struct totemsrp_instance *instance;
-+ int res;
-+
-+ res = hdb_handle_get (&totemsrp_instance_database, handle,
-+ (void *)&instance);
-+ if (res != 0) {
-+ return (0);
-+ }
-+
-+ res = instance->totem_config->interfaces[0].boundto.family;
-+
-+ hdb_handle_put (&totemsrp_instance_database, handle);
-+ return (res);
-+}
-+
-+
- int totemsrp_ring_reenable (
- totemsrp_handle handle)
- {
-@@ -1552,6 +1591,8 @@
- unsigned int new_memb_list_totemip[PROCESSOR_COUNT_MAX];
- unsigned int left_list[PROCESSOR_COUNT_MAX];
-
-+ memb_consensus_reset (instance);
-+
- old_ring_state_reset (instance);
- ring_reset (instance);
- deliver_messages_from_recovery_to_regular (instance);
-@@ -1637,7 +1678,7 @@
- "entering OPERATIONAL state.\n");
- instance->memb_state = MEMB_STATE_OPERATIONAL;
-
-- instance->my_received_flg = 0;
-+ instance->my_received_flg = 1;
-
- return;
- }
-@@ -1646,8 +1687,6 @@
- struct totemsrp_instance *instance,
- int gather_from)
- {
-- instance->my_commit_token_seq = SEQNO_START_TOKEN - 1;
--
- memb_set_merge (
- &instance->my_id, 1,
- instance->my_proc_list, &instance->my_proc_list_entries);
-@@ -1711,10 +1750,10 @@
-
- memb_state_commit_token_target_set (instance, commit_token);
-
-+ memb_ring_id_set_and_store (instance, &commit_token->ring_id);
-+
- memb_state_commit_token_send (instance, commit_token);
-
-- memcpy (&instance->my_ring_id, &commit_token->ring_id,
-- sizeof (struct memb_ring_id));
- instance->token_ring_id_seq = instance->my_ring_id.seq;
-
- poll_timer_delete (instance->totemsrp_poll_handle, instance->memb_timer_state_gather_join_timeout);
-@@ -1733,8 +1772,6 @@
-
- instance->memb_state = MEMB_STATE_COMMIT;
-
-- instance->my_commit_token_seq = SEQNO_START_TOKEN - 1;
--
- /*
- * reset all flow control variables since we are starting a new ring
- */
-@@ -1779,15 +1816,10 @@
- /*
- * Build regular configuration
- */
-- instance->my_new_memb_entries = commit_token->addr_entries;
--
- totemrrp_processor_count_set (
- instance->totemrrp_handle,
- commit_token->addr_entries);
-
-- memcpy (instance->my_new_memb_list, addr,
-- sizeof (struct srp_addr) * instance->my_new_memb_entries);
--
- /*
- * Build transitional configuration
- */
-@@ -1892,13 +1924,14 @@
- // TODO LEAK
- message_item.mcast = malloc (sizeof (struct mcast));
- assert (message_item.mcast);
-- memcpy (message_item.mcast, sort_queue_item->iovec[0].iov_base,
-- sizeof (struct mcast));
-- memcpy (&message_item.mcast->ring_id, &instance->my_ring_id,
-- sizeof (struct memb_ring_id));
-- message_item.mcast->header.encapsulated = 1;
-+ message_item.mcast->header.type = MESSAGE_TYPE_MCAST;
-+ srp_addr_copy (&message_item.mcast->system_from, &instance->my_id);
-+ message_item.mcast->header.encapsulated = MESSAGE_ENCAPSULATED;
- message_item.mcast->header.nodeid = instance->my_id.addr[0].nodeid;
- assert (message_item.mcast->header.nodeid);
-+ message_item.mcast->header.endian_detector = ENDIAN_LOCAL;
-+ memcpy (&message_item.mcast->ring_id, &instance->my_ring_id,
-+ sizeof (struct memb_ring_id));
- message_item.iov_len = sort_queue_item->iov_len;
- memcpy (&message_item.iovec, &sort_queue_item->iovec,
- sizeof (struct iovec) * sort_queue_item->iov_len);
-@@ -1926,7 +1959,6 @@
-
- reset_token_timeout (instance); // REVIEWED
- reset_token_retransmit_timeout (instance); // REVIEWED
-- memb_ring_id_store (instance);
-
- instance->memb_state = MEMB_STATE_RECOVERY;
- return;
-@@ -1993,7 +2025,7 @@
- */
- message_item.mcast->header.type = MESSAGE_TYPE_MCAST;
- message_item.mcast->header.endian_detector = ENDIAN_LOCAL;
-- message_item.mcast->header.encapsulated = 2;
-+ message_item.mcast->header.encapsulated = MESSAGE_NOT_ENCAPSULATED;
- message_item.mcast->header.nodeid = instance->my_id.addr[0].nodeid;
- assert (message_item.mcast->header.nodeid);
-
-@@ -2278,13 +2310,13 @@
- * Delete item from pending queue
- */
- queue_item_remove (mcast_queue);
-+
-+ /*
-+ * If messages mcasted, deliver any new messages to totempg
-+ */
-+ instance->my_high_seq_received = token->seq;
- }
-
-- /*
-- * If messages mcasted, deliver any new messages to totempg
-- */
-- instance->my_high_seq_received = token->seq;
--
- update_aru (instance);
-
- /*
-@@ -2564,14 +2596,14 @@
- orf_token.token_seq = SEQNO_START_TOKEN;
- orf_token.retrans_flg = 1;
- instance->my_set_retrans_flg = 1;
--/*
-+
- if (queue_is_empty (&instance->retrans_message_queue) == 1) {
- orf_token.retrans_flg = 0;
-+ instance->my_set_retrans_flg = 0;
- } else {
- orf_token.retrans_flg = 1;
- instance->my_set_retrans_flg = 1;
- }
--*/
-
- orf_token.aru = 0;
- orf_token.aru = SEQNO_START_MSG - 1;
-@@ -2594,10 +2626,17 @@
- {
- struct srp_addr *addr;
- struct memb_commit_token_memb_entry *memb_list;
-+ unsigned int high_aru;
-+ unsigned int i;
-
- addr = (struct srp_addr *)commit_token->end_of_commit_token;
- memb_list = (struct memb_commit_token_memb_entry *)(addr + commit_token->addr_entries);
-
-+ memcpy (instance->my_new_memb_list, addr,
-+ sizeof (struct srp_addr) * commit_token->addr_entries);
-+
-+ instance->my_new_memb_entries = commit_token->addr_entries;
-+
- memcpy (&memb_list[commit_token->memb_index].ring_id,
- &instance->my_old_ring_id, sizeof (struct memb_ring_id));
- assert (!totemip_zero_check(&instance->my_old_ring_id.rep));
-@@ -2607,9 +2646,43 @@
- * TODO high delivered is really instance->my_aru, but with safe this
- * could change?
- */
-- memb_list[commit_token->memb_index].high_delivered = instance->my_high_delivered;
-+ instance->my_received_flg =
-+ (instance->my_aru == instance->my_high_seq_received);
-+
- memb_list[commit_token->memb_index].received_flg = instance->my_received_flg;
-
-+ memb_list[commit_token->memb_index].high_delivered = instance->my_high_delivered;
-+ /*
-+ * find high aru up to current memb_index for all matching ring ids
-+ * if any ring id matching memb_index has aru less then high aru set
-+ * received flag for that entry to false
-+ */
-+ high_aru = memb_list[commit_token->memb_index].aru;
-+ for (i = 0; i <= commit_token->memb_index; i++) {
-+ if (memcmp (&memb_list[commit_token->memb_index].ring_id,
-+ &memb_list[i].ring_id,
-+ sizeof (struct memb_ring_id)) == 0) {
-+
-+ if (sq_lt_compare (high_aru, memb_list[i].aru)) {
-+ high_aru = memb_list[i].aru;
-+ }
-+ }
-+ }
-+
-+ for (i = 0; i <= commit_token->memb_index; i++) {
-+ if (memcmp (&memb_list[commit_token->memb_index].ring_id,
-+ &memb_list[i].ring_id,
-+ sizeof (struct memb_ring_id)) == 0) {
-+
-+ if (sq_lt_compare (memb_list[i].aru, high_aru)) {
-+ memb_list[i].received_flg = 0;
-+ if (i == commit_token->memb_index) {
-+ instance->my_received_flg = 0;
-+ }
-+ }
-+ }
-+ }
-+
- commit_token->header.nodeid = instance->my_id.addr[0].nodeid;
- commit_token->memb_index += 1;
- assert (commit_token->memb_index <= commit_token->addr_entries);
-@@ -2773,7 +2846,7 @@
- iovs = 2;
- } else {
- iovs = 3;
-- iovec[2].iov_base = &instance->my_failed_list;
-+ iovec[2].iov_base = instance->my_failed_list;
- iovec[2].iov_len = instance->my_failed_list_entries *
- sizeof (struct srp_addr);
- }
-@@ -2846,13 +2919,16 @@
- instance->token_ring_id_seq = memb_ring_id->seq;
- }
-
--static void memb_ring_id_store (
-- struct totemsrp_instance *instance)
-+static void memb_ring_id_set_and_store (
-+ struct totemsrp_instance *instance,
-+ struct memb_ring_id *ring_id)
- {
- char filename[256];
- int fd;
- int res;
-
-+ memcpy (&instance->my_ring_id, ring_id, sizeof (struct memb_ring_id));
-+
- sprintf (filename, "%s/ringid_%s",
- rundir, totemip_print (&instance->my_id.addr[0]));
-
-@@ -3085,7 +3161,6 @@
- unsigned int mcasted_retransmit;
- unsigned int mcasted_regular;
- unsigned int last_aru;
-- unsigned int low_water;
-
- #ifdef GIVEINFO
- struct timeval tv_current;
-@@ -3279,13 +3354,7 @@
- * has recovered all messages it can recover
- * (ie: its retrans queue is empty)
- */
-- low_water = instance->my_aru;
-- if (sq_lt_compare (last_aru, low_water)) {
-- low_water = last_aru;
-- }
--// TODO is this code right
-- if (queue_is_empty (&instance->retrans_message_queue) == 0 ||
-- low_water != instance->my_high_seq_received) {
-+ if (queue_is_empty (&instance->retrans_message_queue) == 0) {
-
- if (token->retrans_flg == 0) {
- token->retrans_flg = 1;
-@@ -3296,10 +3365,10 @@
- token->retrans_flg = 0;
- }
- log_printf (instance->totemsrp_log_level_debug,
-- "token retrans flag is %d my set retrans flag%d retrans queue empty %d count %d, low_water %x aru %x\n",
-+ "token retrans flag is %d my set retrans flag%d retrans queue empty %d count %d, aru %x\n",
- token->retrans_flg, instance->my_set_retrans_flg,
- queue_is_empty (&instance->retrans_message_queue),
-- instance->my_retrans_flg_count, low_water, token->aru);
-+ instance->my_retrans_flg_count, token->aru);
- if (token->retrans_flg == 0) {
- instance->my_retrans_flg_count += 1;
- } else {
-@@ -3311,13 +3380,16 @@
- log_printf (instance->totemsrp_log_level_debug,
- "install seq %x aru %x high seq received %x\n",
- instance->my_install_seq, instance->my_aru, instance->my_high_seq_received);
-- if (instance->my_retrans_flg_count >= 2 && instance->my_aru >= instance->my_install_seq && instance->my_received_flg == 0) {
-+ if (instance->my_retrans_flg_count >= 2 &&
-+ instance->my_received_flg == 0 &&
-+ sq_lte_compare (instance->my_install_seq, instance->my_aru)) {
- instance->my_received_flg = 1;
- instance->my_deliver_memb_entries = instance->my_trans_memb_entries;
- memcpy (instance->my_deliver_memb_list, instance->my_trans_memb_list,
- sizeof (struct totem_ip_address) * instance->my_trans_memb_entries);
- }
-- if (instance->my_retrans_flg_count >= 3 && token->aru >= instance->my_install_seq) {
-+ if (instance->my_retrans_flg_count >= 3 &&
-+ sq_lte_compare (instance->my_install_seq, token->aru)) {
- instance->my_rotation_counter += 1;
- } else {
- instance->my_rotation_counter = 0;
-@@ -3386,9 +3458,10 @@
- struct sort_queue_item *sort_queue_item_p;
- unsigned int i;
- int res;
-- struct mcast *mcast;
-+ struct mcast *mcast_in;
-+ struct mcast mcast_header;
- unsigned int range = 0;
-- int endian_conversion_required = 0 ;
-+ int endian_conversion_required;
- unsigned int my_high_delivered_stored = 0;
-
-
-@@ -3436,18 +3509,27 @@
-
- sort_queue_item_p = ptr;
-
-- mcast = sort_queue_item_p->iovec[0].iov_base;
-- assert (mcast != (struct mcast *)0xdeadbeef);
-+ mcast_in = sort_queue_item_p->iovec[0].iov_base;
-+ assert (mcast_in != (struct mcast *)0xdeadbeef);
-+
-+ endian_conversion_required = 0;
-+ if (mcast_in->header.endian_detector != ENDIAN_LOCAL) {
-+ endian_conversion_required = 1;
-+ mcast_endian_convert (mcast_in, &mcast_header);
-+ } else {
-+ memcpy (&mcast_header, mcast_in, sizeof (struct mcast));
-+ }
-
- /*
- * Skip messages not originated in instance->my_deliver_memb
- */
- if (skip &&
-- memb_set_subset (&mcast->system_from,
-+ memb_set_subset (&mcast_header.system_from,
- 1,
- instance->my_deliver_memb_list,
- instance->my_deliver_memb_entries) == 0) {
-- instance->my_high_delivered = my_high_delivered_stored + i;
-+
-+ instance->my_high_delivered = my_high_delivered_stored + i;
-
- continue;
- }
-@@ -3457,12 +3539,7 @@
- */
- log_printf (instance->totemsrp_log_level_debug,
- "Delivering MCAST message with seq %x to pending delivery queue\n",
-- mcast->seq);
--
-- if (mcast->header.endian_detector != ENDIAN_LOCAL) {
-- endian_conversion_required = 1;
-- mcast_endian_convert (mcast, mcast);
-- }
-+ mcast_header.seq);
-
- /*
- * Message is locally originated multicast
-@@ -3470,7 +3547,7 @@
- if (sort_queue_item_p->iov_len > 1 &&
- sort_queue_item_p->iovec[0].iov_len == sizeof (struct mcast)) {
- instance->totemsrp_deliver_fn (
-- mcast->header.nodeid,
-+ mcast_header.header.nodeid,
- &sort_queue_item_p->iovec[1],
- sort_queue_item_p->iov_len - 1,
- endian_conversion_required);
-@@ -3479,7 +3556,7 @@
- sort_queue_item_p->iovec[0].iov_base += sizeof (struct mcast);
-
- instance->totemsrp_deliver_fn (
-- mcast->header.nodeid,
-+ mcast_header.header.nodeid,
- sort_queue_item_p->iovec,
- sort_queue_item_p->iov_len,
- endian_conversion_required);
-@@ -3511,18 +3588,12 @@
- memcpy (&mcast_header, msg, sizeof (struct mcast));
- }
-
--/*
-- if (mcast_header.header.encapsulated == 1) {
-- sort_queue = &instance->recovery_sort_queue;
-- } else {
-- sort_queue = &instance->regular_sort_queue;
-- }
--*/
-- if (instance->memb_state == MEMB_STATE_RECOVERY) {
-+ if (mcast_header.header.encapsulated == MESSAGE_ENCAPSULATED) {
- sort_queue = &instance->recovery_sort_queue;
- } else {
- sort_queue = &instance->regular_sort_queue;
- }
-+
- assert (msg_len < FRAME_SIZE_MAX);
-
- #ifdef TEST_DROP_MCAST_PERCENTAGE
-@@ -3849,6 +3920,8 @@
- out->header.type = in->header.type;
- out->header.endian_detector = ENDIAN_LOCAL;
- out->header.nodeid = swab32 (in->header.nodeid);
-+ out->header.encapsulated = in->header.encapsulated;
-+
- out->seq = swab32 (in->seq);
- out->this_seqno = swab32 (in->this_seqno);
- totemip_copy_endian_convert(&out->ring_id.rep, &in->ring_id.rep);
-@@ -3961,16 +4034,6 @@
- addr = (struct srp_addr *)memb_commit_token->end_of_commit_token;
- memb_list = (struct memb_commit_token_memb_entry *)(addr + memb_commit_token->addr_entries);
-
-- if (sq_lte_compare (memb_commit_token->token_seq,
-- instance->my_commit_token_seq)) {
-- /*
-- * discard token
-- */
-- return (0);
-- }
-- instance->my_commit_token_seq = memb_commit_token->token_seq;
--
--
- #ifdef TEST_DROP_COMMIT_TOKEN_PERCENTAGE
- if (random()%100 < TEST_DROP_COMMIT_TOKEN_PERCENTAGE) {
- return (0);
-@@ -3998,9 +4061,15 @@
- break;
-
- case MEMB_STATE_COMMIT:
--// if (memcmp (&memb_commit_token->ring_id, &instance->my_ring_id,
--// sizeof (struct memb_ring_id)) == 0) {
-- if (memb_commit_token->ring_id.seq == instance->my_ring_id.seq) {
-+ /*
-+ * If retransmitted commit tokens are sent on this ring
-+ * filter them out and only enter recovery once the
-+ * commit token has traversed the array. This is
-+ * determined by :
-+ * memb_commit_token->memb_index == memb_commit_token->addr_entries) {
-+ */
-+ if (memb_commit_token->ring_id.seq == instance->my_ring_id.seq &&
-+ memb_commit_token->memb_index == memb_commit_token->addr_entries) {
- memb_state_recovery_enter (instance, memb_commit_token);
- }
- break;
-@@ -4051,7 +4120,12 @@
- log_printf (instance->totemsrp_log_level_security, "Received message is too short... ignoring %d.\n", msg_len);
- return;
- }
--
-+
-+ if ((int)message_header->type >= totemsrp_message_handlers.count) {
-+ log_printf (instance->totemsrp_log_level_security, "Type of received message is wrong... ignoring %d.\n", (int)message_header->type);
-+ return;
-+ }
-+
- /*
- * Handle incoming message
- */
-diff -uNr openais-0.80.3/exec/totemsrp.h openais-0.80.3-r1661/exec/totemsrp.h
---- openais-0.80.3/exec/totemsrp.h 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/totemsrp.h 2008-11-17 15:54:02.400604305 +0100
-@@ -104,6 +104,12 @@
- char ***status,
- unsigned int *iface_count);
-
-+extern int totemsrp_my_nodeid_get (
-+ totemsrp_handle handle);
-+
-+extern int totemsrp_my_family_get (
-+ totemsrp_handle handle);
-+
- extern int totemsrp_ring_reenable (
- totemsrp_handle handle);
-
-diff -uNr openais-0.80.3/exec/util.c openais-0.80.3-r1661/exec/util.c
---- openais-0.80.3/exec/util.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/util.c 2008-11-17 15:54:02.380604445 +0100
-@@ -84,10 +84,88 @@
- return time_now;
- }
-
-+struct error_code_entry {
-+ enum e_ais_done code;
-+ char *string;
-+};
-+
-+static struct error_code_entry error_code_map[] = {
-+ {
-+ .code = AIS_DONE_EXIT,
-+ .string = "finished, exiting normally"
-+ },
-+ {
-+ .code = AIS_DONE_UID_DETERMINE,
-+ .string = "could not determine the process UID"
-+ },
-+ {
-+ .code = AIS_DONE_GID_DETERMINE,
-+ .string = "could not determine the process GID"
-+ },
-+ {
-+ .code = AIS_DONE_MEMPOOL_INIT,
-+ .string = "could not initialize the memory pools"
-+ },
-+ {
-+ .code = AIS_DONE_FORK,
-+ .string = "could not fork"
-+ },
-+ {
-+ .code = AIS_DONE_LIBAIS_SOCKET,
-+ .string = "could not create a socket"
-+ },
-+ {
-+ .code = AIS_DONE_LIBAIS_BIND,
-+ .string = "could not bind to an address"
-+ },
-+ {
-+ .code = AIS_DONE_READKEY,
-+ .string = "could not read the security key"
-+ },
-+ {
-+ .code = AIS_DONE_MAINCONFIGREAD,
-+ .string = "could not read the main configuration file"
-+ },
-+ {
-+ .code = AIS_DONE_LOGSETUP,
-+ .string = "could not setup the logging system"
-+ },
-+ {
-+ .code = AIS_DONE_AMFCONFIGREAD,
-+ .string = "could not read the AMF configuration"
-+ },
-+ {
-+ .code = AIS_DONE_DYNAMICLOAD,
-+ .string = "could not load a dynamic object"
-+ },
-+ { .code = AIS_DONE_OBJDB,
-+ .string = "could not use the object database"
-+ },
-+ {
-+ .code = AIS_DONE_INIT_SERVICES,
-+ .string = "could not initlalize services"
-+ },
-+ {
-+ .code = AIS_DONE_OUT_OF_MEMORY,
-+ .string = "Out of memory"
-+ },
-+ {
-+ .code = AIS_DONE_FATAL_ERR,
-+ .string = "Unknown fatal error"
-+ },
-+};
-
- void openais_exit_error (enum e_ais_done err)
- {
-- log_printf (LOG_LEVEL_ERROR, "AIS Executive exiting (%d).\n", err);
-+ char *error_string = "Error code not available";
-+ int i;
-+
-+ for (i = 0; i < (sizeof (error_code_map) / sizeof (struct error_code_entry)); i++) {
-+ if (err == error_code_map[i].code) {
-+ error_string = error_code_map[i].string;
-+ }
-+ }
-+ log_printf (LOG_LEVEL_ERROR, "AIS Executive exiting (reason: %s).\n", error_string);
- log_flush();
- exit (err);
- }
-diff -uNr openais-0.80.3/exec/version.h openais-0.80.3-r1661/exec/version.h
---- openais-0.80.3/exec/version.h 2007-06-26 13:36:38.000000000 +0200
-+++ openais-0.80.3-r1661/exec/version.h 2008-11-17 15:54:02.380604445 +0100
-@@ -1 +1 @@
--#define RELEASE_VERSION "subrev 1358 version 0.80.3"
-+#define RELEASE_VERSION "subrev 1152 version 0.80"
-diff -uNr openais-0.80.3/exec/vsf_ykd.c openais-0.80.3-r1661/exec/vsf_ykd.c
---- openais-0.80.3/exec/vsf_ykd.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/exec/vsf_ykd.c 2008-11-17 15:54:02.390605772 +0100
-@@ -458,7 +458,7 @@
- memcpy (&ykd_ring_id, ring_id, sizeof (struct memb_ring_id));
-
- if (first_run) {
-- ykd_state.last_primary.member_list[0] = this_ip->nodeid;
-+ ykd_state.last_primary.member_list[0] = totempg_my_nodeid_get();
- ykd_state.last_primary.member_list_entries = 1;
- ykd_state.last_primary.session_id = 0;
- first_run = 0;
-diff -uNr openais-0.80.3/include/saCkpt.h openais-0.80.3-r1661/include/saCkpt.h
---- openais-0.80.3/include/saCkpt.h 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/include/saCkpt.h 2008-11-17 15:54:00.450629028 +0100
-@@ -199,7 +199,7 @@
- SaCkptCheckpointHandleT checkpointHandle,
- SaCkptSectionCreationAttributesT *sectionCreationAttributes,
- const void *initialData,
-- SaUint32T initialDataSize);
-+ SaSizeT initialDataSize);
-
-
- SaAisErrorT
-diff -uNr openais-0.80.3/init/redhat openais-0.80.3-r1661/init/redhat
---- openais-0.80.3/init/redhat 2007-06-26 13:38:35.000000000 +0200
-+++ openais-0.80.3-r1661/init/redhat 2008-11-17 15:54:02.790606471 +0100
-@@ -15,6 +15,7 @@
- lockfile="/var/lock/subsys/$prog"
-
- start() {
-+ [ -x "$exec" ] || exit 5
- echo -n $"Starting OpenAIS daemon ($prog): "
- daemon $exec
- retval=$?
-diff -uNr openais-0.80.3/lcr/Makefile openais-0.80.3-r1661/lcr/Makefile
---- openais-0.80.3/lcr/Makefile 2006-04-21 01:17:16.000000000 +0200
-+++ openais-0.80.3-r1661/lcr/Makefile 2008-11-17 15:53:59.910615969 +0100
-@@ -27,7 +27,7 @@
- include ../Makefile.inc
-
- CFLAGS += -I../include
--LDFLAGS += -L./ ${DYFLAGS}
-+override LDFLAGS += ${DYFLAGS}
-
- ifeq (${OPENAIS_COMPAT}, LINUX)
- LDFLAGS += -ldl
-@@ -57,7 +57,7 @@
- endif
-
- test: test.o uis.o lcr_ifact.o
-- $(CC) $(LDFLAGS) test.o lcr_ifact.o uis.o -lpthread -o test
-+ $(CC) $(LDFLAGS) -fPIC test.o lcr_ifact.o uis.o -lpthread -o test
-
- test_static: test.o libtest_a.o libtest_b.o uis.o lcr_ifact.o
- $(CC) $(LDFLAGS) test.o libtest_a.o libtest_b.o lcr_ifact.o -o test_static
-@@ -71,6 +71,12 @@
- libtest_b.o: libtest_b.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
-
-+lcr_ifact.o: lcr_ifact.c
-+ $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
-+
-+test.o: test.c
-+ $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
-+
- clean:
- rm -f test libtest.so* *.o uic liblcr.so* liblcr.a *.lcrso *.da *.ba *.bb *.bbg \
- test_static
-diff -uNr openais-0.80.3/lcr/lcr_ifact.c openais-0.80.3-r1661/lcr/lcr_ifact.c
---- openais-0.80.3/lcr/lcr_ifact.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/lcr/lcr_ifact.c 2008-11-17 15:53:59.910615969 +0100
-@@ -45,6 +45,7 @@
- struct lcr_component_instance {
- struct lcr_iface *ifaces;
- int iface_count;
-+ unsigned int comp_handle;
- void *dl_handle;
- int refcount;
- char library_name[256];
-@@ -68,7 +69,7 @@
- .iterator = 0
- };
-
--static unsigned int g_component_handle;
-+static unsigned int g_component_handle = 0xFFFFFFFF;
-
- #ifdef OPENAIS_LINUX
- static int lcr_select_so (const struct dirent *dirent)
-@@ -170,7 +171,6 @@
-
- res = getcwd (cwd, sizeof (cwd));
- if (res != NULL) {
-- strcat (cwd, "/");
- path_list[0] = strdup (cwd);
- path_list_entries++;
- }
-@@ -291,6 +291,8 @@
- }
- dl_handle = dlopen (dl_name, RTLD_LAZY);
- if (dl_handle == NULL) {
-+ fprintf (stderr, "LCR error loading plugin: %s\n",
-+ dlerror());
- continue;
- }
- instance = lcr_comp_find (iface_name, version, iface_number);
-@@ -301,8 +303,8 @@
- }
-
- /*
-- * No matching interfaces found, try next shared object
-- */
-+ * No matching interfaces found, try next shared object
-+ */
- if (g_component_handle != 0xFFFFFFFF) {
- hdb_handle_destroy (&lcr_component_instance_database,
- g_component_handle);
-@@ -349,19 +351,19 @@
-
- // TODO error checking in this code is weak
- /*
-- * Find all *.lcrso files in search paths
-+ * Search through all lcrso files for desired interface
- */
- for (i = 0; i < path_list_entries; i++) {
-- res = interface_find_and_load (
-- path_list[i],
-- iface_name,
-- version,
-- &instance,
-- &iface_number);
-+ res = interface_find_and_load (
-+ path_list[i],
-+ iface_name,
-+ version,
-+ &instance,
-+ &iface_number);
-
-- if (res == 0) {
-- goto found;
-- }
-+ if (res == 0) {
-+ goto found;
-+ }
- }
-
- /*
-@@ -379,9 +381,10 @@
- iface_handle);
- hdb_handle_get (&lcr_iface_instance_database,
- *iface_handle, (void *)&iface_instance);
-- iface_instance->component_handle = g_component_handle;
-+ iface_instance->component_handle = instance->comp_handle;
- iface_instance->context = context;
- iface_instance->destructor = instance->ifaces[iface_number].destructor;
-+ hdb_handle_put (&lcr_iface_instance_database, *iface_handle);
- return (0);
- }
-
-@@ -408,17 +411,21 @@
- void lcr_component_register (struct lcr_comp *comp)
- {
- struct lcr_component_instance *instance;
-+ static unsigned int comp_handle;
-
- hdb_handle_create (&lcr_component_instance_database,
- sizeof (struct lcr_component_instance),
-- &g_component_handle);
-+ &comp_handle);
- hdb_handle_get (&lcr_component_instance_database,
-- g_component_handle, (void *)&instance);
-+ comp_handle, (void *)&instance);
-
- instance->ifaces = comp->ifaces;
- instance->iface_count = comp->iface_count;
-+ instance->comp_handle = comp_handle;
- instance->dl_handle = NULL;
-
- hdb_handle_put (&lcr_component_instance_database,
-- g_component_handle);
-+ comp_handle);
-+
-+ g_component_handle = comp_handle;
- }
-diff -uNr openais-0.80.3/lcr/test.c openais-0.80.3-r1661/lcr/test.c
---- openais-0.80.3/lcr/test.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/lcr/test.c 2008-11-17 15:53:59.900633359 +0100
-@@ -87,7 +87,7 @@
- (void *)0xaaaa1111);
- assert (res == 0);
-
-- a_iface_ver1 = (struct iface *)a_iface_ver0_p;
-+ a_iface_ver1 = (struct iface *)a_iface_ver1_p;
-
- res = lcr_ifact_reference (
- &b_ifact_handle_ver1,
-@@ -97,7 +97,7 @@
- (void *)0xbbbb1111);
- assert (res == 0);
-
-- b_iface_ver1 = (struct iface *)b_iface_ver0_p;
-+ b_iface_ver1 = (struct iface *)b_iface_ver1_p;
-
- a_iface_ver0->func1();
- a_iface_ver0->func2();
-diff -uNr openais-0.80.3/lib/amf.c openais-0.80.3-r1661/lib/amf.c
---- openais-0.80.3/lib/amf.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/lib/amf.c 2008-11-17 15:54:03.480606331 +0100
-@@ -101,6 +101,10 @@
-
- void amfHandleInstanceDestructor (void *instance)
- {
-+ struct amfInstance *amfInstance = instance;
-+
-+ pthread_mutex_destroy (&amfInstance->response_mutex);
-+ pthread_mutex_destroy (&amfInstance->dispatch_mutex);
- }
-
- SaAisErrorT
-diff -uNr openais-0.80.3/lib/cfg.c openais-0.80.3-r1661/lib/cfg.c
---- openais-0.80.3/lib/cfg.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/lib/cfg.c 2008-11-17 15:54:03.480606331 +0100
-@@ -88,6 +88,10 @@
- */
- void cfg_handleInstanceDestructor (void *instance)
- {
-+ struct cfg_instance *cfg_instance = instance;
-+
-+ pthread_mutex_destroy (&cfg_instance->response_mutex);
-+ pthread_mutex_destroy (&cfg_instance->dispatch_mutex);
- }
-
- SaAisErrorT
-diff -uNr openais-0.80.3/lib/ckpt.c openais-0.80.3-r1661/lib/ckpt.c
---- openais-0.80.3/lib/ckpt.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/lib/ckpt.c 2008-11-17 15:54:03.480606331 +0100
-@@ -155,15 +155,24 @@
- */
- void ckptHandleInstanceDestructor (void *instance)
- {
-+ struct ckptInstance *ckptInstance = instance;
-+
-+ pthread_mutex_destroy (&ckptInstance->response_mutex);
-+ pthread_mutex_destroy (&ckptInstance->dispatch_mutex);
- }
-
- void checkpointHandleInstanceDestructor (void *instance)
- {
-- return;
-+ struct ckptCheckpointInstance *checkpointInstance = instance;
-+
-+ pthread_mutex_destroy (&checkpointInstance->response_mutex);
- }
-
- void ckptSectionIterationHandleInstanceDestructor (void *instance)
- {
-+ struct ckptSectionIterationInstance *iterationInstance = instance;
-+
-+ pthread_mutex_destroy (&iterationInstance->response_mutex);
- }
-
- static void ckptSectionIterationInstanceFinalize (struct ckptSectionIterationInstance *ckptSectionIterationInstance)
-@@ -191,8 +200,6 @@
-
- saHandleDestroy (&ckptSectionIterationHandleDatabase,
- ckptSectionIterationInstance->sectionIterationHandle);
--
-- pthread_mutex_destroy (&ckptSectionIterationInstance->response_mutex);
- }
-
- static void ckptCheckpointInstanceFinalize (struct ckptCheckpointInstance *ckptCheckpointInstance)
-@@ -216,8 +223,6 @@
- list_del (&ckptCheckpointInstance->list);
-
- saHandleDestroy (&checkpointHandleDatabase, ckptCheckpointInstance->checkpointHandle);
--
-- pthread_mutex_destroy (&ckptCheckpointInstance->response_mutex);
- }
-
- static void ckptInstanceFinalize (struct ckptInstance *ckptInstance)
-@@ -1027,7 +1032,7 @@
- SaCkptCheckpointHandleT checkpointHandle,
- SaCkptSectionCreationAttributesT *sectionCreationAttributes,
- const void *initialData,
-- SaUint32T initialDataSize)
-+ SaSizeT initialDataSize)
- {
- SaAisErrorT error;
- struct ckptCheckpointInstance *ckptCheckpointInstance;
-diff -uNr openais-0.80.3/lib/clm.c openais-0.80.3-r1661/lib/clm.c
---- openais-0.80.3/lib/clm.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/lib/clm.c 2008-11-17 15:54:03.490605981 +0100
-@@ -92,6 +92,10 @@
-
- void clmHandleInstanceDestructor (void *instance)
- {
-+ struct clmInstance *clmInstance = instance;
-+
-+ pthread_mutex_destroy (&clmInstance->response_mutex);
-+ pthread_mutex_destroy (&clmInstance->dispatch_mutex);
- }
-
-
-@@ -494,9 +498,6 @@
- clmInstance->finalize = 1;
-
- pthread_mutex_unlock (&clmInstance->response_mutex);
-- pthread_mutex_destroy (&clmInstance->response_mutex);
--
-- pthread_mutex_destroy (&clmInstance->dispatch_mutex);
-
- saHandleDestroy (&clmHandleDatabase, clmHandle);
-
-diff -uNr openais-0.80.3/lib/cpg.c openais-0.80.3-r1661/lib/cpg.c
---- openais-0.80.3/lib/cpg.c 2007-06-25 05:09:31.000000000 +0200
-+++ openais-0.80.3-r1661/lib/cpg.c 2008-11-17 15:54:03.490605981 +0100
-@@ -1,7 +1,7 @@
- /*
- * vi: set autoindent tabstop=4 shiftwidth=4 :
- *
-- * Copyright (c) 2006-2007 Red Hat, Inc.
-+ * Copyright (c) 2006-2008 Red Hat, Inc.
- *
- * All rights reserved.
- *
-@@ -76,6 +76,10 @@
- */
- static void cpg_instance_destructor (void *instance)
- {
-+ struct cpg_inst *cpg_inst = instance;
-+
-+ pthread_mutex_destroy (&cpg_inst->response_mutex);
-+ pthread_mutex_destroy (&cpg_inst->dispatch_mutex);
- }
-
-
-@@ -103,8 +107,7 @@
- goto error_destroy;
- }
-
-- error = saServiceConnect (&cpg_inst->dispatch_fd,
-- &cpg_inst->response_fd,
-+ error = saServiceConnect (&cpg_inst->response_fd, &cpg_inst->dispatch_fd,
- CPG_SERVICE);
- if (error != SA_AIS_OK) {
- goto error_put_destroy;
-@@ -153,9 +156,6 @@
- cpg_inst->finalize = 1;
-
- pthread_mutex_unlock (&cpg_inst->response_mutex);
-- pthread_mutex_destroy (&cpg_inst->response_mutex);
--
-- pthread_mutex_destroy (&cpg_inst->dispatch_mutex);
-
- saHandleDestroy (&cpg_handle_t_db, handle);
-
-@@ -457,7 +457,7 @@
- iov[0].iov_base = &req_lib_cpg_trackstart;
- iov[0].iov_len = sizeof (struct req_lib_cpg_trackstart);
-
-- error = saSendMsgReceiveReply (cpg_inst->dispatch_fd, iov, 1,
-+ error = saSendMsgReceiveReply (cpg_inst->response_fd, iov, 1,
- &res_lib_cpg_trackstart, sizeof (struct res_lib_cpg_trackstart));
-
- if (error != SA_AIS_OK) {
-diff -uNr openais-0.80.3/lib/evs.c openais-0.80.3-r1661/lib/evs.c
---- openais-0.80.3/lib/evs.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/lib/evs.c 2008-11-17 15:54:03.490605981 +0100
-@@ -80,6 +80,10 @@
- */
- static void evs_instance_destructor (void *instance)
- {
-+ struct evs_inst *evs_inst = instance;
-+
-+ pthread_mutex_destroy (&evs_inst->response_mutex);
-+ pthread_mutex_destroy (&evs_inst->dispatch_mutex);
- }
-
-
-@@ -162,9 +166,6 @@
- evs_inst->finalize = 1;
-
- pthread_mutex_unlock (&evs_inst->response_mutex);
-- pthread_mutex_destroy (&evs_inst->response_mutex);
--
-- pthread_mutex_destroy (&evs_inst->dispatch_mutex);
-
- saHandleDestroy (&evs_handle_t_db, handle);
- /*
-diff -uNr openais-0.80.3/lib/evt.c openais-0.80.3-r1661/lib/evt.c
---- openais-0.80.3/lib/evt.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/lib/evt.c 2008-11-17 15:54:03.480606331 +0100
-@@ -110,10 +110,12 @@
- * ei_version: version sent to the evtInitialize call.
- * ei_node_id: our node id.
- * ei_node_name: our node name.
-- * ei_finalize: instance in finalize flag
-- * ei_dispatch_mutex: mutex for dispatch fd
-+ * ei_dispatch_mutex: mutex for dispatch fd. This lock also ensures that
-+ * only one thread is using ei_dispatch_data.
- * ei_response_mutex: mutex for response fd
- * ei_channel_list: list of associated channels (struct handle_list)
-+ * ei_dispatch_data: event buffer for evtDispatch
-+ * ei_finalize: instance in finalize flag
- * ei_data_available: Indicates that there is a pending event message though
- * there may not be a poll event. This can happen
- * when we get a SA_AIS_ERR_TRY_AGAIN when asking for an
-@@ -127,11 +129,12 @@
- SaVersionT ei_version;
- SaClmNodeIdT ei_node_id;
- SaNameT ei_node_name;
-- int ei_finalize;
- pthread_mutex_t ei_dispatch_mutex;
- pthread_mutex_t ei_response_mutex;
- struct list_head ei_channel_list;
-- int ei_data_available;
-+ struct res_overlay ei_dispatch_data;
-+ unsigned int ei_finalize:1;
-+ unsigned int ei_data_available:1;
- };
-
-
-@@ -245,6 +248,9 @@
- saHandleDestroy(&channel_handle_db, handle);
- saHandleInstancePut(&channel_handle_db, handle);
- }
-+
-+ pthread_mutex_destroy(&evti->ei_dispatch_mutex);
-+ pthread_mutex_destroy(&evti->ei_response_mutex);
- }
-
- /*
-@@ -272,6 +278,7 @@
- saEvtEventFree(handle);
- }
-
-+ pthread_mutex_destroy(&eci->eci_mutex);
- }
-
- /*
-@@ -296,6 +303,8 @@
- if (edi->edi_event_data) {
- free(edi->edi_event_data);
- }
-+
-+ pthread_mutex_destroy(&edi->edi_mutex);
- }
-
- static SaAisErrorT evt_recv_event(int fd, struct lib_event_data **msg)
-@@ -599,7 +608,6 @@
- int ignore_dispatch = 0;
- int cont = 1; /* always continue do loop except when set to 0 */
- int poll_fd;
-- struct res_overlay dispatch_data;
- struct lib_event_data *evt = 0;
- struct res_evt_event_data res;
-
-@@ -674,15 +682,15 @@
- }
-
- if (ufds.revents & POLLIN) {
-- error = saRecvRetry (evti->ei_dispatch_fd, &dispatch_data.header,
-+ error = saRecvRetry (evti->ei_dispatch_fd, &evti->ei_dispatch_data.header,
- sizeof (mar_res_header_t));
-
- if (error != SA_AIS_OK) {
- goto dispatch_unlock;
- }
-- if (dispatch_data.header.size > sizeof (mar_res_header_t)) {
-- error = saRecvRetry (evti->ei_dispatch_fd, &dispatch_data.data,
-- dispatch_data.header.size - sizeof (mar_res_header_t));
-+ if (evti->ei_dispatch_data.header.size > sizeof (mar_res_header_t)) {
-+ error = saRecvRetry (evti->ei_dispatch_fd, &evti->ei_dispatch_data.data,
-+ evti->ei_dispatch_data.header.size - sizeof (mar_res_header_t));
- if (error != SA_AIS_OK) {
- goto dispatch_unlock;
- }
-@@ -697,7 +705,7 @@
- * Fake up a header message and the switch statement will
- * take care of the rest.
- */
-- dispatch_data.header.id = MESSAGE_RES_EVT_AVAILABLE;
-+ evti->ei_dispatch_data.header.id = MESSAGE_RES_EVT_AVAILABLE;
- }
-
- /*
-@@ -707,13 +715,11 @@
- * EvtFinalize has been called in another thread.
- */
- memcpy(&callbacks, &evti->ei_callback, sizeof(evti->ei_callback));
-- pthread_mutex_unlock(&evti->ei_dispatch_mutex);
--
-
- /*
- * Dispatch incoming response
- */
-- switch (dispatch_data.header.id) {
-+ switch (evti->ei_dispatch_data.header.id) {
-
- case MESSAGE_RES_EVT_AVAILABLE:
- evti->ei_data_available = 0;
-@@ -782,7 +788,7 @@
- case MESSAGE_RES_EVT_CHAN_OPEN_CALLBACK:
- {
- struct res_evt_open_chan_async *resa =
-- (struct res_evt_open_chan_async *)&dispatch_data;
-+ (struct res_evt_open_chan_async *)&evti->ei_dispatch_data;
- struct event_channel_instance *eci;
-
- /*
-@@ -815,11 +821,13 @@
- break;
-
- default:
-- DPRINT (("Dispatch: Bad message type 0x%x\n", dispatch_data.header.id));
-+ DPRINT (("Dispatch: Bad message type 0x%x\n", evti->ei_dispatch_data.header.id));
- error = SA_AIS_ERR_LIBRARY;
-- goto dispatch_put;
-+ goto dispatch_unlock;
- }
-
-+ pthread_mutex_unlock(&evti->ei_dispatch_mutex);
-+
- /*
- * If empty is zero it means the we got the
- * message from the queue and we are responsible
-@@ -854,7 +862,7 @@
- goto dispatch_put;
-
- dispatch_unlock:
-- pthread_mutex_unlock(&evti->ei_dispatch_mutex);
-+ pthread_mutex_unlock(&evti->ei_dispatch_mutex);
- dispatch_put:
- saHandleInstancePut(&evt_instance_handle_db, evtHandle);
- return error;
-@@ -896,9 +904,6 @@
- evti->ei_finalize = 1;
-
- pthread_mutex_unlock (&evti->ei_response_mutex);
-- pthread_mutex_destroy (&evti->ei_response_mutex);
--
-- pthread_mutex_destroy (&evti->ei_dispatch_mutex);
-
- saHandleDestroy(&evt_instance_handle_db, evtHandle);
- /*
-diff -uNr openais-0.80.3/lib/lck.c openais-0.80.3-r1661/lib/lck.c
---- openais-0.80.3/lib/lck.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/lib/lck.c 2008-11-17 15:54:03.480606331 +0100
-@@ -144,11 +144,14 @@
- */
- void lckHandleInstanceDestructor (void *instance)
- {
-+ struct lckInstance *lckInstance = instance;
-+
-+ pthread_mutex_destroy (&lckInstance->response_mutex);
-+ pthread_mutex_destroy (&lckInstance->dispatch_mutex);
- }
-
- void lckResourceHandleInstanceDestructor (void *instance)
- {
-- return;
- }
-
- void lckResourceHandleLockIdInstanceDestructor (void *instance)
-diff -uNr openais-0.80.3/lib/msg.c openais-0.80.3-r1661/lib/msg.c
---- openais-0.80.3/lib/msg.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/lib/msg.c 2008-11-17 15:54:03.490605981 +0100
-@@ -131,11 +131,14 @@
- */
- void msgHandleInstanceDestructor (void *instance)
- {
-+ struct msgInstance *msgInstance = instance;
-+
-+ pthread_mutex_destroy (&msgInstance->response_mutex);
-+ pthread_mutex_destroy (&msgInstance->dispatch_mutex);
- }
-
- void queueHandleInstanceDestructor (void *instance)
- {
-- return;
- }
-
- #ifdef COMPILE_OUT
-diff -uNr openais-0.80.3/lib/util.c openais-0.80.3-r1661/lib/util.c
---- openais-0.80.3/lib/util.c 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/lib/util.c 2008-11-17 15:54:03.490605981 +0100
-@@ -543,7 +543,7 @@
- handleDatabase->handleCount += 1;
- newHandles = (struct saHandle *)realloc (handleDatabase->handles,
- sizeof (struct saHandle) * handleDatabase->handleCount);
-- if (newHandles == 0) {
-+ if (newHandles == NULL) {
- pthread_mutex_unlock (&handleDatabase->mutex);
- return (SA_AIS_ERR_NO_MEMORY);
- }
-@@ -552,6 +552,8 @@
-
- instance = malloc (instanceSize);
- if (instance == 0) {
-+ free (newHandles);
-+ pthread_mutex_unlock (&handleDatabase->mutex);
- return (SA_AIS_ERR_NO_MEMORY);
- }
-
-diff -uNr openais-0.80.3/man/openais.conf.5 openais-0.80.3-r1661/man/openais.conf.5
---- openais-0.80.3/man/openais.conf.5 2007-06-24 08:33:09.000000000 +0200
-+++ openais-0.80.3-r1661/man/openais.conf.5 2008-11-17 15:54:04.010616877 +0100
-@@ -135,6 +135,17 @@
- reserved and should not be used.
-
- .TP
-+clear_node_high_bit
-+This configuration option is optional and is only relevant when no nodeid is
-+specified. Some openais clients require a signed 32 bit nodeid that is greater
-+than zero however by default openais uses all 32 bits of the IPv4 address space
-+when generating a nodeid. Set this option to yes to force the high bit to be
-+zero and therefor ensure the nodeid is a positive signed 32 bit integer.
-+
-+WARNING: The clusters behavior is undefined if this option is enabled on only
-+a subset of the cluster (for example during a rolling upgrade).
-+
-+.TP
- secauth
- This specifies that HMAC/SHA1 authentication should be used to authenticate
- all messages. It further specifies that all data should be encrypted with the
-diff -uNr openais-0.80.3/test/Makefile openais-0.80.3-r1661/test/Makefile
---- openais-0.80.3/test/Makefile 2007-06-25 04:52:58.000000000 +0200
-+++ openais-0.80.3-r1661/test/Makefile 2008-11-17 15:53:59.760604514 +0100
-@@ -49,7 +49,7 @@
-
- all: testclm testamf1 \
- testckpt ckptstress ckptbench \
-- ckptbenchth ckpt-rd ckpt-wr testevt testevs \
-+ ckptbenchth ckpt-rd ckpt-wr ckpt-overload-exit testevt testevs \
- evsbench subscription publish evtbench unlink testclm2 testlck \
- testmsg testcpg testcpg2 cpgbench openais-cfgtool
-
-@@ -128,6 +128,9 @@
- ckpt-wr: ckpt-wr.o sa_error.o $(LIBRARIES)
- $(CC) $(LDFLAGS) -o ckpt-wr ckpt-wr.o sa_error.o $(LIBS)
-
-+ckpt-overload-exit: ckpt-overload-exit.o sa_error.o $(LIBRARIES)
-+ $(CC) $(LDFLAGS) -o ckpt-overload-exit ckpt-overload-exit.o sa_error.o $(LIBS)
-+
- testclm2: testclm2.o $(LIBRARIES)
- $(CC) $(LDFLAGS) -o testclm2 testclm2.o $(LIBS)
-
-diff -uNr openais-0.80.3/test/ckpt-overload-exit.c openais-0.80.3-r1661/test/ckpt-overload-exit.c
---- openais-0.80.3/test/ckpt-overload-exit.c 1970-01-01 01:00:00.000000000 +0100
-+++ openais-0.80.3-r1661/test/ckpt-overload-exit.c 2008-11-17 15:53:59.760604514 +0100
-@@ -0,0 +1,157 @@
-+/*
-+ * Copyright (c) 2008 Red Hat, Inc.
-+ *
-+ * All rights reserved.
-+ *
-+ * Author: Steven Dake (sdake@redhat.com)
-+ *
-+ * This software licensed under BSD license, the text of which follows:
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions are met:
-+ *
-+ * - Redistributions of source code must retain the above copyright notice,
-+ * this list of conditions and the following disclaimer.
-+ * - Redistributions in binary form must reproduce the above copyright notice,
-+ * this list of conditions and the following disclaimer in the documentation
-+ * and/or other materials provided with the distribution.
-+ * - Neither the name of the MontaVista Software, Inc. nor the names of its
-+ * contributors may be used to endorse or promote products derived from this
-+ * software without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-+ * THE POSSIBILITY OF SUCH DAMAGE.
-+ */
-+/*
-+ * Overloads the ckpt system with checkpoints (30k checkpoints) and then exits
-+ * ungracefully. This will cause the entire system to go into overload
-+ * as it sends out close messages for the 30k open checkpoints.
-+ */
-+
-+
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <errno.h>
-+#include <unistd.h>
-+#include <sys/types.h>
-+#include <sys/socket.h>
-+#include <sys/select.h>
-+#include <sys/un.h>
-+#include <time.h>
-+
-+#include "saAis.h"
-+#include "saCkpt.h"
-+#include "sa_error.h"
-+
-+#define SECONDS_TO_EXPIRE 500
-+
-+int ckptinv;
-+void printSaNameT (SaNameT *name)
-+{
-+ int i;
-+
-+ for (i = 0; i < name->length; i++) {
-+ printf ("%c", name->value[i]);
-+ }
-+}
-+
-+SaVersionT version = { 'B', 1, 1 };
-+
-+SaNameT checkpointName = { 16, "checkpoint-sync\0" };
-+
-+SaCkptCheckpointCreationAttributesT checkpointCreationAttributes = {
-+ .creationFlags = SA_CKPT_WR_ALL_REPLICAS,
-+ .checkpointSize = 250000,
-+ .retentionDuration = SA_TIME_ONE_SECOND * 60,
-+ .maxSections = 1,
-+ .maxSectionSize = 250000,
-+ .maxSectionIdSize = 10
-+};
-+
-+char readBuffer1[1025];
-+
-+SaCkptIOVectorElementT ReadVectorElements[] = {
-+ {
-+ SA_CKPT_DEFAULT_SECTION_ID,
-+ readBuffer1,
-+ sizeof (readBuffer1),
-+ 0,
-+ 0
-+ }
-+};
-+
-+#define DATASIZE 127000
-+char data[DATASIZE];
-+SaCkptIOVectorElementT WriteVectorElements[] = {
-+ {
-+ SA_CKPT_DEFAULT_SECTION_ID,
-+ data, /*"written data #1, this should extend past end of old section data", */
-+ DATASIZE, /*sizeof ("data #1, this should extend past end of old section data") + 1, */
-+ 0, //5,
-+ 0
-+ }
-+};
-+
-+SaCkptCallbacksT callbacks = {
-+ 0,
-+ 0
-+};
-+
-+#define MAX_DATA_SIZE 100
-+
-+int main (void) {
-+ SaCkptHandleT ckptHandle;
-+ SaCkptCheckpointHandleT checkpointHandle;
-+ SaAisErrorT error;
-+ char data[MAX_DATA_SIZE];
-+ SaCkptIOVectorElementT writeElement;
-+ SaUint32T erroroneousVectorIndex = 0;
-+ int i;
-+
-+ error = saCkptInitialize (&ckptHandle, &callbacks, &version);
-+ printf ("%s: CkptInitialize\n",
-+ get_test_output (error, SA_AIS_OK));
-+
-+ for (i = 0; i < 30000; i++) {
-+ checkpointName.length =
-+ sprintf((char*)checkpointName.value, "ckp%05d",i);
-+
-+ do {
-+ error = saCkptCheckpointOpen (ckptHandle,
-+ &checkpointName,
-+ &checkpointCreationAttributes,
-+ SA_CKPT_CHECKPOINT_CREATE|SA_CKPT_CHECKPOINT_READ|SA_CKPT_CHECKPOINT_WRITE,
-+ 0,
-+ &checkpointHandle);
-+ } while (error == SA_AIS_ERR_TRY_AGAIN);
-+
-+ sprintf((char*)&data, "%04d", i);
-+ writeElement.sectionId = (SaCkptSectionIdT)SA_CKPT_DEFAULT_SECTION_ID;
-+ writeElement.dataBuffer = data;
-+ writeElement.dataSize = strlen (data) + 1;
-+ writeElement.dataOffset = 0;
-+ writeElement.readSize = 0;
-+
-+ do {
-+ error = saCkptCheckpointWrite (checkpointHandle,
-+ &writeElement,
-+ 1,
-+ &erroroneousVectorIndex);
-+
-+ } while (error == SA_AIS_ERR_TRY_AGAIN);
-+
-+ }
-+
-+ return (0);
-+
-+}
-diff -uNr openais-0.80.3/test/testckpt.c openais-0.80.3-r1661/test/testckpt.c
---- openais-0.80.3/test/testckpt.c 2007-06-25 10:42:58.000000000 +0200
-+++ openais-0.80.3-r1661/test/testckpt.c 2008-11-17 15:53:59.760604514 +0100
-@@ -341,7 +341,7 @@
- timersub (&tv_end, &tv_start, &tv_elapsed);
- printf ("Elapsed Time to expiry is %ld & %ld usec (should be about %d seconds)\n",
- tv_elapsed.tv_sec,
-- tv_elapsed.tv_usec,
-+ (long) tv_elapsed.tv_usec,
- SECONDS_TO_EXPIRE);
-
- error = saCkptCheckpointRetentionDurationSet (checkpointHandle,
diff --git a/sys-cluster/openais/files/openais.conf b/sys-cluster/openais/files/openais.conf
deleted file mode 100644
index 479653b2d6d7..000000000000
--- a/sys-cluster/openais/files/openais.conf
+++ /dev/null
@@ -1,44 +0,0 @@
-# Please read the openais.conf.5 manual page
-
-totem {
- version: 2
- secauth: off
- threads: 0
- nodeid: 1
- interface {
- ringnumber: 0
- bindnetaddr: 127.0.0.0
- mcastaddr: 226.94.1.1
- mcastport: 5405
- }
-}
-
-logging {
- to_stderr: no
- to_syslog: yes
- to_file: no
- logfile: /var/log/ais/openais.log
- debug: off
- timestamp: on
- fileline: off
-# logger {
-# ident: AMF
-# ident: CFG
-# ident: CKPT
-# ident: CLM
-# ident: CPG
-# ident: EVS
-# ident: EVT
-# ident: LCK
-# ident: MSG
-# debug: off
-# tags: enter|leave|trace1|trace2|trace3|trace4|trace6
-# }
-}
-
-event {
-}
-
-amf {
- mode: disabled
-}
diff --git a/sys-cluster/openais/metadata.xml b/sys-cluster/openais/metadata.xml
deleted file mode 100644
index 4402cbc50fdf..000000000000
--- a/sys-cluster/openais/metadata.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<herd>no-herd</herd>
-<maintainer>
- <email>wschlich@gentoo.org</email>
- <name>Wolfram Schlich</name>
- <description>Primary maintainer</description>
-</maintainer>
-<longdescription>
-The OpenAIS Standards Based Cluster Framework is an OSI Certified
-implementation of the Service Availability Forum Application Interface
-Specification (AIS). Other cluster APIs are also available for developer use.
-
-The Application Interface Specification is a software API and policies which
-are used to develop applications that maintain service during faults.
-Restarting and failover of applications is also provided for those deploying
-applications which may not be modified.
-
-The OpenAIS software is designed to allow any third party to implement plugin
-cluster services using the infrastructure provided.
-</longdescription>
-</pkgmetadata>
diff --git a/sys-cluster/openais/openais-0.80.3-r1.ebuild b/sys-cluster/openais/openais-0.80.3-r1.ebuild
deleted file mode 100644
index 848a73aeb529..000000000000
--- a/sys-cluster/openais/openais-0.80.3-r1.ebuild
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright 1999-2009 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/openais/openais-0.80.3-r1.ebuild,v 1.3 2009/09/23 20:42:55 patrick Exp $
-
-inherit eutils flag-o-matic toolchain-funcs
-
-IUSE="debug"
-DESCRIPTION="Open Application Interface Specification cluster framework"
-HOMEPAGE="http://www.openais.org/"
-#SRC_URI="ftp://ftp%40openais%2Eorg:downloads@openais.org/downloads/${P}/${P}.tar.gz"
-SRC_URI="http://devresources.linux-foundation.org/dev/openais/downloads/${P}/${P}.tar.gz"
-LICENSE="BSD public-domain"
-SLOT="0"
-KEYWORDS="amd64 x86"
-DEPEND=""
-
-src_unpack() {
- unpack ${A}
- cd "${S}"
- epatch "${FILESDIR}"/${P}-Makefile-ARCH.patch || die
- epatch "${FILESDIR}"/${P}-Makefile-LIBDIR.patch || die
- epatch "${FILESDIR}"/${P}-Makefile.inc-FLAGS.patch || die
-
- epatch "${FILESDIR}"/${P}-Makefile.inc-VARS.patch || die
- epatch "${FILESDIR}"/${P}-Makefile-VARS.patch || die
-
- #epatch "${FILESDIR}"/${P}-r1514.patch || die
- epatch "${FILESDIR}"/${P}-r1661.patch || die
-
- #epatch "${FILESDIR}"/${P}-r1661-pacemaker-openais.conf.patch || die
- #epatch "${FILESDIR}"/${P}-r1661-pacemaker.patch || die
- #epatch "${FILESDIR}"/pacemaker.diff || die
-}
-
-pkg_setup() {
- enewgroup ais
- enewuser ais -1 -1 -1 ais
-}
-
-src_compile() {
- useq debug && append-flags -O0 -ggdb -Wall -DDEBUG
- emake -j1 LIBDIR="/usr/$(get_libdir)/openais" \
- CFLAGS="${CFLAGS}" CC="$(tc-getCC)"
-}
-
-src_install() {
- emake LIBDIR="/usr/$(get_libdir)/openais" \
- DESTDIR="${D}" install || die "make install failed"
-
- insinto /etc/ais
- doins "${FILESDIR}"/openais.conf
-
- # http://bugs.gentoo.org/show_bug.cgi?id=160847#c16
- dosym /usr/sbin/aisexec /sbin/aisexec
-
- dodir /etc/env.d
- echo LDPATH="/usr/$(get_libdir)/openais" > "${D}"/etc/env.d/03openais
-
- newinitd "${FILESDIR}"/ais.initd ais
-
- diropts -o ais -g ais -m 0750
- keepdir /var/log/ais
-
- exeinto /usr/libexec/openais
- doexe exec/openais-instantiate || die
- doexe test/{ckptbench,ckptbenchth,ckpt-rd,ckptstress,ckpt-wr,clc_cli_script} || die
- doexe test/{cpgbench,evsbench,evtbench} || die
- doexe test/{publish,subscription,testamf1,testckpt,testclm,testclm2,testcpg,testcpg2} || die
- doexe test/{testevs,testevt,testlck,testmsg,unlink} || die
-
- dosbin test/openais-cfgtool || die
-
- dodoc CHANGELOG QUICKSTART README.* SECURITY TODO conf/*
-}
diff --git a/sys-cluster/openais/openais-0.82.ebuild b/sys-cluster/openais/openais-0.82.ebuild
deleted file mode 100644
index f69a55d6d0c2..000000000000
--- a/sys-cluster/openais/openais-0.82.ebuild
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright 1999-2009 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/openais/openais-0.82.ebuild,v 1.4 2009/09/23 20:42:55 patrick Exp $
-
-inherit eutils flag-o-matic toolchain-funcs
-
-IUSE="debug"
-DESCRIPTION="Open Application Interface Specification cluster framework"
-HOMEPAGE="http://www.openais.org/"
-#SRC_URI="ftp://ftp%40openais%2Eorg:downloads@openais.org/downloads/${P}/${P}.tar.gz"
-SRC_URI="http://devresources.linux-foundation.org/dev/openais/downloads/${P}/${P}.tar.gz"
-LICENSE="BSD public-domain"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-DEPEND=""
-
-src_unpack() {
- unpack ${A}
- cd "${S}"
- epatch "${FILESDIR}"/Makefile-ARCH.patch
- epatch "${FILESDIR}"/Makefile-LIBDIR.patch
- epatch "${FILESDIR}"/Makefile-install.patch
- epatch "${FILESDIR}"/Makefile.inc-FLAGS.patch
-}
-
-pkg_setup() {
- enewgroup ais
- enewuser ais -1 -1 -1 ais
-}
-
-src_compile() {
- useq debug && append-flags -O0 -ggdb -Wall -DDEBUG
- emake -j1 LIBDIR="/usr/$(get_libdir)/openais" \
- CFLAGS="${CFLAGS}" CC="$(tc-getCC)"
-}
-
-src_install() {
- emake LIBDIR="/usr/$(get_libdir)/openais" \
- DESTDIR="${D}" install || die "make install failed"
-
- insinto /etc/ais
- doins "${FILESDIR}"/openais.conf
-
- insinto /usr/include/openais/service
- doins exec/logsys.h || die
-
- # http://bugs.gentoo.org/show_bug.cgi?id=160847#c16
- dosym /usr/sbin/aisexec /sbin/aisexec
-
- dodir /etc/env.d
- echo LDPATH="/usr/$(get_libdir)/openais" > "${D}"/etc/env.d/03openais
-
- newinitd "${FILESDIR}"/ais.initd ais
-
- diropts -o ais -g ais -m 0750
- keepdir /var/log/ais
-
- exeinto /usr/libexec/openais
- doexe exec/openais-instantiate || die
- doexe test/{ckptbench,ckptbenchth,ckpt-rd,ckptstress,ckpt-wr,clc_cli_script} || die
- doexe test/{cpgbench,evsbench,evtbench,logsys_s,logsys_t1,logsys_t2} || die
- doexe test/{publish,subscription,testamf1,testckpt,testclm,testclm2,testcpg,testcpg2} || die
- doexe test/{testevs,testevt,testlck,testmsg,unlink} || die
-
- dosbin test/openais-cfgtool || die
-
- dodoc CHANGELOG QUICKSTART README.* SECURITY TODO conf/*
-}