mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-25 22:08:16 -05:00
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.
This commit is contained in:
parent
517c66c03d
commit
f45878a80d
1 changed files with 11 additions and 1 deletions
|
@ -1,6 +1,7 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
|
;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
|
||||||
|
;;; Copyright © 2017 Mark H Weaver <mhw@netris.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -114,7 +115,16 @@ (define (open-luks-device source target)
|
||||||
;; udev-populated /dev/disk/by-id directory but udev may
|
;; udev-populated /dev/disk/by-id directory but udev may
|
||||||
;; be unavailable at the time we run this.
|
;; be unavailable at the time we run this.
|
||||||
(if (bytevector? source)
|
(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))
|
(error "LUKS partition not found" source))
|
||||||
source)
|
source)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue