* In xenial, mdadm-waitclean is an init.d script, and it appears that it doesn't not run late enough. In later releases a systemd-shutdown script is shipped instead. Which results in wait-clean action executed later in the shutdown cycle, having more chances to complete the shutdown with clean/synced RAID array state.
* In xenial, there is no default shutdown initramfs, and therefore mdmon processes are killed before the Intel Matrix RAID / DFF external metadata RAID arrays are stopped. This leads to a full resync upon next assembly. One options is to implement a shutdown initramfs, another solution is to not takeover mdmon process from the initramfs. This will result in holding up initramfs memory throughout the lifetime of the system, however the net effect should be clean raid array shutdowns which will mitigate excessive resyncs.
[Bugfix]
Backport mdadm.shutdown systemd-shutdown script to xenial
[Test Case]
* Switch logging to console, and make it verbose LogLevel=debug LogTarget=console. Perform shutdown and observe that mdadm.shutdown is executed during shutdown.
* Check that the system boots with a clean raid-array state.
[Regression Potential]
* On systems that have rootfs on the Intel Matrix / DDF raid (external metadata mdadm raid, i.e. NOT the generic linux raid) initramfs will result in being held up through the lifetime of the boot thus using more steady state RAM. This only affects systems that use Intel Matrix / DDF controllers, and are typically bare-metal servers.
* additional wait-clean shutdown script is quick but has an impact on shutdown.target speed / time to shutdown or reboot.
[Other Info]
* Later releases do not use sysv-init script thus this not a direct backport of code from later releases
[Impact]
* In xenial, mdadm-waitclean is an init.d script, and it appears that it doesn't not run late enough. In later releases a systemd-shutdown script is shipped instead. Which results in wait-clean action executed later in the shutdown cycle, having more chances to complete the shutdown with clean/synced RAID array state.
* In xenial, there is no default shutdown initramfs, and therefore mdmon processes are killed before the Intel Matrix RAID / DFF external metadata RAID arrays are stopped. This leads to a full resync upon next assembly. One options is to implement a shutdown initramfs, another solution is to not takeover mdmon process from the initramfs. This will result in holding up initramfs memory throughout the lifetime of the system, however the net effect should be clean raid array shutdowns which will mitigate excessive resyncs.
[Bugfix]
Backport mdadm.shutdown systemd-shutdown script to xenial
[Test Case]
* Switch logging to console, and make it verbose LogLevel=debug LogTarget=console. Perform shutdown and observe that mdadm.shutdown is executed during shutdown.
* Check that the system boots with a clean raid-array state.
[Regression Potential]
* On systems that have rootfs on the Intel Matrix / DDF raid (external metadata mdadm raid, i.e. NOT the generic linux raid) initramfs will result in being held up through the lifetime of the boot thus using more steady state RAM. This only affects systems that use Intel Matrix / DDF controllers, and are typically bare-metal servers.
* additional wait-clean shutdown script is quick but has an impact on shutdown.target speed / time to shutdown or reboot.
[Other Info]
* Later releases do not use sysv-init script thus this not a direct backport of code from later releases