diff options
author | Mike Frysinger <vapier@gentoo.org> | 2008-06-28 16:44:39 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2008-06-28 16:44:39 +0000 |
commit | 55adf8f1160bbeaaf759169e095ccce3100fe51a (patch) | |
tree | e44bf71e13c9d3115407d9706ea3c70202b4d362 | |
parent | Shuffle files around. (diff) | |
download | gentoo-2-55adf8f1160bbeaaf759169e095ccce3100fe51a.tar.gz gentoo-2-55adf8f1160bbeaaf759169e095ccce3100fe51a.tar.bz2 gentoo-2-55adf8f1160bbeaaf759169e095ccce3100fe51a.zip |
Fix mdraid on no-multilib systems and tweak minor node discovery #229501 by Ian Kelling.
(Portage version: 2.2_rc1/cvs/Linux 2.6.25 x86_64)
-rw-r--r-- | sys-fs/mdadm/ChangeLog | 9 | ||||
-rw-r--r-- | sys-fs/mdadm/files/mdraid.rc | 27 | ||||
-rwxr-xr-x | sys-fs/mdadm/files/raid-start.sh | 50 | ||||
-rw-r--r-- | sys-fs/mdadm/mdadm-2.6.4-r3.ebuild | 59 |
4 files changed, 144 insertions, 1 deletions
diff --git a/sys-fs/mdadm/ChangeLog b/sys-fs/mdadm/ChangeLog index 6a76673a11e9..a39034aabc03 100644 --- a/sys-fs/mdadm/ChangeLog +++ b/sys-fs/mdadm/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for sys-fs/mdadm # Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-fs/mdadm/ChangeLog,v 1.99 2008/06/28 16:36:45 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-fs/mdadm/ChangeLog,v 1.100 2008/06/28 16:44:39 vapier Exp $ + +*mdadm-2.6.4-r3 (28 Jun 2008) + + 28 Jun 2008; Mike Frysinger <vapier@gentoo.org> +files/mdraid.rc, + +files/raid-start.sh, +mdadm-2.6.4-r3.ebuild: + Fix mdraid on no-multilib systems and tweak minor node discovery #229501 + by Ian Kelling. 28 Jun 2008; Mike Frysinger <vapier@gentoo.org> -files/raid-stop.sh-2.6.3-r2, +files/64-md-raid.rules, diff --git a/sys-fs/mdadm/files/mdraid.rc b/sys-fs/mdadm/files/mdraid.rc new file mode 100644 index 000000000000..eaf314c7bfbf --- /dev/null +++ b/sys-fs/mdadm/files/mdraid.rc @@ -0,0 +1,27 @@ +#!/sbin/runscript +# Copyright 1999-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-fs/mdadm/files/mdraid.rc,v 1.4 2008/06/28 16:44:39 vapier Exp $ + +depend() { + if [ ! -e /sbin/functions.sh ] ; then + # on baselayout-1 this could cause + # dependency-cycles with checkroot (before *) + before checkfs fsck + after modules + fi +} + +start() { + if [ -e /sbin/functions.sh ] ; then + eerror "The ${SVCNAME} init script is written for baselayout-2" + eerror "Please do not use it with baselayout-1" + return 1 + fi + + start_addon raid +} + +stop() { + stop_addon raid +} diff --git a/sys-fs/mdadm/files/raid-start.sh b/sys-fs/mdadm/files/raid-start.sh new file mode 100755 index 000000000000..784094c51b4f --- /dev/null +++ b/sys-fs/mdadm/files/raid-start.sh @@ -0,0 +1,50 @@ +# /lib/rcscripts/addons/raid-start.sh: Setup raid volumes at boot +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-fs/mdadm/files/raid-start.sh,v 1.7 2008/06/28 16:44:39 vapier Exp $ + +[ -f /proc/mdstat ] || exit 0 + +# We could make this dynamic, but eh +#[ -z ${MAJOR} ] && export MAJOR=$(awk '$2 == "md" { print $1 }' /proc/devices) +MAJOR=9 + +# Try to make sure the devices exist before we use them +create_devs() { + local node dir + for node in "$@" ; do + [ "${node#/dev}" = "${node}" ] && node="/dev/${node}" + [ -e "${node}" ] && continue + + dir=${node%/*} + [ ! -d "${dir}" ] && mkdir -p "${dir}" + + mknod "${node}" b ${MAJOR} ${node##*[![:digit:]]} + done +} + +# Start software raid with mdadm (new school) +mdadm_conf="/etc/mdadm/mdadm.conf" +[ -e /etc/mdadm.conf ] && mdadm_conf="/etc/mdadm.conf" +if [ -x /sbin/mdadm -a -f "${mdadm_conf}" ] ; then + devs=$(awk '/^[[:space:]]*ARRAY/ { print $2 }' "${mdadm_conf}") + if [ -n "${devs}" ]; then + ebegin "Starting up RAID devices" + create_devs ${devs} + output=$(mdadm -As 2>&1) + ret=$? + [ ${ret} -ne 0 ] && echo "${output}" + eend ${ret} + fi +fi + +partitioned_devs=$(ls /dev/md_d* 2>/dev/null) +if [ -n "${partitioned_devs}" ]; then + ebegin "Creating RAID device partitions" + /sbin/blockdev ${partitioned_devs} + eend 0 + # wait because vgscan runs next, and we want udev to fire + sleep 1 +fi + +# vim:ts=4 diff --git a/sys-fs/mdadm/mdadm-2.6.4-r3.ebuild b/sys-fs/mdadm/mdadm-2.6.4-r3.ebuild new file mode 100644 index 000000000000..ad81970e3620 --- /dev/null +++ b/sys-fs/mdadm/mdadm-2.6.4-r3.ebuild @@ -0,0 +1,59 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-fs/mdadm/mdadm-2.6.4-r3.ebuild,v 1.1 2008/06/28 16:44:39 vapier Exp $ + +inherit eutils flag-o-matic + +DESCRIPTION="A useful tool for running RAID systems - it can be used as a replacement for the raidtools" +HOMEPAGE="http://neil.brown.name/blog/mdadm" +SRC_URI="mirror://kernel/linux/utils/raid/mdadm/${P}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86" +IUSE="static" + +src_unpack() { + unpack ${A} + cd "${S}" + epatch "${FILESDIR}"/${PN}-1.9.0-dont-make-man.patch + epatch "${FILESDIR}"/${PN}-2.6-syslog-updates.patch + epatch "${FILESDIR}"/${PN}-2.6.4-mdassemble.patch #211426 + use static && append-ldflags -static +} + +src_compile() { + emake \ + CROSS_COMPILE=${CHOST}- \ + CWFLAGS="-Wall" \ + CXFLAGS="${CFLAGS}" \ + all mdassemble \ + || die "emake failed" +} + +src_install() { + emake DESTDIR="${D}" install || die "make install failed" + into / + dosbin mdassemble || die + dodoc ChangeLog INSTALL TODO README* ANNOUNCE-${PV} + + exeinto /$(get_libdir)/rcscripts/addons + newexe "${FILESDIR}"/raid-start.sh raid-start.sh || die "addon failed" + newexe "${FILESDIR}"/raid-stop.sh raid-stop.sh || die "addon failed" + + insinto /etc + newins mdadm.conf-example mdadm.conf + newinitd "${FILESDIR}"/mdadm.rc mdadm || die "installing mdadm.rc failed" + newconfd "${FILESDIR}"/mdadm.confd mdadm || die "installing mdadm.confd failed" + newinitd "${FILESDIR}"/mdraid.rc mdraid || die "installing mdraid.rc failed" + + insinto /etc/udev/rules.d/ + newins "${FILESDIR}"/64-md-raid.rules 64-md-raid.rules || die +} + +pkg_postinst() { + elog "If using baselayout-2 and not relying on kernel auto-detect" + elog "of your RAID devices, you need to add 'mdraid' to your 'boot'" + elog "runlevel. Run the following command:" + elog "rc-update add mdraid boot" +} |