From c348d0786388ded1a4bad3c98000b4653724c764 Mon Sep 17 00:00:00 2001 From: Zhaozhong Ni Date: Tue, 7 Aug 2018 10:26:17 -0700 Subject: sentry: make epoll.pollEntry wait for the file operation in restore. PiperOrigin-RevId: 207737935 Change-Id: I3a301ece1f1d30909715f36562474e3248b6a0d5 --- pkg/sentry/fs/file.go | 2 +- pkg/sentry/fs/host/inode.go | 2 +- pkg/sentry/kernel/epoll/epoll.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'pkg/sentry') diff --git a/pkg/sentry/fs/file.go b/pkg/sentry/fs/file.go index 8e535a618..904827a3e 100644 --- a/pkg/sentry/fs/file.go +++ b/pkg/sentry/fs/file.go @@ -91,7 +91,7 @@ type File struct { mu amutex.AbortableMutex `state:"nosave"` // FileOperations implements file system specific behavior for this File. - FileOperations FileOperations + FileOperations FileOperations `state:"wait"` // offset is the File's offset. Updating offset is protected by mu but // can be read atomically via File.Offset() outside of mu. diff --git a/pkg/sentry/fs/host/inode.go b/pkg/sentry/fs/host/inode.go index 761ccde33..66c17debb 100644 --- a/pkg/sentry/fs/host/inode.go +++ b/pkg/sentry/fs/host/inode.go @@ -77,7 +77,7 @@ type inodeFileState struct { descriptor *descriptor `state:"wait"` // Event queue for blocking operations. - queue waiter.Queue `state:"nosave"` + queue waiter.Queue `state:"zerovalue"` // sattr is used to restore the inodeOperations. sattr fs.StableAttr `state:"wait"` diff --git a/pkg/sentry/kernel/epoll/epoll.go b/pkg/sentry/kernel/epoll/epoll.go index d87e64a1c..a8eb114c0 100644 --- a/pkg/sentry/kernel/epoll/epoll.go +++ b/pkg/sentry/kernel/epoll/epoll.go @@ -61,7 +61,7 @@ const ( // // +stateify savable type FileIdentifier struct { - File *fs.File + File *fs.File `state:"wait"` Fd kdefs.FD } -- cgit v1.2.3