mdadm: Fix hardcoded directory

In [upstream change][1], handling of creating `/run/mdadm/creating-%s`
file was changed to fail if it was unable to create the file. This
revealed that the path itself incorrectly hardcodes `/run/mdadm` instead
of using `MAP_DIR` or similar. Since nixpkgs sets `RUN_DIR=/run/.mdadm`
at compile time, and `MAP_DIR=$(RUN_DIR)` in upstream, the `/run/mdadm`
is never created. This remedies by fixing the hard-coded directory.

[1]: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=9f376da6439b07dc93ae084ab576e133b9d8d839
This commit is contained in:
Andrew Marshall 2024-04-02 18:56:14 -04:00
parent 269f5806e0
commit 49e6c686f8
2 changed files with 17 additions and 1 deletions

View file

@ -9,7 +9,10 @@ stdenv.mkDerivation rec {
sha256 = "sha256-QWcnrh8QgOpuMJDOo23QdoJvw2kVHjarc2VXupIZb58=";
};
patches = [ ./no-self-references.patch ];
patches = [
./no-self-references.patch
./fix-hardcoded-mapdir.patch
];
makeFlags = [
"NIXOS=1" "INSTALL=install" "BINDIR=$(out)/sbin"

View file

@ -0,0 +1,13 @@
diff --git a/udev.c b/udev.c
index bc4722b0..aa2a1a24 100644
--- a/udev.c
+++ b/udev.c
@@ -167,7 +167,7 @@ enum udev_status udev_block(char *devnm)
int fd;
char *path = xcalloc(1, BUFSIZ);
- snprintf(path, BUFSIZ, "/run/mdadm/creating-%s", devnm);
+ snprintf(path, BUFSIZ, "%s/creating-%s", MAP_DIR, devnm);
fd = open(path, O_CREAT | O_RDWR, 0600);
if (!is_fd_valid(fd)) {