summaryrefslogtreecommitdiffstats
path: root/modules.d/90mdraid
diff options
context:
space:
mode:
Diffstat (limited to 'modules.d/90mdraid')
-rw-r--r--modules.d/90mdraid/59-persistent-storage-md.rules2
-rwxr-xr-xmodules.d/90mdraid/mdraid_start.sh14
-rwxr-xr-xmodules.d/90mdraid/parse-md.sh2
3 files changed, 16 insertions, 2 deletions
diff --git a/modules.d/90mdraid/59-persistent-storage-md.rules b/modules.d/90mdraid/59-persistent-storage-md.rules
index 0d745cc..9e29135 100644
--- a/modules.d/90mdraid/59-persistent-storage-md.rules
+++ b/modules.d/90mdraid/59-persistent-storage-md.rules
@@ -16,7 +16,7 @@ ATTR{md/array_state}=="|clear|inactive", GOTO="md_end"
LABEL="md_ignore_state"
-IMPORT{program}="/sbin/mdadm --detail --export $tempnode"
+IMPORT{program}="/sbin/mdadm --detail --export $devnode"
IMPORT{builtin}="blkid"
OPTIONS+="link_priority=100"
OPTIONS+="watch"
diff --git a/modules.d/90mdraid/mdraid_start.sh b/modules.d/90mdraid/mdraid_start.sh
index d8c5de2..2645f1c 100755
--- a/modules.d/90mdraid/mdraid_start.sh
+++ b/modules.d/90mdraid/mdraid_start.sh
@@ -32,11 +32,14 @@ _md_force_run() {
local _md
local _UUID
local _MD_UUID
+ local _LEFT_UUID
+ local _uuid
_MD_UUID=$(getargs rd.md.uuid -d rd_MD_UUID=)
[ -n "$_MD_UUID" ] || getargbool 0 rd.auto || return
if [ -n "$_MD_UUID" ]; then
+ _LEFT_UUID=$(str_replace "$_MD_UUID" "-" ":")
_MD_UUID=$(str_replace "$_MD_UUID" "-" "")
_MD_UUID=$(str_replace "$_MD_UUID" ":" "")
@@ -51,6 +54,9 @@ _md_force_run() {
)
[ -z "$_UUID" ] && continue
+ # remove the UUID already assembled from the list
+ _LEFT_UUID=$(str_replace "$_LEFT_UUID" "$_UUID" "")
+
_UUID=$(str_replace "$_UUID" ":" "")
# check if we should handle this device
@@ -65,6 +71,14 @@ _md_force_run() {
_md_start "${_md}"
done
fi
+
+ # try to assemble all the left md devices that should be assembled
+ # probably failed because of timing issue in the first beginning
+ if [ -n "$_LEFT_UUID" ]; then
+ for _uuid in ${_LEFT_UUID}; do
+ mdadm --assemble --scan --uuid="$_uuid"
+ done
+ fi
}
_md_force_run
diff --git a/modules.d/90mdraid/parse-md.sh b/modules.d/90mdraid/parse-md.sh
index 4d3a6b2..adc8aa6 100755
--- a/modules.d/90mdraid/parse-md.sh
+++ b/modules.d/90mdraid/parse-md.sh
@@ -21,7 +21,7 @@ else
printf 'ENV{ID_FS_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr "$uuid" 1 8)-$(expr substr "$uuid" 9 4)-$(expr substr "$uuid" 13 4)-$(expr substr "$uuid" 17 4)-$(expr substr "$uuid" 21 12)"
done
# shellcheck disable=SC2016
- printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n'
+ printf 'IMPORT{program}="/sbin/mdadm --examine --export $devnode"\n'
for uuid in $MD_UUID; do
printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr "$uuid" 1 8):$(expr substr "$uuid" 9 8):$(expr substr "$uuid" 17 8):$(expr substr "$uuid" 25 8)"
done