[Cc: Update Mariusz address]
Am 26.03.25 um 09:00 schrieb Paul Menzel:
Dear Nigel,
Thank you for your patch. It’d be great if you used imperative mood for
the summary/title.
Am 25.03.25 um 20:18 schrieb Nigel Croxon:
Just a note, that there is a blank line at the top of your commit
message body.
Mounting an md device may fail during boot from mdadm's claim
on the device not being released before systemd attempts to mount.
While mdadm is still constructing the array (mdadm --incremental
that is called from within /usr/lib/udev/rules.d/64-md-raid-
assembly.rules),
there is an attempt to mount the md device, but there is not a creation
of "/run/mdadm/creating-xxx" file when in incremental mode that
the rule is looking for. Therefore the device is not marked
as SYSTEMD_READY=0 in
"/usr/lib/udev/rules.d/01-md-raid-creating.rules" and missing
synchronization using the "/run/mdadm/creating-xxx" file.
Enable creating the "/run/mdadm/creating-xxx" file during
incremental mode.
Signed-off-by: Nigel Croxon <ncroxon@xxxxxxxxxx>
---
Incremental.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/Incremental.c b/Incremental.c
index 228d2bdd..e0d3fce7 100644
--- a/Incremental.c
+++ b/Incremental.c
@@ -30,6 +30,7 @@
#include "mdadm.h"
#include "xmalloc.h"
+#include "udev.h"
#include <sys/wait.h>
#include <dirent.h>
@@ -286,7 +287,7 @@ int Incremental(struct mddev_dev *devlist, struct context *c,
/* Couldn't find an existing array, maybe make a new one */
mdfd = create_mddev(match ? match->devname : NULL, name_to_use, trustworthy,
- chosen_name, 0);
+ chosen_name, 1);
if (mdfd < 0)
goto out_unlock;
@@ -599,6 +600,7 @@ int Incremental(struct mddev_dev *devlist, struct context *c,
rv = 0;
}
out:
+ udev_unblock();
free(avail);
if (dfd >= 0)
close(dfd);
Kind regards,
Paul