diff options
author | Ludovic Courtès <ludo@gnu.org> | 2014-09-18 19:18:39 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2014-09-18 19:18:39 +0200 |
commit | 722554a306be645026d75893b77863769dcd861d (patch) | |
tree | 4b2e16ebb8524103708c48681f10dc976080e250 /gnu/services | |
parent | cb823dd279b77566f2974b210fbd58a7c53a2b0a (diff) | |
download | gnu-guix-722554a306be645026d75893b77863769dcd861d.tar gnu-guix-722554a306be645026d75893b77863769dcd861d.tar.gz |
system: Define 'device-mapping-kind', and add a 'close' procedure.
* gnu/system/file-systems.scm (<mapped-device-type>): New record type.
(<mapped-device>)[command]: Remove field.
[type]: New field.
* gnu/services/base.scm (device-mapping-service): Rename 'command'
parameter to 'open'. Add 'close' parameter and honor it.
* gnu/system.scm (luks-device-mapping): Rename to...
(open-luks-device): ... this.
(close-luks-device): New procedure.
(luks-device-mapping): New variable.
(device-mapping-services): Get the type of MD, and pass its 'open' and
'close' fields to 'device-mapping-service'.
Diffstat (limited to 'gnu/services')
-rw-r--r-- | gnu/services/base.scm | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/gnu/services/base.scm b/gnu/services/base.scm index bfe5f52af4..f2de85f410 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -600,19 +600,18 @@ extra rules from the packages listed in @var{rules}." ;; called. Thus, make sure it is not respawned. (respawn? #f))))) -(define (device-mapping-service target command) +(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}), by executing @var{command}, -a gexp." +@code{\"home\"} (meaning @code{/dev/mapper/home}). Evaluate @var{open}, a +gexp, to open it, and evaluate @var{close} to close it." (with-monad %store-monad (return (service (provision (list (symbol-append 'device-mapping- (string->symbol target)))) (requirement '(udev)) (documentation "Map a device node using Linux's device mapper.") - (start #~(lambda () - #$command)) - (stop #~(const #f)) + (start #~(lambda () #$open)) + (stop #~(lambda _ (not #$close))) (respawn? #f))))) (define %base-services |