From 3187a9818812c136c679148b4e6ef719429613b3 Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Fri, 13 Apr 2018 10:44:07 -0700 Subject: [PATCH] 9p: Add hypervisor configuration for 9p msize This allows msize option for 9p to be configured and tuned. Fixes #206 Signed-off-by: Archana Shinde --- virtcontainers/api_test.go | 2 ++ virtcontainers/hypervisor.go | 7 +++++++ virtcontainers/hypervisor_test.go | 2 ++ virtcontainers/kata_agent.go | 2 ++ virtcontainers/qemu_arch_base.go | 1 + virtcontainers/qemu_test.go | 1 + 6 files changed, 15 insertions(+) diff --git a/virtcontainers/api_test.go b/virtcontainers/api_test.go index 788a74cd9..21d85cbe0 100644 --- a/virtcontainers/api_test.go +++ b/virtcontainers/api_test.go @@ -913,6 +913,7 @@ func TestStatusSandboxSuccessfulStateReady(t *testing.T) { DefaultBridges: defaultBridges, BlockDeviceDriver: defaultBlockDriver, DefaultMaxVCPUs: defaultMaxQemuVCPUs, + Msize9p: defaultMsize9p, } expectedStatus := SandboxStatus{ @@ -969,6 +970,7 @@ func TestStatusSandboxSuccessfulStateRunning(t *testing.T) { DefaultBridges: defaultBridges, BlockDeviceDriver: defaultBlockDriver, DefaultMaxVCPUs: defaultMaxQemuVCPUs, + Msize9p: defaultMsize9p, } expectedStatus := SandboxStatus{ diff --git a/virtcontainers/hypervisor.go b/virtcontainers/hypervisor.go index ef387f937..3c9c50421 100644 --- a/virtcontainers/hypervisor.go +++ b/virtcontainers/hypervisor.go @@ -226,6 +226,9 @@ type HypervisorConfig struct { // DisableNestingChecks is used to override customizations performed // when running on top of another VMM. DisableNestingChecks bool + + // Msize9p is used as the msize for 9p shares + Msize9p uint32 } func (conf *HypervisorConfig) valid() (bool, error) { @@ -257,6 +260,10 @@ func (conf *HypervisorConfig) valid() (bool, error) { conf.DefaultMaxVCPUs = defaultMaxQemuVCPUs } + if conf.Msize9p == 0 { + conf.Msize9p = defaultMsize9p + } + return true, nil } diff --git a/virtcontainers/hypervisor_test.go b/virtcontainers/hypervisor_test.go index a14892bc0..abadcc38f 100644 --- a/virtcontainers/hypervisor_test.go +++ b/virtcontainers/hypervisor_test.go @@ -182,7 +182,9 @@ func TestHypervisorConfigDefaults(t *testing.T) { DefaultBridges: defaultBridges, BlockDeviceDriver: defaultBlockDriver, DefaultMaxVCPUs: defaultMaxQemuVCPUs, + Msize9p: defaultMsize9p, } + if reflect.DeepEqual(hypervisorConfig, hypervisorConfigDefaultsExpected) == false { t.Fatal() } diff --git a/virtcontainers/kata_agent.go b/virtcontainers/kata_agent.go index 8d734cbc7..d4595f903 100644 --- a/virtcontainers/kata_agent.go +++ b/virtcontainers/kata_agent.go @@ -485,6 +485,8 @@ func (k *kataAgent) startSandbox(sandbox Sandbox) error { } } + sharedDir9pOptions = append(sharedDir9pOptions, fmt.Sprintf("msize=%d", sandbox.config.HypervisorConfig.Msize9p)) + // We mount the shared directory in a predefined location // in the guest. // This is where at least some of the host config files diff --git a/virtcontainers/qemu_arch_base.go b/virtcontainers/qemu_arch_base.go index 81fcf8a8e..264809bb3 100644 --- a/virtcontainers/qemu_arch_base.go +++ b/virtcontainers/qemu_arch_base.go @@ -108,6 +108,7 @@ const ( defaultCPUModel = "host" defaultBridgeBus = "pcie.0" maxDevIDSize = 31 + defaultMsize9p = 8192 ) const ( diff --git a/virtcontainers/qemu_test.go b/virtcontainers/qemu_test.go index 3670f1c62..dfd680236 100644 --- a/virtcontainers/qemu_test.go +++ b/virtcontainers/qemu_test.go @@ -39,6 +39,7 @@ func newQemuConfig() HypervisorConfig { DefaultBridges: defaultBridges, BlockDeviceDriver: defaultBlockDriver, DefaultMaxVCPUs: defaultMaxQemuVCPUs, + Msize9p: defaultMsize9p, } }