vm: Use 9p mount tags below 32 chars.

Fixes <https://bugs.gnu.org/30667>.
Reported by Björn Höfling <bjoern.hoefling@bjoernhoefling.de>.

* gnu/system/vm.scm (file-system->mount-tag): Use 'sha1' to compute the
tag.
This commit is contained in:
Ludovic Courtès 2018-03-08 11:55:06 +01:00
parent 33286075b9
commit dffc5ab5e4
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -30,6 +30,8 @@ (define-module (gnu system vm)
#:use-module (guix records)
#:use-module (guix modules)
#:use-module (guix utils)
#:use-module (guix hash)
#:use-module (guix base32)
#:use-module ((gnu build vm)
#:select (qemu-command))
@ -544,13 +546,13 @@ (define root-uuid
(define (file-system->mount-tag fs)
"Return a 9p mount tag for host file system FS."
;; QEMU mount tags cannot contain slashes and cannot start with '_'.
;; Compute an identifier that corresponds to the rules.
;; QEMU mount tags must be ASCII, at most 31-byte long, cannot contain
;; slashes, and cannot start with '_'. Compute an identifier that
;; corresponds to the rules.
(string-append "TAG"
(string-map (match-lambda
(#\/ #\_)
(chr chr))
fs)))
(string-drop (bytevector->base32-string
(sha1 (string->utf8 fs)))
4)))
(define (mapping->file-system mapping)
"Return a 9p file system that realizes MAPPING."