summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/system.scm10
-rw-r--r--gnu/system/mapped-devices.scm16
2 files changed, 8 insertions, 18 deletions
diff --git a/gnu/system.scm b/gnu/system.scm
index b1454b262d..768ca9cab2 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -233,15 +233,7 @@ from the initrd."
(define (device-mapping-services os)
"Return the list of device-mapping services for OS as a list."
- (map (lambda (md)
- (let* ((source (mapped-device-source md))
- (target (mapped-device-target md))
- (type (mapped-device-type md))
- (open (mapped-device-kind-open type))
- (close (mapped-device-kind-close type)))
- (device-mapping-service target
- (open source target)
- (close source target))))
+ (map device-mapping-service
(operating-system-user-mapped-devices os)))
(define (swap-services os)
diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm
index be2d6a4749..2706e255c5 100644
--- a/gnu/system/mapped-devices.scm
+++ b/gnu/system/mapped-devices.scm
@@ -69,21 +69,19 @@
(shepherd-service-type
'device-mapping
(match-lambda
- ((target open close)
+ (($ <mapped-device> source target
+ ($ <mapped-device-type> open close))
(shepherd-service
(provision (list (symbol-append 'device-mapping- (string->symbol target))))
(requirement '(udev))
(documentation "Map a device node using Linux's device mapper.")
- (start #~(lambda () #$open))
- (stop #~(lambda _ (not #$close)))
+ (start #~(lambda () #$(open source target)))
+ (stop #~(lambda _ (not #$(close source target))))
(respawn? #f))))))
-(define (device-mapping-service target open close)
- "Return a service that maps device @var{target}, a string such as
-@code{\"home\"} (meaning @code{/dev/mapper/home}). Evaluate @var{open}, a
-gexp, to open it, and evaluate @var{close} to close it."
- (service device-mapping-service-type
- (list target open close)))
+(define (device-mapping-service mapped-device)
+ "Return a service that sets up @var{mapped-device}."
+ (service device-mapping-service-type mapped-device))
;;;