summary refs log tree commit diff
path: root/upstart-jobs/swraid.nix
diff options
context:
space:
mode:
Diffstat (limited to 'upstart-jobs/swraid.nix')
-rw-r--r--upstart-jobs/swraid.nix36
1 files changed, 36 insertions, 0 deletions
diff --git a/upstart-jobs/swraid.nix b/upstart-jobs/swraid.nix
new file mode 100644
index 00000000000..f62bccbf967
--- /dev/null
+++ b/upstart-jobs/swraid.nix
@@ -0,0 +1,36 @@
+{kernel, module_init_tools, mdadm}:
+
+let
+
+  tempConf = "/var/state/mdadm.conf";
+
+in
+  
+{
+  name = "swraid";
+  
+  job = "
+start on udev
+#start on new-devices
+
+script
+
+    # Load the necessary RAID personalities.
+    export MODULE_DIR=${kernel}/lib/modules/
+    for mod in raid0 raid1 raid5; do
+        ${module_init_tools}/sbin/modprobe $mod || true
+    done
+
+    # Scan /proc/partitions for RAID devices.
+    ${mdadm}/sbin/mdadm --examine --brief --scan -c partitions > ${tempConf}
+
+    # Activate each device found.
+    ${mdadm}/sbin/mdadm --assemble -c ${tempConf} --scan
+
+    initctl emit new-devices
+    
+end script
+
+  ";
+
+}