Subject: hurd-vm: custom disk-size ignored
From: Jan Nieuwenhuizen <[email-masked]>
To: [email-masked]
Date: Thu, 14 Jan 2021 19:03:28 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

On current master, setting a bigger disk-size for a childhurd

--8<---------------cut here---------------start------------->8---
      (service hurd-vm-service-type
               (hurd-vm-configuration
                (disk-size (* 12 (expt 2 30))) ;12GiB
--8<---------------cut here---------------end--------------->8---

is being ignored.  I am suspecting

> commit 859b362f81598830d7ff276b96a8724aee3c4db7
> Author: Ludovic Courtès <[email-masked]>
> AuthorDate: Mon Dec 7 12:38:25 2020 +0100
>
>     services: hurd-vm: Avoid circular dependency with (gnu system images hurd).
>     
>     * gnu/services/virtualization.scm (hurd-vm-disk-image): Use
>     'lookup-image-type-by-name' instead of referring to 'hurd-disk-image'
>     from (gnu system images hurd).
> ---
>  gnu/services/virtualization.scm | 15 ++++++---------
>  1 file changed, 6 insertions(+), 9 deletions(-)
>
> diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
> index eaf0bbd..f435630 100644
> --- a/gnu/services/virtualization.scm
> +++ b/gnu/services/virtualization.scm

[..]

> @@ -913,14 +912,12 @@ that will be listening to receive secret keys on port 1004, TCP."
>  (define (hurd-vm-disk-image config)
>    "Return a disk-image for the Hurd according to CONFIG.  The secret-service
>  is added to the OS specified in CONFIG."
> -  (let ((os (secret-service-operating-system (hurd-vm-configuration-os config)))
> -        (disk-size (hurd-vm-configuration-disk-size config)))
> -    (system-image
> -     (image
> -      (inherit hurd-disk-image)
> -      (format 'compressed-qcow2)
> -      (size disk-size)
> -      (operating-system os)))))

This system-image included (size disk-size), and here

> +  (let* ((os        (secret-service-operating-system
> +                     (hurd-vm-configuration-os config)))
> +         (disk-size (hurd-vm-configuration-disk-size config))
> +         (type      (lookup-image-type-by-name 'hurd-qcow2))
> +         (os->image (image-type-constructor type)))
> +    (system-image (os->image os))))

disk-size goes unused.  So we probably need something like

diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index f435630faf..3ede822183 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -917,7 +917,9 @@ is added to the OS specified in CONFIG."
          (disk-size (hurd-vm-configuration-disk-size config))
          (type      (lookup-image-type-by-name 'hurd-qcow2))
          (os->image (image-type-constructor type)))
-    (system-image (os->image os))))
+    (system-image
+     (image (inherit (os->image os))
+            (size disk-size)))))
 
 (define (hurd-vm-port config base)
   "Return the forwarded vm port for this childhurd config."

Greetings,
Janneke

-- 
Jan Nieuwenhuizen <[email-masked]> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com