Currently, the overlayfs is setup by our pre-init script in a way we thought did not necessitate an initramfs.
But this now seems to be a bad thing to do as during shutdown, systemd does not know about the upper and lower layer of the overlayfs, and thus only succeeds in unmounting the overlayfs itself. It doesn't notice the still mounted partitions, which means the upper layer of the overlayfs gets corrupted at every boot.
So I think the best approache to this would be to build a minimal dracut initramfs that systemd can then pivot to during shutdown, see the systemd documentation for its initrd interface.
highon 31 May