GNU bug report logs - #66014
Unable to use UUIDs to construct RAID array in mapped-devices

Previous Next

Package: guix;

Reported by: Lars Rustand <rustand.lars <at> gmail.com>

Date: Fri, 15 Sep 2023 18:56:01 UTC

Severity: normal

To reply to this bug, email your comments to 66014 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guix <at> gnu.org:
bug#66014; Package guix. (Fri, 15 Sep 2023 18:56:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Lars Rustand <rustand.lars <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Fri, 15 Sep 2023 18:56:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Lars Rustand <rustand.lars <at> gmail.com>
To: bug-guix <at> gnu.org
Subject: Unable to use UUIDs to construct RAID array in mapped-devices
Date: Fri, 15 Sep 2023 20:27:32 +0200
[Message part 1 (text/plain, inline)]
Setting up a RAID array using UUIDs does not work.

The following mapped-devices block works:

  (mapped-devices
    (list
      (mapped-device
        (source (list "/dev/nvme0n1p2" "/dev/nvme1n1p3"))
        (target "/dev/md0")
        (type raid-device-mapping))))

But this one fails:

  (mapped-devices
    (list
      (mapped-device
        (source (list (uuid "a07c54da-eb61-4135-86b8-8791e863e46a") (uuid "c40026af-ace9-47fc-9d3f-4b8d6a2219cb")))
        (target "/dev/md0")
        (type raid-device-mapping))))

The error message I get is guix system: error: #<<uuid> type: dce bv: #vu8(160 124 84 218 235 97 65 53 134 184 135 145 232 99 228 106)>: invalid G-expression input
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-guix <at> gnu.org:
bug#66014; Package guix. (Mon, 18 Sep 2023 12:27:02 GMT) Full text and rfc822 format available.

Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Csepp <raingloom <at> riseup.net>
To: Lars Rustand <rustand.lars <at> gmail.com>
Cc: bug-guix <at> gnu.org, 66014 <at> debbugs.gnu.org
Subject: Re: bug#66014: Unable to use UUIDs to construct RAID array in
 mapped-devices
Date: Mon, 18 Sep 2023 14:24:16 +0200
Lars Rustand <rustand.lars <at> gmail.com> writes:

> [[PGP Signed Part:Undecided]]
> Setting up a RAID array using UUIDs does not work.
>
> The following mapped-devices block works:
>
>   (mapped-devices
>     (list
>       (mapped-device
>         (source (list "/dev/nvme0n1p2" "/dev/nvme1n1p3"))
>         (target "/dev/md0")
>         (type raid-device-mapping))))
>
> But this one fails:
>
>   (mapped-devices
>     (list
>       (mapped-device
>         (source (list (uuid "a07c54da-eb61-4135-86b8-8791e863e46a") (uuid "c40026af-ace9-47fc-9d3f-4b8d6a2219cb")))
>         (target "/dev/md0")
>         (type raid-device-mapping))))
>
> The error message I get is guix system: error: #<<uuid> type: dce bv: #vu8(160 124 84 218 235 97 65 53 134 184 135 145 232 99 228 106)>: invalid G-expression input
>
> [[End of PGP Signed Part]]

Would it be possible to use /dev/disk/by-uuid paths instead of uuid
objects for these?  I think this big "typeof" based dynamic dispatch
that we're using in Scheme is erm, not very robust, to put it mildly.




Information forwarded to bug-guix <at> gnu.org:
bug#66014; Package guix. (Mon, 18 Sep 2023 12:27:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-guix <at> gnu.org:
bug#66014; Package guix. (Mon, 18 Sep 2023 21:48:01 GMT) Full text and rfc822 format available.

Message #14 received at 66014 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Csepp <raingloom <at> riseup.net>
Cc: 66014 <at> debbugs.gnu.org, Lars Rustand <rustand.lars <at> gmail.com>
Subject: Re: bug#66014: Unable to use UUIDs to construct RAID array in
 mapped-devices
Date: Mon, 18 Sep 2023 23:47:10 +0200
Hi,

Csepp <raingloom <at> riseup.net> skribis:

> Lars Rustand <rustand.lars <at> gmail.com> writes:

[...]

>> But this one fails:
>>
>>   (mapped-devices
>>     (list
>>       (mapped-device
>>         (source (list (uuid "a07c54da-eb61-4135-86b8-8791e863e46a") (uuid "c40026af-ace9-47fc-9d3f-4b8d6a2219cb")))
>>         (target "/dev/md0")
>>         (type raid-device-mapping))))
>>
>> The error message I get is guix system: error: #<<uuid> type: dce bv: #vu8(160 124 84 218 235 97 65 53 134 184 135 145 232 99 228 106)>: invalid G-expression input
>>
>> [[End of PGP Signed Part]]
>
> Would it be possible to use /dev/disk/by-uuid paths instead of uuid
> objects for these?

Depends: /dev/disk/by-uuid is populated by eudev, which is not running
at the time initrd code runs; IOW it’s OK to use /dev/disk/by-uuid if
and only if the mapped device is not “needed for boot”.

> I think this big "typeof" based dynamic dispatch that we're using in
> Scheme is erm, not very robust, to put it mildly.

Yeah, it’s not great.  What would you suggest?

Ludo’.




Information forwarded to bug-guix <at> gnu.org:
bug#66014; Package guix. (Tue, 19 Sep 2023 10:56:02 GMT) Full text and rfc822 format available.

Message #17 received at 66014 <at> debbugs.gnu.org (full text, mbox):

From: Csepp <raingloom <at> riseup.net>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 66014 <at> debbugs.gnu.org, Lars Rustand <rustand.lars <at> gmail.com>,
 Csepp <raingloom <at> riseup.net>
Subject: Re: bug#66014: Unable to use UUIDs to construct RAID array in
 mapped-devices
Date: Tue, 19 Sep 2023 12:48:34 +0200
Ludovic Courtès <ludo <at> gnu.org> writes:

> Hi,
>
> Csepp <raingloom <at> riseup.net> skribis:
>
>> Lars Rustand <rustand.lars <at> gmail.com> writes:
>
> [...]
>
>>> But this one fails:
>>>
>>>   (mapped-devices
>>>     (list
>>>       (mapped-device
>>>         (source (list (uuid "a07c54da-eb61-4135-86b8-8791e863e46a") (uuid "c40026af-ace9-47fc-9d3f-4b8d6a2219cb")))
>>>         (target "/dev/md0")
>>>         (type raid-device-mapping))))
>>>
>>> The error message I get is guix system: error: #<<uuid> type: dce bv: #vu8(160 124 84 218 235 97 65 53 134 184 135 145 232 99 228 106)>: invalid G-expression input
>>>
>>> [[End of PGP Signed Part]]
>>
>> Would it be possible to use /dev/disk/by-uuid paths instead of uuid
>> objects for these?
>
> Depends: /dev/disk/by-uuid is populated by eudev, which is not running
> at the time initrd code runs; IOW it’s OK to use /dev/disk/by-uuid if
> and only if the mapped device is not “needed for boot”.
>
>> I think this big "typeof" based dynamic dispatch that we're using in
>> Scheme is erm, not very robust, to put it mildly.
>
> Yeah, it’s not great.  What would you suggest?
>
> Ludo’.

I guess MyPy-for-Guile is a bit out of scope for now, so the next best
way to catch these would be property based testing.
As for implementing them, can't we use Guile's generics, or model
something on Clojure's generics?  Something that lets client code add
implementations to an interface.  Although that might have some security
implications.




This bug report was last modified 1 year and 269 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.