From 062d1ba2c4d5de52d97f339c5a3ac1199b8533f6 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 15 Sep 2011 23:14:42 +0000 Subject: Thu Sep 15 23:14:42 UTC 2011 --- testing/mdadm/PKGBUILD | 55 +++++++++++++++++++++++++++++++ testing/mdadm/disable-werror.patch | 11 +++++++ testing/mdadm/linux-3.0.patch | 45 +++++++++++++++++++++++++ testing/mdadm/mdadm | 37 +++++++++++++++++++++ testing/mdadm/mdadm.conf | 67 ++++++++++++++++++++++++++++++++++++++ testing/mdadm/mdadm.install | 10 ++++++ testing/mdadm/mdadm_hook | 44 +++++++++++++++++++++++++ testing/mdadm/mdadm_install | 45 +++++++++++++++++++++++++ testing/mdadm/mdadm_udev_install | 23 +++++++++++++ 9 files changed, 337 insertions(+) create mode 100644 testing/mdadm/PKGBUILD create mode 100644 testing/mdadm/disable-werror.patch create mode 100644 testing/mdadm/linux-3.0.patch create mode 100755 testing/mdadm/mdadm create mode 100644 testing/mdadm/mdadm.conf create mode 100644 testing/mdadm/mdadm.install create mode 100755 testing/mdadm/mdadm_hook create mode 100644 testing/mdadm/mdadm_install create mode 100644 testing/mdadm/mdadm_udev_install (limited to 'testing') diff --git a/testing/mdadm/PKGBUILD b/testing/mdadm/PKGBUILD new file mode 100644 index 000000000..755373823 --- /dev/null +++ b/testing/mdadm/PKGBUILD @@ -0,0 +1,55 @@ +# $Id: PKGBUILD 138013 2011-09-14 09:45:11Z tpowa $ +# Maintainer: Tobias Powalowski +# Contributor: Judd Vinet +pkgname=mdadm +pkgver=3.2.2 +pkgrel=4 +pkgdesc="A tool for managing/monitoring Linux md device arrays, also known as Software RAID" +arch=(i686 x86_64) +license=('GPL') +url="http://www.cse.unsw.edu.au/~neilb/source/mdadm/" +groups=('base') +conflicts=('mkinitcpio<0.7') +depends=('glibc') +backup=('etc/mdadm.conf') +source=(ftp://ftp.kernel.org/pub/linux/utils/raid/mdadm/mdadm-$pkgver.tar.bz2 + mdadm + mdadm.conf + mdadm_install + mdadm_hook + mdadm_udev_install + disable-werror.patch + linux-3.0.patch) +install=mdadm.install +replaces=('raidtools') +md5sums=('12ee2fbf3beddb60601fb7a4c4905651' + '6df172c8f77b280018cf87eb3d313f29' + '00cbed931db4f15b6ce49e3e7d433966' + '9b01e96b6c3c218fb61628c9281fe688' + 'c8c0713f5c7da51822ee6f3911473a1c' + 'cd258e1bf430c02a25f40b4329df9f57' + '4ad87b74a4bc9a34621280abe0e0c3e4' + 'c499b3edbf2c400c8a1984e18c7ce7fa') + +build() { + cd $srcdir/$pkgname-$pkgver + patch -Np0 -i ../disable-werror.patch + patch -Np1 -i ../linux-3.0.patch + make CXFLAGS="$CFLAGS" + # build static mdassemble for Arch's initramfs + make MDASSEMBLE_AUTO=1 mdassemble + +} + +package() { + cd $srcdir/$pkgname-$pkgver + make INSTALL=/bin/install DESTDIR=$pkgdir install + install -D -m755 mdassemble $pkgdir/sbin/mdassemble + install -D -m644 ../mdadm.conf $pkgdir/etc/mdadm.conf + install -D -m755 ../mdadm $pkgdir/etc/rc.d/mdadm + install -D -m644 ../mdadm_install $pkgdir/lib/initcpio/install/mdadm + install -D -m644 ../mdadm_hook $pkgdir/lib/initcpio/hooks/mdadm + install -D -m644 ../mdadm_udev_install $pkgdir/lib/initcpio/install/mdadm_udev + # symlink for backward compatibility + ln -sf /lib/initcpio/hooks/mdadm $pkgdir/lib/initcpio/hooks/raid +} diff --git a/testing/mdadm/disable-werror.patch b/testing/mdadm/disable-werror.patch new file mode 100644 index 000000000..50a33f19d --- /dev/null +++ b/testing/mdadm/disable-werror.patch @@ -0,0 +1,11 @@ +--- Makefile.old 2011-06-17 09:38:03.269238332 +0200 ++++ Makefile 2011-06-17 09:38:14.122398837 +0200 +@@ -42,7 +42,7 @@ + + CC = $(CROSS_COMPILE)gcc + CXFLAGS = -ggdb +-CWFLAGS = -Wall -Werror -Wstrict-prototypes -Wextra -Wno-unused-parameter ++CWFLAGS = -Wall -Wstrict-prototypes -Wextra -Wno-unused-parameter + ifdef WARN_UNUSED + CWFLAGS += -Wp,-D_FORTIFY_SOURCE=2 -O + endif diff --git a/testing/mdadm/linux-3.0.patch b/testing/mdadm/linux-3.0.patch new file mode 100644 index 000000000..cd9d5473c --- /dev/null +++ b/testing/mdadm/linux-3.0.patch @@ -0,0 +1,45 @@ +From f161d047eed634b3380262767f955eb888502e88 Mon Sep 17 00:00:00 2001 +From: NeilBrown +Date: Fri, 17 Jun 2011 22:49:24 +1000 +Subject: [PATCH 1/1] util: correctly parse shorter linux version numbers. + +The next version of Linux might be 3.0. If it is, get_linux_version +will fail. +So make it more robust. + +Reported-by: Namhyung Kim +Reported-by: Milan Broz +Signed-off-by: NeilBrown +--- + util.c | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/util.c b/util.c +index 10bbe56..55d171a 100644 +--- a/util.c ++++ b/util.c +@@ -146,16 +146,16 @@ int get_linux_version() + { + struct utsname name; + char *cp; +- int a,b,c; ++ int a = 0, b = 0,c = 0; + if (uname(&name) <0) + return -1; + + cp = name.release; + a = strtoul(cp, &cp, 10); +- if (*cp != '.') return -1; +- b = strtoul(cp+1, &cp, 10); +- if (*cp != '.') return -1; +- c = strtoul(cp+1, NULL, 10); ++ if (*cp == '.') ++ b = strtoul(cp+1, &cp, 10); ++ if (*cp == '.') ++ c = strtoul(cp+1, &cp, 10); + + return (a*1000000)+(b*1000)+c; + } +-- +1.7.2.3 + diff --git a/testing/mdadm/mdadm b/testing/mdadm/mdadm new file mode 100755 index 000000000..e196f3642 --- /dev/null +++ b/testing/mdadm/mdadm @@ -0,0 +1,37 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /sbin/mdadm` +case "$1" in + start) + stat_busy "Starting mdadm RAID Monitor" + if [ -z "$PID" ]; then + /sbin/mdadm --monitor --scan -i /var/run/mdadm.pid -f + fi + if [ ! -z "$PID" -o $? -gt 0 ]; then + stat_fail + else + add_daemon mdadm + stat_done + fi + ;; + stop) + stat_busy "Stopping mdadm RAID Monitor" + [ ! -z "$PID" ] && kill $PID &>/dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon mdadm + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac diff --git a/testing/mdadm/mdadm.conf b/testing/mdadm/mdadm.conf new file mode 100644 index 000000000..57bd4c683 --- /dev/null +++ b/testing/mdadm/mdadm.conf @@ -0,0 +1,67 @@ +# mdadm configuration file +# +# mdadm will function properly without the use of a configuration file, +# but this file is useful for keeping track of arrays and member disks. +# In general, a mdadm.conf file is created, and updated, after arrays +# are created. This is the opposite behavior of /etc/raidtab which is +# created prior to array construction. +# +# +# the config file takes two types of lines: +# +# DEVICE lines specify a list of devices of where to look for +# potential member disks +# +# ARRAY lines specify information about how to identify arrays so +# so that they can be activated +# + + +# You can have more than one device line and use wild cards. The first +# example includes SCSI the first partition of SCSI disks /dev/sdb, +# /dev/sdc, /dev/sdd, /dev/sdj, /dev/sdk, and /dev/sdl. The second +# line looks for array slices on IDE disks. +# +#DEVICE /dev/sd[bcdjkl]1 +#DEVICE /dev/hda1 /dev/hdb1 +# +# The designation "partitions" will scan all partitions found in +# /proc/partitions +DEVICE partitions + + +# ARRAY lines specify an array to assemble and a method of identification. +# Arrays can currently be identified by using a UUID, superblock minor number, +# or a listing of devices. +# +# super-minor is usually the minor number of the metadevice +# UUID is the Universally Unique Identifier for the array +# Each can be obtained using +# +# mdadm -D +# +# To capture the UUIDs for all your RAID arrays to this file, run these: +# to get a list of running arrays: +# # mdadm -D --scan >>/etc/mdadm.conf +# to get a list from superblocks: +# # mdadm -E --scan >>/etc/mdadm.conf +# +#ARRAY /dev/md0 UUID=3aaa0122:29827cfa:5331ad66:ca767371 +#ARRAY /dev/md1 super-minor=1 +#ARRAY /dev/md2 devices=/dev/hda1,/dev/hdb1 +# +# ARRAY lines can also specify a "spare-group" for each array. mdadm --monitor +# will then move a spare between arrays in a spare-group if one array has a +# failed drive but no spare +#ARRAY /dev/md4 uuid=b23f3c6d:aec43a9f:fd65db85:369432df spare-group=group1 +#ARRAY /dev/md5 uuid=19464854:03f71b1b:e0df2edd:246cc977 spare-group=group1 +# + + +# When used in --follow (aka --monitor) mode, mdadm needs a +# mail address and/or a program. To start mdadm's monitor mode, add +# "mdadm" to your DAEMONS array in /etc/rc.conf +# +# If the lines are not found, mdadm will exit quietly +#MAILADDR root@mydomain.tld +#PROGRAM /usr/sbin/handle-mdadm-events diff --git a/testing/mdadm/mdadm.install b/testing/mdadm/mdadm.install new file mode 100644 index 000000000..e8404c260 --- /dev/null +++ b/testing/mdadm/mdadm.install @@ -0,0 +1,10 @@ +# arg 1: the new package version +# arg 2: the old package version + +post_upgrade() { + if [ "$(vercmp $2 2.6.8-2)" -lt 0 -a "$(grep raid_partitions /etc/mkinitcpio.conf)" ]; then + echo "Attention mdadm update:" + echo "raid_partitions hook has been replaced by the more powerfull mdadm hook." + echo "Please update your /etc/mkinitcpio.conf accordingly." + fi +} diff --git a/testing/mdadm/mdadm_hook b/testing/mdadm/mdadm_hook new file mode 100755 index 000000000..7b2dc1ad1 --- /dev/null +++ b/testing/mdadm/mdadm_hook @@ -0,0 +1,44 @@ +# vim: set ft=sh: +run_hook () +{ + input="$(cat /proc/cmdline)" + mdconfig="/etc/mdadm.conf" + # for partitionable raid, we need to load md_mod first! + modprobe md_mod 2>/dev/null + # If md is specified on commandline, create config file from those parameters. + if [ "$(echo $input | grep "md=")" ]; then + #Create initial mdadm.conf + # scan all devices in /proc/partitions + echo DEVICE partitions > $mdconfig + for i in $input; do + case $i in + # raid + md=[0-9]*,/*) + device="$(echo "$i" | sed -e 's|,/.*||g' -e 's|=||g')" + array="$(echo $i | cut -d, -f2-)" + echo "ARRAY /dev/$device devices=$array" >> $mdconfig + ;; + # partitionable raid + md=d[0-9]*,/*) + device="$(echo "$i" | sed -e 's|,/.*||g' -e 's|=|_|g')" + array="$(echo $i | cut -d, -f2-)" + echo "ARRAY /dev/$device devices=$array" >> $mdconfig + ;; + # raid UUID + md=[0-9]*,[0-9,a-z]*) + device="$(echo "$i" | sed -e 's|,.*||g' -e 's|=||g')" + array="$(echo $i | cut -d, -f2-)" + echo "ARRAY /dev/$device UUID=$array" >> $mdconfig + ;; + # partitionable raid UUID + md=d[0-9]*,[0-9,a-z]*) + device="$(echo "$i" | sed -e 's|,.*||g' -e 's|=|_|g')" + array="$(echo $i | cut -d, -f2-)" + echo "ARRAY /dev/$device UUID=$array" >> $mdconfig + ;; + esac + done + fi + # assemble everything + [ -e $mdconfig ] && /sbin/mdassemble +} diff --git a/testing/mdadm/mdadm_install b/testing/mdadm/mdadm_install new file mode 100644 index 000000000..b53258676 --- /dev/null +++ b/testing/mdadm/mdadm_install @@ -0,0 +1,45 @@ +# vim: set ft=sh: + +build() +{ + MODULES=" $(checked_modules "drivers/md/*" | grep -v "dm-") " + BINARIES="" + FILES="" + SCRIPT="mdadm" + # check if a custom mdadm.conf exists + if grep -q ^ARRAY /etc/mdadm.conf; then + echo "Custom /etc/mdadm.conf file will be used in initramfs for assembling arrays." + add_file "/etc/mdadm.conf" + fi + add_binary "/sbin/mdassemble" +} + +help () +{ +cat<,dev0,dev1,...,devn + md=,uuid + - for partitionable raid arrays with persistent superblocks: + md=d,dev0,dev1,...,devn + md=d,uuid + + Parameters: + - = the number of the md device: + 0 means md0, 1 means md1, ... + - : e.g. /dev/hda1,/dev/hdc1,/dev/sda1,/dev/sdb1 + or 0900878d:f95f6057:c39a36e9:55efa60a + Examples: + - md=d0,/dev/sda3,/dev/sda4 md=d1,/dev/hda1,/dev/hdb1 + This will setup 2 md partitionable arrays. + - md=0,/dev/sda3,/dev/sda4 md=1,/dev/hda1,/dev/hdb1 + This will setup 2 md arrays with persistent superblocks. +HELPEOF +} diff --git a/testing/mdadm/mdadm_udev_install b/testing/mdadm/mdadm_udev_install new file mode 100644 index 000000000..9fc161624 --- /dev/null +++ b/testing/mdadm/mdadm_udev_install @@ -0,0 +1,23 @@ +# vim: set ft=sh: + +build() +{ + MODULES=" $(checked_modules "drivers/md/*" | grep -v "dm-") " + BINARIES="" + FILES="" + SCRIPT="" + # check if a custom mdadm.conf exists + if grep -q ^ARRAY /etc/mdadm.conf; then + echo "Custom /etc/mdadm.conf file will be used in initramfs for assembling arrays." + add_file "/etc/mdadm.conf" + fi + add_binary "/sbin/mdadm" + add_file "/lib/udev/rules.d/64-md-raid.rules" +} + +help () +{ +cat<