summaryrefslogtreecommitdiff
path: root/gnu/system/mapped-devices.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/system/mapped-devices.scm')
-rw-r--r--gnu/system/mapped-devices.scm32
1 files changed, 18 insertions, 14 deletions
diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm
index 1cfd6492787..2a0706e50b0 100644
--- a/gnu/system/mapped-devices.scm
+++ b/gnu/system/mapped-devices.scm
@@ -128,20 +128,24 @@
128 (open open-luks-device) 128 (open open-luks-device)
129 (close close-luks-device))) 129 (close close-luks-device)))
130 130
131(define (open-raid-device source target) 131(define (open-raid-device sources target)
132 "Return a gexp that assembles SOURCE (a list of devices) to the RAID device 132 "Return a gexp that assembles SOURCES (a list of devices) to the RAID device
133TARGET, using 'mdadm'." 133TARGET (e.g., \"/dev/md0\"), using 'mdadm'."
134 #~(let ((every (@ (srfi srfi-1) every))) 134 #~(begin
135 (let loop () 135 (use-modules (srfi srfi-1) (ice-9 format))
136 (unless (every file-exists? '#$source) 136
137 (format #t "waiting a bit...~%") 137 (let ((sources '#$sources))
138 (sleep 1) 138 (let loop ()
139 (loop))) 139 (unless (every file-exists? sources)
140 (zero? (system* (string-append #$mdadm "/sbin/mdadm") 140 (format #t "waiting for RAID source devices~{ ~a~}...~%"
141 "--assemble" #$target 141 sources)
142 #$@source)))) 142 (sleep 1)
143 143 (loop)))
144(define (close-raid-device source target) 144
145 (zero? (system* (string-append #$mdadm "/sbin/mdadm")
146 "--assemble" #$target sources)))))
147
148(define (close-raid-device sources target)
145 "Return a gexp that stops the RAID device TARGET." 149 "Return a gexp that stops the RAID device TARGET."
146 #~(zero? (system* (string-append #$mdadm "/sbin/mdadm") 150 #~(zero? (system* (string-append #$mdadm "/sbin/mdadm")
147 "--stop" #$target))) 151 "--stop" #$target)))