diff options
| author | Ludovic Courtès <ludo@gnu.org> | 2025-07-06 16:31:00 +0200 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2025-07-18 00:57:25 +0200 |
| commit | 62bf9a7cc79d24e7edc2b56d6dde6e77eebc537e (patch) | |
| tree | 7b741e39aa7321e51c8c5d041d1111ee5418ff2e /gnu | |
| parent | 951e39718a00cf3f91e8c8d4b4b5661715a27416 (diff) | |
mapped-devices: Add ‘arguments’ field.
Fixes <https://issues.guix.gnu.org/70826>.
This allows users to specify extra arguments specific to the underlying
mapped device type.
* gnu/system/mapped-devices.scm (<mapped-device>)[arguments]: New field.
(device-mapping-service-type): Honor it.
* guix/scripts/system.scm (check-mapped-devices): Likewise.
* gnu/system/linux-initrd.scm (raw-initrd): Likewise.
* doc/guix.texi (Mapped Devices): Document it.
Reported-by: 45mg <45mg.writes@gmail.com>
Change-Id: Idef5a3e68535c412f13bae9a92c81c49053d4f4a
Diffstat (limited to 'gnu')
| -rw-r--r-- | gnu/system/linux-initrd.scm | 3 | ||||
| -rw-r--r-- | gnu/system/mapped-devices.scm | 14 |
2 files changed, 12 insertions, 5 deletions
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index 72da8e55d30..17c2e6f6bfd 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm | |||
| @@ -229,7 +229,8 @@ upon error." | |||
| 229 | (targets (mapped-device-targets md)) | 229 | (targets (mapped-device-targets md)) |
| 230 | (type (mapped-device-type md)) | 230 | (type (mapped-device-type md)) |
| 231 | (open (mapped-device-kind-open type))) | 231 | (open (mapped-device-kind-open type))) |
| 232 | (open source targets))) | 232 | (apply open source targets |
| 233 | (mapped-device-arguments md)))) | ||
| 233 | mapped-devices)) | 234 | mapped-devices)) |
| 234 | 235 | ||
| 235 | (define file-system-scan-commands | 236 | (define file-system-scan-commands |
diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm index 667a4955703..c09a0f1ef17 100644 --- a/gnu/system/mapped-devices.scm +++ b/gnu/system/mapped-devices.scm | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2014-2022, 2024 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2014-2022, 2024-2025 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr> | 3 | ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr> |
| 4 | ;;; Copyright © 2017, 2018 Mark H Weaver <mhw@netris.org> | 4 | ;;; Copyright © 2017, 2018 Mark H Weaver <mhw@netris.org> |
| 5 | ;;; Copyright © 2024 Tomas Volf <~@wolfsden.cz> | 5 | ;;; Copyright © 2024 Tomas Volf <~@wolfsden.cz> |
| @@ -51,6 +51,7 @@ | |||
| 51 | mapped-device-target | 51 | mapped-device-target |
| 52 | mapped-device-targets | 52 | mapped-device-targets |
| 53 | mapped-device-type | 53 | mapped-device-type |
| 54 | mapped-device-arguments | ||
| 54 | mapped-device-location | 55 | mapped-device-location |
| 55 | 56 | ||
| 56 | mapped-device-kind | 57 | mapped-device-kind |
| @@ -83,6 +84,8 @@ | |||
| 83 | (source mapped-device-source) ;string | list of strings | 84 | (source mapped-device-source) ;string | list of strings |
| 84 | (targets mapped-device-targets) ;list of strings | 85 | (targets mapped-device-targets) ;list of strings |
| 85 | (type mapped-device-type) ;<mapped-device-kind> | 86 | (type mapped-device-type) ;<mapped-device-kind> |
| 87 | (arguments mapped-device-arguments ;list passed to open/close/check | ||
| 88 | (default '())) | ||
| 86 | (location mapped-device-location | 89 | (location mapped-device-location |
| 87 | (default (current-source-location)) (innate))) | 90 | (default (current-source-location)) (innate))) |
| 88 | 91 | ||
| @@ -128,13 +131,16 @@ specifications to 'targets'." | |||
| 128 | 'device-mapping | 131 | 'device-mapping |
| 129 | (match-lambda | 132 | (match-lambda |
| 130 | (($ <mapped-device> source targets | 133 | (($ <mapped-device> source targets |
| 131 | ($ <mapped-device-type> open close modules)) | 134 | ($ <mapped-device-type> open close modules) |
| 135 | arguments) | ||
| 132 | (shepherd-service | 136 | (shepherd-service |
| 133 | (provision (list (symbol-append 'device-mapping- (string->symbol (string-join targets "-"))))) | 137 | (provision (list (symbol-append 'device-mapping- (string->symbol (string-join targets "-"))))) |
| 134 | (requirement '(udev)) | 138 | (requirement '(udev)) |
| 135 | (documentation "Map a device node using Linux's device mapper.") | 139 | (documentation "Map a device node using Linux's device mapper.") |
| 136 | (start #~(lambda () #$(open source targets))) | 140 | (start #~(lambda () |
| 137 | (stop #~(lambda _ (not #$(close source targets)))) | 141 | #$(apply open source targets arguments))) |
| 142 | (stop #~(lambda _ | ||
| 143 | (not #$(apply close source targets arguments)))) | ||
| 138 | (modules (append %default-modules modules)) | 144 | (modules (append %default-modules modules)) |
| 139 | (respawn? #f)))) | 145 | (respawn? #f)))) |
| 140 | (description "Map a device node using Linux's device mapper."))) | 146 | (description "Map a device node using Linux's device mapper."))) |
