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, } }