diff options
author | Mark H Weaver <mhw@netris.org> | 2017-03-28 05:52:28 -0400 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2017-06-07 19:03:03 -0400 |
commit | f45878a80d412dd79c95e9274c3ee5dd24e1cec9 (patch) | |
tree | 6b509886e274f788f0058a1c50895add2469ef5a /gnu/system | |
parent | 517c66c03d16604e0f59db313368a676b761f79b (diff) |
mapped-devices: Cope with delayed appearance of LUKS source.
Fixes <https://bugs.gnu.org/27242>.
* gnu/system/mapped-devices.scm (open-luks-device): If
'find-partition-by-luks-uuid' fails, try again once per second, up to ten
times.
Diffstat (limited to 'gnu/system')
-rw-r--r-- | gnu/system/mapped-devices.scm | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm index 2959802c96..18b9f5b4b6 100644 --- a/gnu/system/mapped-devices.scm +++ b/gnu/system/mapped-devices.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2017 Mark H Weaver <mhw@netris.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -114,7 +115,16 @@ ;; udev-populated /dev/disk/by-id directory but udev may ;; be unavailable at the time we run this. (if (bytevector? source) - (or (find-partition-by-luks-uuid source) + (or (let loop ((tries-left 10)) + (and (positive? tries-left) + (or (find-partition-by-luks-uuid source) + ;; If the underlying partition is + ;; not found, try again after + ;; waiting a second, up to ten + ;; times. FIXME: This should be + ;; dealt with in a more robust way. + (begin (sleep 1) + (loop (- tries-left 1)))))) (error "LUKS partition not found" source)) source) |