Comment 74 for bug 120375

Revision history for this message
ceg (ceg) wrote :

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:
Instead of "Check rootdelay= (did the system wait long enough?)"
  -->"If rootdelay=${VARIABLE} is not long enough, customize kernel parameter."

I have updated the comments on
https://wiki.ubuntu.com/BootDegradedRaid#head-59fd70893e835c25f3c7a40741e1b24ad6066a64