Commit 49e6c686 authored by Andrew Marshall's avatar Andrew Marshall
Browse files

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
parent 269f5806
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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"
+13 −0
Original line number Diff line number Diff line
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)) {