[source] mdadm: extend uci config support
LEDE Commits
lede-commits at lists.infradead.org
Thu Dec 14 09:42:52 PST 2017
jow pushed a commit to source.git, branch lede-17.01:
https://git.lede-project.org/8bf67f63b92082716cffd76093fca3b6bdac8cc5
commit 8bf67f63b92082716cffd76093fca3b6bdac8cc5
Author: Jo-Philipp Wich <jo at mein.io>
AuthorDate: Thu Feb 9 13:22:47 2017 +0100
mdadm: extend uci config support
Extend the mdadm package to allow to explicitely configure arrays as
well as device list entries.
Signed-off-by: Jo-Philipp Wich <jo at mein.io>
(cherry picked from commit 813efe57e434037fb58bd3e16ebd3a1cfd6ceb82)
---
package/utils/mdadm/Makefile | 2 +-
package/utils/mdadm/files/mdadm.config | 15 +++++++
package/utils/mdadm/files/mdadm.init | 72 +++++++++++++++++++++++++++++++---
3 files changed, 82 insertions(+), 7 deletions(-)
diff --git a/package/utils/mdadm/Makefile b/package/utils/mdadm/Makefile
index 8f0fcf0..32544cc 100644
--- a/package/utils/mdadm/Makefile
+++ b/package/utils/mdadm/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=mdadm
PKG_VERSION:=3.2.5
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_URL:=@KERNEL/linux/utils/raid/mdadm
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
diff --git a/package/utils/mdadm/files/mdadm.config b/package/utils/mdadm/files/mdadm.config
index 536228f..50afbc2 100644
--- a/package/utils/mdadm/files/mdadm.config
+++ b/package/utils/mdadm/files/mdadm.config
@@ -1,3 +1,18 @@
config mdadm
option email root
+ # list devices /dev/hd*
+ # list devices /dev/sd*
+ # list devices partitions
+config array
+ option uuid 52c5c44a:d2162820:f75d3464:799750f8
+ option device /dev/md0
+ # option name raid:0
+ # option super_minor 0
+ # list devices /dev/sda1
+ # list devices /dev/sdb1
+ # option spares 0
+ # option spare_group spares
+ # option bitmap /bitmap.md
+ # option container 00000000:00000000:00000000:00000000
+ # option member 1
diff --git a/package/utils/mdadm/files/mdadm.init b/package/utils/mdadm/files/mdadm.init
index 9da4684..e6624a7 100644
--- a/package/utils/mdadm/files/mdadm.init
+++ b/package/utils/mdadm/files/mdadm.init
@@ -7,24 +7,84 @@ USE_PROCD=1
PROG=/sbin/mdadm
NAME=mdadm
-mdadm_email() {
+CONF="/var/etc/mdadm.conf"
+
+append_list_item() {
+ append "$2" "$1" "$3"
+}
+
+append_option() {
+ local var="$1"
+ local cfg="$2"
+ local opt="$3"
+ local name="$4"
+ local sep="$5"
+ local str
+
+ if [ -n "$sep" ]; then
+ config_list_foreach "$cfg" "$opt" append_list_item str "$sep"
+ else
+ config_get str "$cfg" "$opt"
+ fi
+
+ [ -n "$str" ] && append "$var" $(printf "%s=%s" "${name:-${opt//_/-}}" "$str")
+}
+
+mdadm_common() {
+ local cfg="$1"
+ local email devices
+
+ if [ -x /sbin/sendmail ]; then
+ append_option email "$cfg" email "MAILADDR"
+
+ fi
+
+ append_option devices "$cfg" devices DEVICE " "
+
+ printf "%s\n%s\n" "$email" "$devices" >> $CONF
+}
+
+mdadm_array() {
local cfg="$1"
- if [ ! -x /sbin/sendmail ]; then
+ local uuid device devices name array
+
+ config_get uuid "$cfg" uuid
+ config_get name "$cfg" name
+ config_get device "$cfg" device
+
+ if [ -z "$device" ] || [ -z "$uuid$name" ]; then
+ echo "Skipping array without device, uuid or name" >&2
return
fi
- config_get email "$cfg" email
+
+ [ -n "$uuid" ] && append array "uuid=$uuid"
+ [ -n "$name" ] && append array "name=$name"
+
+ append_option array "$cfg" super_minor
+ append_option array "$cfg" spares
+ append_option array "$cfg" spare_group
+ append_option array "$cfg" bitmap
+ append_option array "$cfg" container
+ append_option array "$cfg" member
+ append_option array "$cfg" devices devices ","
+
+ printf "ARRAY %s %s\n" "$device" "$array" >> $CONF
}
start_service() {
local email
+ mkdir -p "${CONF%/*}"
+ printf "# Autogenerated from /etc/config/mdadm, do not edit!\n" > $CONF
+
config_load mdadm
- config_foreach mdadm_email mdadm
+ config_foreach mdadm_common mdadm
+ config_foreach mdadm_array array
- $PROG --assemble --scan
+ $PROG --assemble --scan --config="$CONF"
procd_open_instance
- procd_set_param command "$PROG" --monitor ${email:+--mail=$email} --syslog --scan
+ procd_set_param command "$PROG" --monitor --syslog --scan --config="$CONF"
procd_close_instance
}
More information about the lede-commits
mailing list