From 82d1a9d6f4a09b15bd62f782f98c8b8e3ffe73c0 Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Fri, 6 Jul 2018 10:44:23 +0100 Subject: [PATCH] kata_agent: use virtio-fs shared dir in CreateSandbox Use virtio-fs instead of virtio-9p when virtio-fs is enabled. Fixes: #1542 Signed-off-by: Stefan Hajnoczi --- virtcontainers/kata_agent.go | 61 ++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 23 deletions(-) diff --git a/virtcontainers/kata_agent.go b/virtcontainers/kata_agent.go index 1477025ea2..956635dcc2 100644 --- a/virtcontainers/kata_agent.go +++ b/virtcontainers/kata_agent.go @@ -65,22 +65,25 @@ var ( mountGuest9pTag = "kataShared" kataGuestSandboxDir = "/run/kata-containers/sandbox/" type9pFs = "9p" + typeVirtioFS = "virtio_fs" vsockSocketScheme = "vsock" // port numbers below 1024 are called privileged ports. Only a process with // CAP_NET_BIND_SERVICE capability may bind to these port numbers. - vSockPort = 1024 - kata9pDevType = "9p" - kataMmioBlkDevType = "mmioblk" - kataBlkDevType = "blk" - kataSCSIDevType = "scsi" - kataNvdimmDevType = "nvdimm" - sharedDir9pOptions = []string{"trans=virtio,version=9p2000.L,cache=mmap", "nodev"} - shmDir = "shm" - kataEphemeralDevType = "ephemeral" - ephemeralPath = filepath.Join(kataGuestSandboxDir, kataEphemeralDevType) - grpcMaxDataSize = int64(1024 * 1024) - localDirOptions = []string{"mode=0777"} - maxHostnameLen = 64 + vSockPort = 1024 + kata9pDevType = "9p" + kataMmioBlkDevType = "mmioblk" + kataBlkDevType = "blk" + kataSCSIDevType = "scsi" + kataNvdimmDevType = "nvdimm" + kataVirtioFSDevType = "virtio-fs" + sharedDir9pOptions = []string{"trans=virtio,version=9p2000.L,cache=mmap", "nodev"} + sharedDirVirtioFSOptions = []string{"default_permissions,allow_other,rootmode=040000,user_id=0,group_id=0,dax,tag=" + mountGuest9pTag, "nodev"} + shmDir = "shm" + kataEphemeralDevType = "ephemeral" + ephemeralPath = filepath.Join(kataGuestSandboxDir, kataEphemeralDevType) + grpcMaxDataSize = int64(1024 * 1024) + localDirOptions = []string{"mode=0777"} + maxHostnameLen = 64 ) const ( @@ -738,22 +741,34 @@ func (k *kataAgent) startSandbox(sandbox *Sandbox) error { // append 9p shared volume to storages only if filesystem sharing is supported if caps.IsFsSharingSupported() { - 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 // (resolv.conf, etc...) and potentially all container // rootfs will reside. - sharedVolume := &grpc.Storage{ - Driver: kata9pDevType, - Source: mountGuest9pTag, - MountPoint: kataGuestSharedDir, - Fstype: type9pFs, - Options: sharedDir9pOptions, - } + if sandbox.config.HypervisorConfig.SharedFS == config.VirtioFS { + sharedVolume := &grpc.Storage{ + Driver: kataVirtioFSDevType, + Source: "none", + MountPoint: kataGuestSharedDir, + Fstype: typeVirtioFS, + Options: sharedDirVirtioFSOptions, + } - storages = append(storages, sharedVolume) + storages = append(storages, sharedVolume) + } else { + sharedDir9pOptions = append(sharedDir9pOptions, fmt.Sprintf("msize=%d", sandbox.config.HypervisorConfig.Msize9p)) + + sharedVolume := &grpc.Storage{ + Driver: kata9pDevType, + Source: mountGuest9pTag, + MountPoint: kataGuestSharedDir, + Fstype: type9pFs, + Options: sharedDir9pOptions, + } + + storages = append(storages, sharedVolume) + } } if sandbox.shmSize > 0 {