diff options
Diffstat (limited to 'abs/core/mdadm')
-rw-r--r-- | abs/core/mdadm/PKGBUILD | 39 | ||||
-rw-r--r-- | abs/core/mdadm/disable-werror.patch | 4 | ||||
-rwxr-xr-x | abs/core/mdadm/mdadm | 42 | ||||
-rw-r--r-- | abs/core/mdadm/mdadm-fix-udev-rules.patch | 137 | ||||
-rw-r--r-- | abs/core/mdadm/mdadm.conf | 4 | ||||
-rw-r--r-- | abs/core/mdadm/mdadm.service | 2 | ||||
-rwxr-xr-x | abs/core/mdadm/mdadm_hook | 2 | ||||
-rw-r--r-- | abs/core/mdadm/mdadm_install | 3 | ||||
-rw-r--r-- | abs/core/mdadm/mdadm_udev_install | 7 |
9 files changed, 167 insertions, 73 deletions
diff --git a/abs/core/mdadm/PKGBUILD b/abs/core/mdadm/PKGBUILD index 3c905ac..c6402ac 100644 --- a/abs/core/mdadm/PKGBUILD +++ b/abs/core/mdadm/PKGBUILD @@ -1,8 +1,8 @@ -# $Id: PKGBUILD 160025 2012-05-28 10:25:39Z tpowa $ +# $Id: PKGBUILD 199470 2013-11-13 11:08:13Z tpowa $ # Maintainer: Tobias Powalowski <tpowa@archlinux.org> # Contributor: Judd Vinet <jvinet@zeroflux.org> pkgname=mdadm -pkgver=3.2.5 +pkgver=3.3 pkgrel=2 pkgdesc="A tool for managing/monitoring Linux md device arrays, also known as Software RAID" arch=(i686 x86_64) @@ -13,7 +13,6 @@ 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 @@ -21,19 +20,15 @@ source=(ftp://ftp.kernel.org/pub/linux/utils/raid/mdadm/mdadm-$pkgver.tar.bz2 mdadm.service disable-werror.patch) replaces=('raidtools') -md5sums=('83ba4a6249ae24677e915e44c9cfcc58' - '8333d405f550317c2bacd5510bf1cb60' - '00cbed931db4f15b6ce49e3e7d433966' - '609d10888727710cb20db7ac3e096116' - 'fbb5542d9bdf87441a11dd7e7a0a17f8' - 'd1d8e9eb81ce9347de74f3c84a9db09e' - 'aafb5f9ac8437a284cbf948b9b13b179' - '4ad87b74a4bc9a34621280abe0e0c3e4') -build() { +prepare() { cd $srcdir/$pkgname-$pkgver patch -Np0 -i ../disable-werror.patch - make CXFLAGS="$CFLAGS" +} + +build() { + cd $srcdir/$pkgname-$pkgver + make CXFLAGS="$CFLAGS" BINDIR=/usr/bin # build static mdassemble for Arch's initramfs make MDASSEMBLE_AUTO=1 mdassemble @@ -41,18 +36,20 @@ build() { package() { cd $srcdir/$pkgname-$pkgver - make INSTALL=/usr/bin/install DESTDIR=$pkgdir install - install -D -m755 mdassemble $pkgdir/sbin/mdassemble + make INSTALL=/usr/bin/install BINDIR=/usr/bin DESTDIR=$pkgdir install + make SYSTEMD_DIR=$pkgdir/usr/lib/systemd/system install-systemd + install -D -m755 mdassemble $pkgdir/usr/bin/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/usr/lib/initcpio/install/mdadm install -D -m644 ../mdadm_hook $pkgdir/usr/lib/initcpio/hooks/mdadm install -D -m644 ../mdadm_udev_install $pkgdir/usr/lib/initcpio/install/mdadm_udev - # symlink for backward compatibility - ln -sf /usr/lib/initcpio/hooks/mdadm $pkgdir/usr/lib/initcpio/hooks/raid - # move /lib/* to /usr/lib/ - mv $pkgdir/lib/udev $pkgdir/usr/lib/ - rm -rf $pkgdir/lib # systemd service file install -D -m644 $srcdir/mdadm.service $pkgdir/usr/lib/systemd/system/mdadm.service } +md5sums=('8ac04259cdd74b4566c3b6dea9414b57' + '5a37c112aa07dccdde62f9fa5b888607' + 'af2f73f0094ebee66f503ca4710c7142' + 'fbfb7d07efcbaf5dc61af424c5f6e352' + 'b6b0bfd6487c99264578630616dfe5eb' + 'eb1786b18fa4d13cfd7b71d6b05cfb4f' + '599745ed2bec4489e83991cff89c46ee') diff --git a/abs/core/mdadm/disable-werror.patch b/abs/core/mdadm/disable-werror.patch index 50a33f1..a80a414 100644 --- a/abs/core/mdadm/disable-werror.patch +++ b/abs/core/mdadm/disable-werror.patch @@ -3,9 +3,9 @@ @@ -42,7 +42,7 @@ CC = $(CROSS_COMPILE)gcc - CXFLAGS = -ggdb + 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 + CWFLAGS += -Wp,-D_FORTIFY_SOURCE=2 -O3 endif diff --git a/abs/core/mdadm/mdadm b/abs/core/mdadm/mdadm deleted file mode 100755 index 9bf468e..0000000 --- a/abs/core/mdadm/mdadm +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -. /etc/rc.conf -. /etc/rc.d/functions - -pidfile=/run/mdadm.pid -if [[ -r $pidfile ]]; then - read -r PID <"$pidfile" - if [[ $PID && ! -d /proc/$PID ]]; then - # stale pidfile - unset PID - rm -f "$pidfile" - fi -fi - -case $1 in - start) - stat_busy "Starting mdadm RAID Monitor" - if [[ -z $PID ]] && mdadm --monitor --scan -i "$pidfile" -f; then - add_daemon mdadm - stat_done - else - stat_fail - fi - ;; - stop) - stat_busy "Stopping mdadm RAID Monitor" - if [[ $PID ]] && kill "$PID" &>/dev/null; then - rm_daemon mdadm - stat_done - else - stat_fail - fi - ;; - restart) - $0 stop - sleep 1 - $0 start - ;; - *) - echo "usage: $0 {start|stop|restart}" -esac diff --git a/abs/core/mdadm/mdadm-fix-udev-rules.patch b/abs/core/mdadm/mdadm-fix-udev-rules.patch new file mode 100644 index 0000000..941cadf --- /dev/null +++ b/abs/core/mdadm/mdadm-fix-udev-rules.patch @@ -0,0 +1,137 @@ +diff --git a/Makefile b/Makefile +index b6edb23..bedef96 100644 +--- a/Makefile ++++ b/Makefile +@@ -253,8 +253,9 @@ + $(INSTALL) -D -m 644 md.4 $(DESTDIR)$(MAN4DIR)/md.4 + $(INSTALL) -D -m 644 mdadm.conf.5 $(DESTDIR)$(MAN5DIR)/mdadm.conf.5 + +-install-udev: udev-md-raid.rules +- $(INSTALL) -D -m 644 udev-md-raid.rules $(DESTDIR)/lib/udev/rules.d/64-md-raid.rules ++install-udev: udev-md-raid-arrays.rules udev-md-raid-assembly.rules ++ $(INSTALL) -D -m 644 udev-md-raid-arrays.rules $(DESTDIR)/usr/lib/udev/rules.d/63-md-raid-arrays.rules ++ $(INSTALL) -D -m 644 udev-md-raid-assembly.rules $(DESTDIR)/usr/lib/udev/rules.d/64-md-raid-assembly.rules + + uninstall: + rm -f $(DESTDIR)$(MAN8DIR)/mdadm.8 $(DESTDIR)$(MAN8DIR)/mdmon.8 $(DESTDIR)$(MAN4DIR)/md.4 $(DESTDIR)$(MAN5DIR)/mdadm.conf.5 $(DESTDIR)$(BINDIR)/mdadm +diff --git a/udev-md-raid-arrays.rules b/udev-md-raid-arrays.rules +new file mode 100644 +index 0000000..883ee4d +--- /dev/null ++++ b/udev-md-raid-arrays.rules +@@ -0,0 +1,35 @@ ++# do not edit this file, it will be overwritten on update ++ ++SUBSYSTEM!="block", GOTO="md_end" ++ ++# handle md arrays ++ACTION!="add|change", GOTO="md_end" ++KERNEL!="md*", GOTO="md_end" ++ ++# partitions have no md/{array_state,metadata_version}, but should not ++# for that reason be ignored. ++ENV{DEVTYPE}=="partition", GOTO="md_ignore_state" ++ ++# container devices have a metadata version of e.g. 'external:ddf' and ++# never leave state 'inactive' ++ATTR{md/metadata_version}=="external:[A-Za-z]*", ATTR{md/array_state}=="inactive", GOTO="md_ignore_state" ++TEST!="md/array_state", ENV{SYSTEMD_READY}="0", GOTO="md_end" ++ATTR{md/array_state}=="|clear|inactive", ENV{SYSTEMD_READY}="0", GOTO="md_end" ++LABEL="md_ignore_state" ++ ++IMPORT{program}="/usr/bin/mdadm --detail --export $devnode" ++ENV{DEVTYPE}=="disk", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}", OPTIONS+="string_escape=replace" ++ENV{DEVTYPE}=="disk", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}" ++ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}" ++ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n", OPTIONS+="string_escape=replace" ++ENV{DEVTYPE}=="partition", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}-part%n" ++ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[^0-9]", SYMLINK+="md/$env{MD_DEVNAME}%n" ++ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[0-9]", SYMLINK+="md/$env{MD_DEVNAME}p%n" ++ ++IMPORT{builtin}="blkid" ++OPTIONS+="link_priority=100" ++OPTIONS+="watch" ++ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" ++ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" ++ ++LABEL="md_end" +diff --git a/udev-md-raid-assembly.rules b/udev-md-raid-assembly.rules +new file mode 100644 +index 0000000..b89775e +--- /dev/null ++++ b/udev-md-raid-assembly.rules +@@ -0,0 +1,19 @@ ++# do not edit this file, it will be overwritten on update ++ ++# assemble md arrays ++ ++SUBSYSTEM!="block", GOTO="md_inc_end" ++ ++# handle potential components of arrays (the ones supported by md) ++ENV{ID_FS_TYPE}=="ddf_raid_member|isw_raid_member|linux_raid_member", GOTO="md_inc" ++GOTO="md_inc_end" ++ ++LABEL="md_inc" ++ ++# remember you can limit what gets auto/incrementally assembled by ++# mdadm.conf(5)'s 'AUTO' and selectively whitelist using 'ARRAY' ++ACTION=="add", RUN+="/usr/bin/mdadm --incremental $devnode --offroot" ++ACTION=="remove", ENV{ID_PATH}=="?*", RUN+="/usr/bin/mdadm -If $name --path $env{ID_PATH}" ++ACTION=="remove", ENV{ID_PATH}!="?*", RUN+="/usr/bin/mdadm -If $name" ++ ++LABEL="md_inc_end" +diff --git a/udev-md-raid.rules b/udev-md-raid.rules +deleted file mode 100644 +index cc7f5ef..0000000 +--- a/udev-md-raid.rules ++++ /dev/null +@@ -1,49 +0,0 @@ +-# do not edit this file, it will be overwritten on update +- +-SUBSYSTEM!="block", GOTO="md_end" +- +-# handle potential components of arrays (the ones supported by md) +-ENV{ID_FS_TYPE}=="ddf_raid_member|isw_raid_member|linux_raid_member", GOTO="md_inc" +-GOTO="md_inc_skip" +- +-LABEL="md_inc" +- +-# remember you can limit what gets auto/incrementally assembled by +-# mdadm.conf(5)'s 'AUTO' and selectively whitelist using 'ARRAY' +-ACTION=="add", RUN+="/sbin/mdadm --incremental $tempnode --offroot" +-ACTION=="remove", ENV{ID_PATH}=="?*", RUN+="/sbin/mdadm -If $name --path $env{ID_PATH}" +-ACTION=="remove", ENV{ID_PATH}!="?*", RUN+="/sbin/mdadm -If $name" +- +-LABEL="md_inc_skip" +- +-# handle md arrays +-ACTION!="add|change", GOTO="md_end" +-KERNEL!="md*", GOTO="md_end" +- +-# partitions have no md/{array_state,metadata_version}, but should not +-# for that reason be ignored. +-ENV{DEVTYPE}=="partition", GOTO="md_ignore_state" +- +-# container devices have a metadata version of e.g. 'external:ddf' and +-# never leave state 'inactive' +-ATTR{md/metadata_version}=="external:[A-Za-z]*", ATTR{md/array_state}=="inactive", GOTO="md_ignore_state" +-TEST!="md/array_state", ENV{SYSTEMD_READY}="0", GOTO="md_end" +-ATTR{md/array_state}=="|clear|inactive", ENV{SYSTEMD_READY}="0", GOTO="md_end" +-LABEL="md_ignore_state" +- +-IMPORT{program}="/sbin/mdadm --detail --export $tempnode" +-ENV{DEVTYPE}=="disk", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}", OPTIONS+="string_escape=replace" +-ENV{DEVTYPE}=="disk", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}" +-ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}" +-ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n", OPTIONS+="string_escape=replace" +-ENV{DEVTYPE}=="partition", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}-part%n" +-ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[^0-9]", SYMLINK+="md/$env{MD_DEVNAME}%n" +-ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[0-9]", SYMLINK+="md/$env{MD_DEVNAME}p%n" +- +-IMPORT{program}="/sbin/blkid -o udev -p $tempnode" +-OPTIONS+="link_priority=100" +-OPTIONS+="watch" +-ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" +-ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" +- +-LABEL="md_end" diff --git a/abs/core/mdadm/mdadm.conf b/abs/core/mdadm/mdadm.conf index 57bd4c6..36eaa0c 100644 --- a/abs/core/mdadm/mdadm.conf +++ b/abs/core/mdadm/mdadm.conf @@ -59,8 +59,8 @@ DEVICE partitions # 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 +# mail address and/or a program. To start mdadm's monitor mode, enable +# mdadm.service in systemd. # # If the lines are not found, mdadm will exit quietly #MAILADDR root@mydomain.tld diff --git a/abs/core/mdadm/mdadm.service b/abs/core/mdadm/mdadm.service index 8389715..b3ca5f7 100644 --- a/abs/core/mdadm/mdadm.service +++ b/abs/core/mdadm/mdadm.service @@ -2,7 +2,7 @@ Description=MDADM Event Monitor [Service] -ExecStart=/sbin/mdadm --monitor --scan +ExecStart=/usr/bin/mdadm --monitor --scan [Install] WantedBy=multi-user.target diff --git a/abs/core/mdadm/mdadm_hook b/abs/core/mdadm/mdadm_hook index 787be5d..5371baa 100755 --- a/abs/core/mdadm/mdadm_hook +++ b/abs/core/mdadm/mdadm_hook @@ -43,7 +43,7 @@ run_hook() { fi # assemble everything - [ -s "$mdconfig" ] && /sbin/mdassemble + [ -s "$mdconfig" ] && /usr/bin/mdassemble } # vim: set ft=sh ts=4 sw=4 et: diff --git a/abs/core/mdadm/mdadm_install b/abs/core/mdadm/mdadm_install index cf6159e..7390509 100644 --- a/abs/core/mdadm/mdadm_install +++ b/abs/core/mdadm/mdadm_install @@ -8,7 +8,8 @@ build() { echo "Custom /etc/mdadm.conf file will be used in initramfs for assembling arrays." add_file "/etc/mdadm.conf" fi - add_binary "/sbin/mdassemble" + add_binary "/usr/bin/mdassemble" + add_file "/usr/lib/udev/rules.d/63-md-raid-arrays.rules" add_runscript } diff --git a/abs/core/mdadm/mdadm_udev_install b/abs/core/mdadm/mdadm_udev_install index f6f5de4..c01cbaf 100644 --- a/abs/core/mdadm/mdadm_udev_install +++ b/abs/core/mdadm/mdadm_udev_install @@ -9,14 +9,15 @@ build() { add_file "/etc/mdadm.conf" fi - add_binary "mdadm" - add_file "/usr/lib/udev/rules.d/64-md-raid.rules" + add_binary "/usr/bin/mdadm" + add_file "/usr/lib/udev/rules.d/63-md-raid-arrays.rules" + add_file "/usr/lib/udev/rules.d/64-md-raid-assembly.rules" } help() { cat <<HELPEOF This hook loads the necessary modules for a RAID array and uses incremental -assembly via udev at runtime to create the devices. This hook with NOT work +assembly via udev at runtime to create the devices. This hook will NOT work without the udev hook included on the image. HELPEOF } |