diff --git a/virtcontainers/container.go b/virtcontainers/container.go index 701d5c6788..a656fe7f88 100644 --- a/virtcontainers/container.go +++ b/virtcontainers/container.go @@ -533,8 +533,8 @@ func (c *Container) shareFiles(m Mount, idx int, hostSharedDir, guestSharedDir s // It also updates the container mount list with the HostPath info, and store // container mounts to the storage. This way, we will have the HostPath info // available when we will need to unmount those mounts. -func (c *Container) mountSharedDirMounts(hostSharedDir, guestSharedDir string) ([]Mount, []Mount, error) { - var sharedDirMounts []Mount +func (c *Container) mountSharedDirMounts(hostSharedDir, guestSharedDir string) (map[string]Mount, []Mount, error) { + sharedDirMounts := make(map[string]Mount) var ignoredMounts []Mount for idx, m := range c.mounts { // Skip mounting certain system paths from the source on the host side @@ -607,7 +607,7 @@ func (c *Container) mountSharedDirMounts(hostSharedDir, guestSharedDir string) ( ReadOnly: readonly, } - sharedDirMounts = append(sharedDirMounts, sharedDirMount) + sharedDirMounts[sharedDirMount.Destination] = sharedDirMount } if !c.sandbox.supportNewStore() { diff --git a/virtcontainers/kata_agent.go b/virtcontainers/kata_agent.go index 781e0c6d6e..3567888df7 100644 --- a/virtcontainers/kata_agent.go +++ b/virtcontainers/kata_agent.go @@ -962,15 +962,11 @@ func (k *kataAgent) stopSandbox(sandbox *Sandbox) error { return nil } -func (k *kataAgent) replaceOCIMountSource(spec *specs.Spec, guestMounts []Mount) error { +func (k *kataAgent) replaceOCIMountSource(spec *specs.Spec, guestMounts map[string]Mount) error { ociMounts := spec.Mounts for index, m := range ociMounts { - for _, guestMount := range guestMounts { - if guestMount.Destination != m.Destination { - continue - } - + if guestMount, ok := guestMounts[m.Destination]; ok { k.Logger().Debugf("Replacing OCI mount (%s) source %s with %s", m.Destination, m.Source, guestMount.Source) ociMounts[index].Source = guestMount.Source }