diff --git a/pkg/sentry/inet/inet.go b/pkg/sentry/inet/inet.go index f7c566778..d3067f1bf 100644 --- a/pkg/sentry/inet/inet.go +++ b/pkg/sentry/inet/inet.go @@ -84,8 +84,8 @@ type Stack interface { // Pause pauses the network stack before save. Pause() - // Resume restarts the network stack after restore. - Resume() + // Restore restarts the network stack after restore. + Restore() // Destroy the network stack. Destroy() diff --git a/pkg/sentry/inet/test_stack.go b/pkg/sentry/inet/test_stack.go index 950576a58..b9d8ced32 100644 --- a/pkg/sentry/inet/test_stack.go +++ b/pkg/sentry/inet/test_stack.go @@ -152,8 +152,8 @@ func (s *TestStack) RouteTable() []Route { // Pause implements Stack. func (s *TestStack) Pause() {} -// Resume implements Stack. -func (s *TestStack) Resume() {} +// Restore implements Stack. +func (s *TestStack) Restore() {} // RegisteredEndpoints implements Stack. func (s *TestStack) RegisteredEndpoints() []stack.TransportEndpoint { diff --git a/pkg/sentry/kernel/kernel.go b/pkg/sentry/kernel/kernel.go index 03fef4fc6..2b18fb25e 100644 --- a/pkg/sentry/kernel/kernel.go +++ b/pkg/sentry/kernel/kernel.go @@ -627,7 +627,7 @@ func (k *Kernel) SaveTo(ctx context.Context, w wire.Writer) error { netstackPauseStart := time.Now() log.Infof("Pausing root network namespace") k.rootNetworkNamespace.Stack().Pause() - defer k.rootNetworkNamespace.Stack().Resume() + defer k.rootNetworkNamespace.Stack().Restore() log.Infof("Pausing root network namespace took [%s].", time.Since(netstackPauseStart)) } @@ -740,7 +740,7 @@ func (k *Kernel) LoadFrom(ctx context.Context, r wire.Reader, timeReady chan str } if net != nil { - net.Resume() + net.Restore() } if err := k.vfs.CompleteRestore(ctx, vfsOpts); err != nil { diff --git a/pkg/sentry/socket/hostinet/stack.go b/pkg/sentry/socket/hostinet/stack.go index 7b7220713..6cdd8d198 100644 --- a/pkg/sentry/socket/hostinet/stack.go +++ b/pkg/sentry/socket/hostinet/stack.go @@ -326,8 +326,8 @@ func (s *Stack) RouteTable() []inet.Route { // Pause implements inet.Stack.Pause. func (*Stack) Pause() {} -// Resume implements inet.Stack.Resume. -func (*Stack) Resume() {} +// Restore implements inet.Stack.Restore. +func (*Stack) Restore() {} // RegisteredEndpoints implements inet.Stack.RegisteredEndpoints. func (*Stack) RegisteredEndpoints() []stack.TransportEndpoint { return nil } diff --git a/pkg/sentry/socket/netstack/stack.go b/pkg/sentry/socket/netstack/stack.go index 25f25eacd..76d3aeaad 100644 --- a/pkg/sentry/socket/netstack/stack.go +++ b/pkg/sentry/socket/netstack/stack.go @@ -474,9 +474,9 @@ func (s *Stack) Pause() { s.Stack.Pause() } -// Resume implements inet.Stack.Resume. -func (s *Stack) Resume() { - s.Stack.Resume() +// Restore implements inet.Stack.Restore. +func (s *Stack) Restore() { + s.Stack.Restore() } // RegisteredEndpoints implements inet.Stack.RegisteredEndpoints. diff --git a/pkg/tcpip/stack/stack.go b/pkg/tcpip/stack/stack.go index 45a1c3633..269373927 100644 --- a/pkg/tcpip/stack/stack.go +++ b/pkg/tcpip/stack/stack.go @@ -48,13 +48,13 @@ type transportProtocolState struct { defaultHandler func(id TransportEndpointID, pkt *PacketBuffer) bool } -// ResumableEndpoint is an endpoint that needs to be resumed after restore. -type ResumableEndpoint interface { - // Resume resumes an endpoint after restore. This can be used to restart - // background workers such as protocol goroutines. This must be called after - // all indirect dependencies of the endpoint has been restored, which +// RestoredEndpoint is an endpoint that needs to be restored. +type RestoredEndpoint interface { + // Restore restores an endpoint. This can be used to restart background + // workers such as protocol goroutines. This must be called after all + // indirect dependencies of the endpoint has been restored, which // generally implies at the end of the restore process. - Resume(*Stack) + Restore(*Stack) } // uniqueIDGenerator is a default unique ID generator. @@ -115,9 +115,9 @@ type Stack struct { // TODO(gvisor.dev/issue/4595): S/R this field. tables *IPTables - // resumableEndpoints is a list of endpoints that need to be resumed if the + // restoredEndpoints is a list of endpoints that need to be restored if the // stack is being restored. - resumableEndpoints []ResumableEndpoint + restoredEndpoints []RestoredEndpoint // icmpRateLimiter is a global rate limiter for all ICMP messages generated // by the stack. @@ -1713,9 +1713,9 @@ func (s *Stack) UnregisterRawTransportEndpoint(netProto tcpip.NetworkProtocolNum // RegisterRestoredEndpoint records e as an endpoint that has been restored on // this stack. -func (s *Stack) RegisterRestoredEndpoint(e ResumableEndpoint) { +func (s *Stack) RegisterRestoredEndpoint(e RestoredEndpoint) { s.mu.Lock() - s.resumableEndpoints = append(s.resumableEndpoints, e) + s.restoredEndpoints = append(s.restoredEndpoints, e) s.mu.Unlock() } @@ -1811,17 +1811,17 @@ func (s *Stack) Pause() { } } -// Resume restarts the stack after a restore. This must be called after the +// Restore restarts the stack after a restore. This must be called after the // entire system has been restored. -func (s *Stack) Resume() { - // ResumableEndpoint.Resume() may call other methods on s, so we can't hold - // s.mu while resuming the endpoints. +func (s *Stack) Restore() { + // RestoredEndpoint.Restore() may call other methods on s, so we can't hold + // s.mu while restoring the endpoints. s.mu.Lock() - eps := s.resumableEndpoints - s.resumableEndpoints = nil + eps := s.restoredEndpoints + s.restoredEndpoints = nil s.mu.Unlock() for _, e := range eps { - e.Resume(s) + e.Restore(s) } // Now resume any protocol level background workers. for _, p := range s.transportProtocols { diff --git a/pkg/tcpip/stack/transport_test.go b/pkg/tcpip/stack/transport_test.go index 43b617d32..1052396b5 100644 --- a/pkg/tcpip/stack/transport_test.go +++ b/pkg/tcpip/stack/transport_test.go @@ -255,7 +255,7 @@ func (*fakeTransportEndpoint) State() uint32 { func (*fakeTransportEndpoint) ModerateRecvBuf(copied int) {} -func (*fakeTransportEndpoint) Resume(*stack.Stack) {} +func (*fakeTransportEndpoint) Restore(*stack.Stack) {} func (*fakeTransportEndpoint) Wait() {} diff --git a/pkg/tcpip/transport/icmp/endpoint_state.go b/pkg/tcpip/transport/icmp/endpoint_state.go index aefe3e5f4..a58cd5d0e 100644 --- a/pkg/tcpip/transport/icmp/endpoint_state.go +++ b/pkg/tcpip/transport/icmp/endpoint_state.go @@ -44,8 +44,8 @@ func (e *endpoint) beforeSave() { e.freeze() } -// Resume implements tcpip.ResumableEndpoint.Resume. -func (e *endpoint) Resume(s *stack.Stack) { +// Restore implements tcpip.RestoredEndpoint.Restore. +func (e *endpoint) Restore(s *stack.Stack) { e.thaw() e.net.Resume(s) diff --git a/pkg/tcpip/transport/raw/endpoint_state.go b/pkg/tcpip/transport/raw/endpoint_state.go index c7b3f0af5..7d20de0a5 100644 --- a/pkg/tcpip/transport/raw/endpoint_state.go +++ b/pkg/tcpip/transport/raw/endpoint_state.go @@ -43,8 +43,8 @@ func (e *endpoint) beforeSave() { e.setReceiveDisabled(true) } -// Resume implements tcpip.ResumableEndpoint.Resume. -func (e *endpoint) Resume(s *stack.Stack) { +// Restore implements tcpip.RestoredEndpoint.Restore. +func (e *endpoint) Restore(s *stack.Stack) { e.net.Resume(s) e.setReceiveDisabled(false) diff --git a/pkg/tcpip/transport/tcp/endpoint_state.go b/pkg/tcpip/transport/tcp/endpoint_state.go index 9fae26fbd..fea5539de 100644 --- a/pkg/tcpip/transport/tcp/endpoint_state.go +++ b/pkg/tcpip/transport/tcp/endpoint_state.go @@ -114,13 +114,13 @@ func (e *endpoint) afterLoad(ctx context.Context) { // RacyLoad() can be used because we are initializing e. e.origEndpointState = e.state.RacyLoad() // Restore the endpoint to InitialState as it will be moved to - // its origEndpointState during Resume. + // its origEndpointState during Restore. e.state = atomicbitops.FromUint32(uint32(StateInitial)) stack.RestoreStackFromContext(ctx).RegisterRestoredEndpoint(e) } -// Resume implements tcpip.ResumableEndpoint.Resume. -func (e *endpoint) Resume(s *stack.Stack) { +// Restore implements tcpip.RestoredEndpoint.Restore. +func (e *endpoint) Restore(s *stack.Stack) { if !e.EndpointState().closed() { e.keepalive.timer.init(s.Clock(), timerHandler(e, e.keepaliveTimerExpired)) } diff --git a/pkg/tcpip/transport/udp/endpoint_state.go b/pkg/tcpip/transport/udp/endpoint_state.go index d6893b30e..27d0d8476 100644 --- a/pkg/tcpip/transport/udp/endpoint_state.go +++ b/pkg/tcpip/transport/udp/endpoint_state.go @@ -44,8 +44,8 @@ func (e *endpoint) beforeSave() { e.freeze() } -// Resume implements tcpip.ResumableEndpoint.Resume. -func (e *endpoint) Resume(s *stack.Stack) { +// Restore implements tcpip.RestoredEndpoint.Restore. +func (e *endpoint) Restore(s *stack.Stack) { e.thaw() e.mu.Lock()