diff options
author | gVisor bot <gvisor-bot@google.com> | 2019-11-25 19:46:52 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2019-11-25 19:46:52 +0000 |
commit | 876b3bbcfe13a5f58da7c8208d6693e288bfc7a9 (patch) | |
tree | 6dd74ceab620c619c76bea220e263de10f046a2f /runsc | |
parent | 7f9ce1f954db290d4648c8bb5a589a62f448c439 (diff) | |
parent | 97d2c9a94e802bcb450e50816a913dfc18afc0e3 (diff) |
Merge release-20191114.0-32-g97d2c9a (automated)
Diffstat (limited to 'runsc')
-rw-r--r-- | runsc/boot/fs.go | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/runsc/boot/fs.go b/runsc/boot/fs.go index 76036c147..bc9ffaf81 100644 --- a/runsc/boot/fs.go +++ b/runsc/boot/fs.go @@ -465,6 +465,13 @@ func (m *mountHint) checkCompatible(mount specs.Mount) error { return nil } +func (m *mountHint) fileAccessType() FileAccessType { + if m.share == container { + return FileAccessExclusive + } + return FileAccessShared +} + func filterUnsupportedOptions(mount specs.Mount) []string { rv := make([]string, 0, len(mount.Options)) for _, o := range mount.Options { @@ -764,8 +771,7 @@ func (c *containerMounter) getMountNameAndOptions(conf *Config, m specs.Mount) ( case bind: fd := c.fds.remove() fsName = "9p" - // Non-root bind mounts are always shared. - opts = p9MountOptions(fd, FileAccessShared) + opts = p9MountOptions(fd, c.getMountAccessType(m)) // If configured, add overlay to all writable mounts. useOverlay = conf.Overlay && !mountFlags(m.Options).ReadOnly @@ -778,6 +784,14 @@ func (c *containerMounter) getMountNameAndOptions(conf *Config, m specs.Mount) ( return fsName, opts, useOverlay, nil } +func (c *containerMounter) getMountAccessType(mount specs.Mount) FileAccessType { + if hint := c.hints.findMount(mount); hint != nil { + return hint.fileAccessType() + } + // Non-root bind mounts are always shared if no hints were provided. + return FileAccessShared +} + // mountSubmount mounts volumes inside the container's root. Because mounts may // be readonly, a lower ramfs overlay is added to create the mount point dir. // Another overlay is added with tmpfs on top if Config.Overlay is true. |