mapped-devices: Allow target to be list of strings.

* gnu/system/mapped-devices.scm (<mapped-device>): Rename constructor to
%mapped-device.
[target]: Remove field.
[targets]: New field. Adjust users.
(mapped-device-compatibility-helper, mapped-device): New macros.
(mapped-device-target): New deprecated procedure.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Mikhail Tsykalov 2020-11-06 12:47:37 +03:00 committed by Ludovic Courtès
parent 0a1da4652d
commit 788df2ecd6
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
5 changed files with 111 additions and 74 deletions

View file

@ -475,9 +475,9 @@ marked as 'needed-for-boot'."
(let ((device (file-system-device fs)))
(if (string? device) ;title is 'device
(filter (lambda (md)
(string=? (string-append "/dev/mapper/"
(mapped-device-target md))
device))
(any (cut string=? device <>)
(map (cut string-append "/dev/mapper" <>)
(mapped-device-targets md))))
(operating-system-mapped-devices os))
'())))
@ -497,11 +497,12 @@ marked as 'needed-for-boot'."
(define (mapped-device-users device file-systems)
"Return the subset of FILE-SYSTEMS that use DEVICE."
(let ((target (string-append "/dev/mapper/" (mapped-device-target device))))
(let ((targets (map (cut string-append "/dev/mapper/" <>)
(mapped-device-targets device))))
(filter (lambda (fs)
(or (member device (file-system-dependencies fs))
(and (string? (file-system-device fs))
(string=? (file-system-device fs) target))))
(any (cut string=? (file-system-device fs) <>) targets))))
file-systems)))
(define (operating-system-user-mapped-devices os)