summary refs log tree commit diff
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2020-06-18 21:12:35 -0400
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2020-06-18 23:20:41 -0400
commit0dd04b9986dd834782c988035569089785a6987d (patch)
tree5b600e4001166342d0a90e688c04ffeaff42f01a
parente520aa8f41a8dbdbcee4e3537364f1d451583012 (diff)
downloadguix-0dd04b9986dd834782c988035569089785a6987d.tar.gz
machine: ssh: Fix guix deploy hang when using non-DCE UUIDs.
Fixes <https://issues.guix.gnu.org/issue/41237>.

The UUID type information was lost when passing to the lower gexp code strata,
which led to not being able to recreate the UUID in the generated script.
This occurred for non-DCE type UUIDs such as that of a FAT file system.

A following commit will prevent the find-partition-by-uuid procedure from
entering a loop when its UUID argument is invalid.

Reported-by: Brice Waegeneire <brice@waegenei.re>

* gnu/machine/ssh.scm (machine-check-file-system-availability): Replace the
STRING->UUID procedure by the UUID macro, and provide the UUID type as its
second argument.
-rw-r--r--gnu/machine/ssh.scm7
1 files changed, 3 insertions, 4 deletions
diff --git a/gnu/machine/ssh.scm b/gnu/machine/ssh.scm
index 116da86327..7194181681 100644
--- a/gnu/machine/ssh.scm
+++ b/gnu/machine/ssh.scm
@@ -210,10 +210,9 @@ exist on the machine."
             (use-modules (gnu build file-systems)
                          (gnu system uuid))
 
-            (define uuid
-              (string->uuid #$(uuid->string (file-system-device fs))))
-
-            (find-partition-by-uuid uuid))))
+            (let ((uuid (uuid #$(uuid->string (file-system-device fs))
+                              '#$(uuid-type (file-system-device fs)))))
+              (find-partition-by-uuid uuid)))))
 
     (remote-let ((result remote-exp))
       (unless result