summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormadduck <madduck@3cfab66f-1918-0410-86b3-c06b76f9a464>2006-08-02 15:20:03 +0000
committermadduck <madduck@3cfab66f-1918-0410-86b3-c06b76f9a464>2006-08-02 15:20:03 +0000
commit81a35bb8b3ac61c6ac98322b92e50913ec2d6cf4 (patch)
tree7060d03d010a82eb54c482eae399a3dadb31ec85
parentf88d195cc5f8db742a5e619c35d1dff3406f8477 (diff)
* Add safety net to prevent endless loops in RAID autodetection. Now just
falls back to starting all arrays from the initramfs if it fails to determine an acceptable array for the / filesystem in three tries (see #381007).
-rw-r--r--debian/changelog6
-rw-r--r--debian/mdadm.config9
2 files changed, 14 insertions, 1 deletions
diff --git a/debian/changelog b/debian/changelog
index c39cbcf7..c9d59aef 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -11,6 +11,10 @@ mdadm (2.5.2-10) UNRELEASED; urgency=low
The autodetection code now doesn't care about the actual name of the array
device, but instead only insists that it exists, is a block device, and
recognised as an array by mdadm (mdadm --detail).
+ * Add safety net to prevent endless loops in RAID autodetection. Now just
+ falls back to starting all arrays from the initramfs if it fails to
+ determine an acceptable array for the / filesystem in three tries
+ (see #381007).
* checkarray: correctly recognise when the kernel is too old for parity
checks, or when there are no redundant arrays present (closes: #380746).
* checkarray: now supports -s|--status switch to query parity check status
@@ -18,7 +22,7 @@ mdadm (2.5.2-10) UNRELEASED; urgency=low
* checkarray: now supports -x|--cancel switch to cancel running checks.
* mkconf: now also outputs MAILADDR.
- -- martin f. krafft <madduck@debian.org> Wed, 2 Aug 2006 16:17:09 +0100
+ -- martin f. krafft <madduck@debian.org> Wed, 2 Aug 2006 16:18:18 +0100
mdadm (2.5.2-9) unstable; urgency=low
diff --git a/debian/mdadm.config b/debian/mdadm.config
index 0579d6da..0d61dcaa 100644
--- a/debian/mdadm.config
+++ b/debian/mdadm.config
@@ -64,6 +64,7 @@ fi
[ -n "$INITRDSTART" ] && db_set mdadm/initrdstart "$INITRDSTART"
+cnt=0
while true; do
db_input low mdadm/initrdstart || true
db_go
@@ -110,6 +111,14 @@ while true; do
# exit the while true loop
break
fi
+
+ cnt=$((cnt + 1))
+ if [ $cnt -eq 3 ]; then
+ echo "W: unable to determine RAID arrays needed for boot." >&2
+ echo "W: falling back to starting all of them..." >&2
+ INITRDSTART=all
+ break
+ fi
;;
esac
done