summaryrefslogtreecommitdiffstats
path: root/debian/local/initramfs-tools/local-block
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:55:45 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:55:45 +0000
commit2c958b35ba11c61dd2b7416d2f6067655512d2b9 (patch)
tree4beee0533c06469c7d12d2493f59b0add009c75e /debian/local/initramfs-tools/local-block
parentAdding upstream version 4.3. (diff)
downloadmdadm-2c958b35ba11c61dd2b7416d2f6067655512d2b9.tar.xz
mdadm-2c958b35ba11c61dd2b7416d2f6067655512d2b9.zip
Adding debian version 4.3-1.debian/4.3-1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'debian/local/initramfs-tools/local-block')
-rwxr-xr-xdebian/local/initramfs-tools/local-block/mdadm61
1 files changed, 61 insertions, 0 deletions
diff --git a/debian/local/initramfs-tools/local-block/mdadm b/debian/local/initramfs-tools/local-block/mdadm
new file mode 100755
index 0000000..214f24c
--- /dev/null
+++ b/debian/local/initramfs-tools/local-block/mdadm
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+PREREQ="multipath"
+
+prereqs()
+{
+ echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+ prereqs
+ exit 0
+ ;;
+esac
+
+. /scripts/functions
+
+# Poor man's mdadm-last-resort@.timer
+# That kicks in 2/3rds into the ROOTDELAY
+
+if [ ! -f /run/count.mdadm.initrd ]
+then
+ COUNT=0
+
+ # Unfortunately raid personalities can be registered _after_ block
+ # devices have already been added, and their rules processed, try
+ # triggering again. See #830770
+ udevadm trigger --action=add -s block || true
+ wait_for_udev 10
+else
+ COUNT=$(cat /run/count.mdadm.initrd)
+fi
+COUNT=$((COUNT + 1))
+
+echo $COUNT > /run/count.mdadm.initrd
+
+# Run pure assemble command, even though we default to incremental
+# assembly it is supported for users to export variables via
+# param.conf such as IMSM_NO_PLATFORM. See #830300
+mdadm -q --assemble --scan --no-degraded || true
+
+MAX=30
+if [ ${ROOTDELAY:-0} -gt $MAX ]; then
+ MAX=$ROOTDELAY
+fi
+MAX=$((MAX*2/3))
+
+if [ "$COUNT" = "$MAX" ]
+then
+ # Poor man's mdadm-last-resort@.service for incremental devices
+ mdadm -q --run /dev/md?*
+
+ # And last try for all others
+ mdadm -q --assemble --scan --run
+
+ rm -f /run/count.mdadm.initrd
+fi
+
+exit 0