Does it matter if call_failure_hooks is allways called?
"mdadm --run --scan" will start all arrays degraded not only the one needed for the rootfs (and its lvm and crypt respectively).
It will start for example a partial array from a removable disk that was attatched and hasn't been forgotten when the computer was turned off. Remember starting an array degraded means it will also start degraded next time. To prevent accidential degration and sideeffect just start the required arrays with "mdadm --run /dev/mdX" or even better by UUID.
This means of course we need to know the required array in initramfs.
Another point are required non-root filesystems, like a /home array that needs to startdegraded.
We need a way to configure non-root raid devices to startdegraded anyway, so this configuration could as well be used (hooked into initramfs like the cryptroot script does) for the root device. (The bootdegraded kernel parameter might not be neccesary then.)
A regular init.d script (like the former mdadm-raid or mdadm-degreade) can handle the non-root startdegraded devices.
Instead of fixed sleep 5 in init-premount/mdadm, you could introduce a check & timeout loop after call_failure_hooks in the local script. (So we can resume booting ASAP.) Maybe just copy the slumber while loop from above the call_failure_hooks.
The error output could be more informative:
Instead of "Check rootdelay= (did the system wait long enough?)"
-->"If rootdelay=${VARIABLE} is not long enough, customize kernel parameter."
Hi, some feedback about the patches.
Does it matter if call_failure_hooks is allways called?
"mdadm --run --scan" will start all arrays degraded not only the one needed for the rootfs (and its lvm and crypt respectively).
It will start for example a partial array from a removable disk that was attatched and hasn't been forgotten when the computer was turned off. Remember starting an array degraded means it will also start degraded next time. To prevent accidential degration and sideeffect just start the required arrays with "mdadm --run /dev/mdX" or even better by UUID.
This means of course we need to know the required array in initramfs.
Another point are required non-root filesystems, like a /home array that needs to startdegraded.
We need a way to configure non-root raid devices to startdegraded anyway, so this configuration could as well be used (hooked into initramfs like the cryptroot script does) for the root device. (The bootdegraded kernel parameter might not be neccesary then.)
A regular init.d script (like the former mdadm-raid or mdadm-degreade) can handle the non-root startdegraded devices.
Instead of fixed sleep 5 in init-premount/ mdadm, you could introduce a check & timeout loop after call_failure_hooks in the local script. (So we can resume booting ASAP.) Maybe just copy the slumber while loop from above the call_failure_hooks.
The error output could be more informative: ${VARIABLE} is not long enough, customize kernel parameter."
Instead of "Check rootdelay= (did the system wait long enough?)"
-->"If rootdelay=
I have updated the comments on /wiki.ubuntu. com/BootDegrade dRaid#head- 59fd70893e835c2 5f3c7a40741e1b2 4ad6066a64
https:/