mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-06-28 16:27:50 +00:00
virtiofs: fix virtiofs crash when cache=none
When virtio_fs_cache is set to none, the mount options for the folder inside the guest should not contain the dax option else it leads to invalid address errors and a crash of the daemon on the host. Fixes: #1907 Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
This commit is contained in:
parent
74157c8b2b
commit
6e1e6a2297
@ -66,6 +66,7 @@ var (
|
||||
kataGuestSandboxDir = "/run/kata-containers/sandbox/"
|
||||
type9pFs = "9p"
|
||||
typeVirtioFS = "virtio_fs"
|
||||
typeVirtioFSNoCache = "none"
|
||||
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.
|
||||
@ -77,7 +78,8 @@ var (
|
||||
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"}
|
||||
sharedDirVirtioFSOptions = []string{"default_permissions,allow_other,rootmode=040000,user_id=0,group_id=0,tag=" + mountGuest9pTag, "nodev"}
|
||||
sharedDirVirtioFSDaxOptions = "dax"
|
||||
shmDir = "shm"
|
||||
kataEphemeralDevType = "ephemeral"
|
||||
ephemeralPath = filepath.Join(kataGuestSandboxDir, kataEphemeralDevType)
|
||||
@ -754,6 +756,14 @@ func (k *kataAgent) startSandbox(sandbox *Sandbox) error {
|
||||
// (resolv.conf, etc...) and potentially all container
|
||||
// rootfs will reside.
|
||||
if sandbox.config.HypervisorConfig.SharedFS == config.VirtioFS {
|
||||
// If virtio-fs uses either of the two cache options 'auto, always',
|
||||
// the guest directory can be mounted with option 'dax' allowing it to
|
||||
// directly map contents from the host. When set to 'none', the mount
|
||||
// options should not contain 'dax' lest the virtio-fs daemon crashing
|
||||
// with an invalid address reference.
|
||||
if sandbox.config.HypervisorConfig.VirtioFSCache != typeVirtioFSNoCache {
|
||||
sharedDirVirtioFSOptions = append(sharedDirVirtioFSOptions, sharedDirVirtioFSDaxOptions)
|
||||
}
|
||||
sharedVolume := &grpc.Storage{
|
||||
Driver: kataVirtioFSDevType,
|
||||
Source: "none",
|
||||
|
Loading…
Reference in New Issue
Block a user