From 351a01bd7e64dee00a416a0fc483d0fd7744f5d4 Mon Sep 17 00:00:00 2001 From: Pavel Mores Date: Fri, 23 Apr 2021 16:24:58 +0200 Subject: [PATCH] runtime: handle io.katacontainers.config.hypervisor.virtio_fs_extra_args Users can specify extra arguments for virtiofsd in a pod spec using the io.katacontainers.config.hypervisor.virtio_fs_extra_args annontation. However, this annotation was ignored so far by the runtime. This commit fixes the issue by processing the annotation value (if present) and translating it to the corresponding hypervisor configuration item. Fixes #1523 Signed-off-by: Pavel Mores --- src/runtime/virtcontainers/pkg/oci/utils.go | 10 ++++++++++ src/runtime/virtcontainers/pkg/oci/utils_test.go | 2 ++ 2 files changed, 12 insertions(+) diff --git a/src/runtime/virtcontainers/pkg/oci/utils.go b/src/runtime/virtcontainers/pkg/oci/utils.go index 313882d385..9776aea17d 100644 --- a/src/runtime/virtcontainers/pkg/oci/utils.go +++ b/src/runtime/virtcontainers/pkg/oci/utils.go @@ -7,6 +7,7 @@ package oci import ( "context" + "encoding/json" "errors" "fmt" "path/filepath" @@ -748,6 +749,15 @@ func addHypervisorVirtioFsOverrides(ocispec specs.Spec, sbConfig *vc.SandboxConf sbConfig.HypervisorConfig.VirtioFSDaemon = value } + if value, ok := ocispec.Annotations[vcAnnotations.VirtioFSExtraArgs]; ok { + var parsedValue []string + err := json.Unmarshal([]byte(value), &parsedValue) + if err != nil { + return fmt.Errorf("Error parsing virtiofsd extra arguments: %v", err) + } + sbConfig.HypervisorConfig.VirtioFSExtraArgs = append(sbConfig.HypervisorConfig.VirtioFSExtraArgs, parsedValue...) + } + if sbConfig.HypervisorConfig.SharedFS == config.VirtioFS && sbConfig.HypervisorConfig.VirtioFSDaemon == "" { return fmt.Errorf("cannot enable virtio-fs without daemon path") } diff --git a/src/runtime/virtcontainers/pkg/oci/utils_test.go b/src/runtime/virtcontainers/pkg/oci/utils_test.go index af4b82545b..9ba00effdd 100644 --- a/src/runtime/virtcontainers/pkg/oci/utils_test.go +++ b/src/runtime/virtcontainers/pkg/oci/utils_test.go @@ -812,6 +812,7 @@ func TestAddHypervisorAnnotations(t *testing.T) { ocispec.Annotations[vcAnnotations.SharedFS] = "virtio-fs" ocispec.Annotations[vcAnnotations.VirtioFSDaemon] = "/bin/false" ocispec.Annotations[vcAnnotations.VirtioFSCache] = "/home/cache" + ocispec.Annotations[vcAnnotations.VirtioFSExtraArgs] = "[ \"arg0\", \"arg1\" ]" ocispec.Annotations[vcAnnotations.Msize9p] = "512" ocispec.Annotations[vcAnnotations.MachineType] = "q35" ocispec.Annotations[vcAnnotations.MachineAccelerators] = "nofw" @@ -848,6 +849,7 @@ func TestAddHypervisorAnnotations(t *testing.T) { assert.Equal(config.HypervisorConfig.SharedFS, "virtio-fs") assert.Equal(config.HypervisorConfig.VirtioFSDaemon, "/bin/false") assert.Equal(config.HypervisorConfig.VirtioFSCache, "/home/cache") + assert.ElementsMatch(config.HypervisorConfig.VirtioFSExtraArgs, [2]string{"arg0", "arg1"}) assert.Equal(config.HypervisorConfig.Msize9p, uint32(512)) assert.Equal(config.HypervisorConfig.HypervisorMachineType, "q35") assert.Equal(config.HypervisorConfig.MachineAccelerators, "nofw")