linux-raid.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] Assorted patches relating to mdmon
@ 2023-02-27  0:13 NeilBrown
  2023-02-27  0:13 ` [PATCH 5/6] mdmon: Remove need for KillMode=none NeilBrown
                   ` (6 more replies)
  0 siblings, 7 replies; 12+ messages in thread
From: NeilBrown @ 2023-02-27  0:13 UTC (permalink / raw)
  To: Jes Sorensen; +Cc: linux-raid, Martin Wilck, Mariusz Tkaczyk

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



---

NeilBrown (6):
      Use existence of /etc/initrd-release to detect initrd.
      Improvements for IMSM_NO_PLATFORM testing.
      mdmon: don't test both 'all' and 'container_name'.
      mdmon: change systemd unit file to use --foreground
      mdmon: Remove need for KillMode=none
      mdmon improvements for switchroot


 Grow.c                    |  4 ++--
 mdadm.h                   |  4 +++-
 mdmon.c                   | 21 ++++++++++++-------
 super-intel.c             | 43 ++++++++++++++++++++++++++++++++++++---
 systemd/mdmon@.service    | 15 +++++++-------
 udev-md-raid-arrays.rules |  3 ++-
 util.c                    | 17 +++++-----------
 7 files changed, 74 insertions(+), 33 deletions(-)

--
Signature


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-03-06  8:31 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-27  0:13 [PATCH 0/6] Assorted patches relating to mdmon NeilBrown
2023-02-27  0:13 ` [PATCH 5/6] mdmon: Remove need for KillMode=none NeilBrown
2023-03-06  6:45   ` Paul Menzel
2023-02-27  0:13 ` [PATCH 2/6] Improvements for IMSM_NO_PLATFORM testing NeilBrown
2023-02-27  0:13 ` [PATCH 3/6] mdmon: don't test both 'all' and 'container_name' NeilBrown
2023-02-27  0:13 ` [PATCH 4/6] mdmon: change systemd unit file to use --foreground NeilBrown
2023-02-27  0:13 ` [PATCH 6/6] mdmon improvements for switchroot NeilBrown
2023-03-01 13:50   ` Mariusz Tkaczyk
2023-03-05 22:10     ` NeilBrown
2023-03-06  8:31   ` Paul Menzel
2023-02-27  0:13 ` [PATCH 1/6] Use existence of /etc/initrd-release to detect initrd NeilBrown
2023-03-01  8:55 ` [PATCH 0/6] Assorted patches relating to mdmon Mariusz Tkaczyk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).