From 5e3b66ce08317c39c9689ec73ae774feae62e542 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Sat, 13 Feb 2010 17:03:49 +0000 Subject: main/mdadm: fix init.d script fixes #275 fixes #276 --- main/mdadm/APKBUILD | 4 ++-- main/mdadm/mdadm-raid.initd | 37 ++++++++++++++++++++++++++++++------- 2 files changed, 32 insertions(+), 9 deletions(-) (limited to 'main') diff --git a/main/mdadm/APKBUILD b/main/mdadm/APKBUILD index 9715d516..b1d40824 100644 --- a/main/mdadm/APKBUILD +++ b/main/mdadm/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Natanael Copa pkgname=mdadm pkgver=3.1.1 -pkgrel=0 +pkgrel=1 pkgdesc="a tool for managing Linux Software RAID arrays" url="http://neil.brown.name/blog/mdadm" license="GPL-2" @@ -35,5 +35,5 @@ package() { md5sums="8bfeea282d21b5ef8e825122fb359457 mdadm-3.1.1.tar.gz ce57e798431f7ab89f9b07a7daaa4852 mdadm.initd 16d2b8eb2e17184357db503470fdd8eb mdadm.confd -cf60ee08fc4fbed0450c5a2d4efc4214 mdadm-raid.initd +974e3496d2e4b7c9c17c3279388f45ae mdadm-raid.initd aa601f072096fb8bae8b8946f59a561f mdadm-uclibc.patch" diff --git a/main/mdadm/mdadm-raid.initd b/main/mdadm/mdadm-raid.initd index ea840888..d2479737 100644 --- a/main/mdadm/mdadm-raid.initd +++ b/main/mdadm/mdadm-raid.initd @@ -1,19 +1,42 @@ #!/sbin/runscript # script to start raid devices described in /etc/mdadm.conf. +depend() { + before checkfs fsck + after modules +} start() { + [ -f /etc/mdadm.conf ] || return 0 + # start all devices that are not already started [ -f /proc/mdstat ] || modprobe -k md > /dev/null 2>&1 + local tostart= ebegin "Starting RAID devices" - mdadm -A -s -q + for i in $(awk '{print $2}' /etc/mdadm.conf); do + [ -b "$i" ] && continue + tostart="$tostart $i" + done + mdadm --assemble --scan --quiet $tostart eend $? } +is_mounted_as() { + local mnt + for mnt in $(awk "\$1 == \"$1\" {print \$2}" /proc/mounts); do + [ "$mnt" = "$2" ] && return 0 + done + return 1 +} + stop() { - # you need to make sure no device is mounted. - if [ -f /etc/mdadm.conf ] ; then - ebegin "Stopping RAID devices" - mdadm --stop -q `awk '/^ARRAY/ { print $2 }' /etc/mdadm.conf` - eend $? - fi + # stop all raid devices except anything mounted as / + [ -f /etc/mdadm.conf ] || return 0 + ebegin "Stopping RAID devices" + local tostop= + for i in $(awk '{print $2}' /etc/mdadm.conf); do + is_mounted_as $i / && continue + tostop="$tostop $i" + done + mdadm --stop --quiet $tostop + eend $? } -- cgit v1.2.3