summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry/fs/gofer
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/sentry/fs/gofer')
-rw-r--r--pkg/sentry/fs/gofer/BUILD23
-rw-r--r--pkg/sentry/fs/gofer/file.go2
-rw-r--r--pkg/sentry/fs/gofer/fs.go2
-rw-r--r--pkg/sentry/fs/gofer/inode.go4
-rw-r--r--pkg/sentry/fs/gofer/session.go3
5 files changed, 12 insertions, 22 deletions
diff --git a/pkg/sentry/fs/gofer/BUILD b/pkg/sentry/fs/gofer/BUILD
index 1277379e7..cb17339c9 100644
--- a/pkg/sentry/fs/gofer/BUILD
+++ b/pkg/sentry/fs/gofer/BUILD
@@ -1,21 +1,6 @@
package(licenses = ["notice"]) # Apache 2.0
-load("//tools/go_stateify:defs.bzl", "go_library", "go_stateify", "go_test")
-
-go_stateify(
- name = "gofer_state",
- srcs = [
- "file.go",
- "file_state.go",
- "fs.go",
- "inode.go",
- "inode_state.go",
- "session.go",
- "session_state.go",
- ],
- out = "gofer_state.go",
- package = "gofer",
-)
+load("//tools/go_stateify:defs.bzl", "go_library", "go_test")
go_library(
name = "gofer",
@@ -27,7 +12,6 @@ go_library(
"file.go",
"file_state.go",
"fs.go",
- "gofer_state.go",
"handles.go",
"inode.go",
"inode_state.go",
@@ -41,7 +25,6 @@ go_library(
visibility = ["//pkg/sentry:internal"],
deps = [
"//pkg/abi/linux",
- "//pkg/amutex",
"//pkg/fd",
"//pkg/log",
"//pkg/metric",
@@ -54,15 +37,11 @@ go_library(
"//pkg/sentry/fs/fdpipe",
"//pkg/sentry/fs/fsutil",
"//pkg/sentry/fs/host",
- "//pkg/sentry/fs/lock",
"//pkg/sentry/kernel/auth",
"//pkg/sentry/kernel/time",
"//pkg/sentry/memmap",
- "//pkg/sentry/platform",
"//pkg/sentry/safemem",
- "//pkg/sentry/uniqueid",
"//pkg/sentry/usermem",
- "//pkg/state",
"//pkg/syserror",
"//pkg/tcpip",
"//pkg/tcpip/transport/unix",
diff --git a/pkg/sentry/fs/gofer/file.go b/pkg/sentry/fs/gofer/file.go
index 039618808..46a6bbd5d 100644
--- a/pkg/sentry/fs/gofer/file.go
+++ b/pkg/sentry/fs/gofer/file.go
@@ -33,6 +33,8 @@ import (
var openedWX = metric.MustCreateNewUint64Metric("/gofer/opened_write_execute_file", true /* sync */, "Number of times a writable+executable file was opened from a gofer.")
// fileOperations implements fs.FileOperations for a remote file system.
+//
+// +stateify savable
type fileOperations struct {
fsutil.NoIoctl `state:"nosave"`
waiter.AlwaysReady `state:"nosave"`
diff --git a/pkg/sentry/fs/gofer/fs.go b/pkg/sentry/fs/gofer/fs.go
index dd5d43c47..3ae93f059 100644
--- a/pkg/sentry/fs/gofer/fs.go
+++ b/pkg/sentry/fs/gofer/fs.go
@@ -83,6 +83,8 @@ var (
)
// filesystem is a 9p client.
+//
+// +stateify savable
type filesystem struct{}
func init() {
diff --git a/pkg/sentry/fs/gofer/inode.go b/pkg/sentry/fs/gofer/inode.go
index df584c382..7fc8f77b0 100644
--- a/pkg/sentry/fs/gofer/inode.go
+++ b/pkg/sentry/fs/gofer/inode.go
@@ -35,6 +35,8 @@ import (
)
// inodeOperations implements fs.InodeOperations.
+//
+// +stateify savable
type inodeOperations struct {
fsutil.InodeNotVirtual `state:"nosave"`
fsutil.InodeNoExtendedAttributes `state:"nosave"`
@@ -68,6 +70,8 @@ type inodeOperations struct {
// circular load dependency between it and inodeOperations). Even with
// lazy loading, this approach defines the dependencies between objects
// and the expected load behavior more concretely.
+//
+// +stateify savable
type inodeFileState struct {
// s is common file system state for Gofers.
s *session `state:"wait"`
diff --git a/pkg/sentry/fs/gofer/session.go b/pkg/sentry/fs/gofer/session.go
index b6841526a..648a11435 100644
--- a/pkg/sentry/fs/gofer/session.go
+++ b/pkg/sentry/fs/gofer/session.go
@@ -27,6 +27,7 @@ import (
"gvisor.googlesource.com/gvisor/pkg/unet"
)
+// +stateify savable
type endpointMap struct {
mu sync.RWMutex `state:"nosave"`
// TODO: Make map with private unix sockets savable.
@@ -63,6 +64,8 @@ func (e *endpointMap) get(key device.MultiDeviceKey) unix.BoundEndpoint {
}
// session holds state for each 9p session established during sys_mount.
+//
+// +stateify savable
type session struct {
refs.AtomicRefCount