On Mon, 13 Mar 2023 14:42:58 +1100 NeilBrown <neilb@xxxxxxx> wrote: > This series is a minor revision of the previous series with the same > name. > It includes the important bugfix identified by Mariusz and a few minor > improvements suggested by Paul. > > Original comment: > > mdmon is a root-storage daemon is the sense defined by systemd > documentation, but it does not follow the practice that systemd > recommends. Specifically it is run from the root filesystem when > possible. The instance started in the initrd hands-over to a root-fs > based instance, which then hands-over to an initrd-based instance > started by dracut at shutdown. > > Part of the reason that we ignore systemd advise is that mdmon needs > access to the filesystem - specifically /dev and /sys - which is not > available in the initrd context after switchroot. We could possibly > change mdmon to work in the systemd-preferred way by splitting mdmon > into two processes instead of just having 2 threads. The "monitor" > process could running entirely in the initrd context, the "manager" > process could safely run in the root-fs context, passing newly opened > file descriptors to the monitor over a unix-domain socket. > > But we aren't there yet and may never be. > > For now, mdmon doesn't work correctly. There is no mechanism to ensure > a new instance starts after switchroot. Until recently the initrd > instance of the systemd mdmon unit would be stopped at switchroot time > because udev would temporarily forget about md devices. This would > allow the "udevadm trigger" process to start a new instance. udev was > recently fixed: > > Commit: 7ec624147a41 ("udevadm: cleanup-db: don't delete information for kept > db entries") > > so now the attempt to start mdmon via "udevadm trigger" does nothing as > mdmon already has an active unit. > > The net result is that mdmon continues running in the initrd mount > namespace and so cannot access new devices. Adding a device to a root > md array that depends on mdmon will no longer work. > > We want the initrd instance of mdmon to continue running until the > root-fs based instance starts, and that really requires we have two > different systemd units. This series achieves this in the final patch by > using a different instance name inside or initrd and outside. > "initrd-mdfoo" and "mdfoo". > > Other patches in the series are mostly clean-ups and minor improvements > in related code. > > NeilBrown > > > Hi Jes, Sorry for the delay. We found one grow related problem and needed to determine if it is the patchset related. It seems not, so for all patches: Reviewed-by: Mariusz Tkaczyk <mariusz.tkaczyk@xxxxxxxxxxxxxxx> Thanks to Neil we can revert "revert of Remove KillMode" patch (hopefully) forever this time. Please apply those paches, then I will send a revert. Thanks, Mariusz