summaryrefslogtreecommitdiffhomepage
path: root/runsc
diff options
context:
space:
mode:
authorgVisor bot <gvisor-bot@google.com>2020-04-24 17:06:33 +0000
committergVisor bot <gvisor-bot@google.com>2020-04-24 17:06:33 +0000
commit57f05062f655eb7b1d9a43b407b82b97449195ee (patch)
treeda8b811d276923db6548c108d46c7c449d52de5f /runsc
parenta4ceffb96b9368657d2bf2ac10cc243de2eb8345 (diff)
parent1b88c63b3e6b330c8399bf92f148cc80374bee18 (diff)
Merge release-20200323.0-234-g1b88c63 (automated)
Diffstat (limited to 'runsc')
-rw-r--r--runsc/boot/fds.go7
-rw-r--r--runsc/boot/loader.go13
2 files changed, 14 insertions, 6 deletions
diff --git a/runsc/boot/fds.go b/runsc/boot/fds.go
index 7e49f6f9f..0cbd63857 100644
--- a/runsc/boot/fds.go
+++ b/runsc/boot/fds.go
@@ -89,14 +89,9 @@ func createFDTableVFS2(ctx context.Context, console bool, stdioFDs []int) (*kern
fdTable := k.NewFDTable()
defer fdTable.DecRef()
- hostMount, err := vfshost.NewMount(k.VFS())
- if err != nil {
- return nil, fmt.Errorf("creating host mount: %w", err)
- }
-
for appFD, hostFD := range stdioFDs {
// TODO(gvisor.dev/issue/1482): Add TTY support.
- appFile, err := vfshost.ImportFD(hostMount, hostFD, false)
+ appFile, err := vfshost.ImportFD(k.HostMount(), hostFD, false)
if err != nil {
return nil, err
}
diff --git a/runsc/boot/loader.go b/runsc/boot/loader.go
index 096b0e9f0..3f41d8357 100644
--- a/runsc/boot/loader.go
+++ b/runsc/boot/loader.go
@@ -36,6 +36,7 @@ import (
"gvisor.dev/gvisor/pkg/sentry/fs"
"gvisor.dev/gvisor/pkg/sentry/fs/host"
"gvisor.dev/gvisor/pkg/sentry/fs/user"
+ vfs2host "gvisor.dev/gvisor/pkg/sentry/fsimpl/host"
"gvisor.dev/gvisor/pkg/sentry/inet"
"gvisor.dev/gvisor/pkg/sentry/kernel"
"gvisor.dev/gvisor/pkg/sentry/kernel/auth"
@@ -46,6 +47,7 @@ import (
"gvisor.dev/gvisor/pkg/sentry/syscalls/linux/vfs2"
"gvisor.dev/gvisor/pkg/sentry/time"
"gvisor.dev/gvisor/pkg/sentry/usage"
+ "gvisor.dev/gvisor/pkg/sentry/vfs"
"gvisor.dev/gvisor/pkg/sentry/watchdog"
"gvisor.dev/gvisor/pkg/sync"
"gvisor.dev/gvisor/pkg/tcpip"
@@ -329,6 +331,17 @@ func New(args Args) (*Loader, error) {
return nil, fmt.Errorf("creating pod mount hints: %v", err)
}
+ if kernel.VFS2Enabled {
+ // Set up host mount that will be used for imported fds.
+ hostFilesystem := vfs2host.NewFilesystem(k.VFS())
+ defer hostFilesystem.DecRef()
+ hostMount, err := k.VFS().NewDisconnectedMount(hostFilesystem, nil, &vfs.MountOptions{})
+ if err != nil {
+ return nil, fmt.Errorf("failed to create hostfs mount: %v", err)
+ }
+ k.SetHostMount(hostMount)
+ }
+
// Make host FDs stable between invocations. Host FDs must map to the exact
// same number when the sandbox is restored. Otherwise the wrong FD will be
// used.