diff options
author | Ludovic Courtès <ludo@gnu.org> | 2018-03-08 11:55:06 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-03-08 11:56:20 +0100 |
commit | dffc5ab5e47e45b94188828205c8d567994926ad (patch) | |
tree | 769adc2857490b154d3572e424b3a894cf7e621d /gnu | |
parent | 33286075b9c2ecd27607b5674c68909dd528473a (diff) | |
download | guix-dffc5ab5e47e45b94188828205c8d567994926ad.tar.gz |
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.
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/system/vm.scm | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 91ff32ce9a..ae8780d2e1 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -30,6 +30,8 @@ #: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 @@ of the GNU system as described by OS." (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." |