summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2010-02-13 17:03:49 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2010-02-13 17:03:49 +0000
commit5e3b66ce08317c39c9689ec73ae774feae62e542 (patch)
treec7c34413b4ef3d769a49fa8b4e14b1283f57e725
parent5888d93ee1d9a2c4bda4dd77b1f4c05de427ef09 (diff)
downloadaports-5e3b66ce08317c39c9689ec73ae774feae62e542.tar.bz2
aports-5e3b66ce08317c39c9689ec73ae774feae62e542.tar.xz
main/mdadm: fix init.d script
fixes #275 fixes #276
-rw-r--r--main/mdadm/APKBUILD4
-rw-r--r--main/mdadm/mdadm-raid.initd37
2 files changed, 32 insertions, 9 deletions
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 <ncopa@alpinelinux.org>
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 $?
}