From a76911efa98c0f2dfa4b320f32768b56b391748b Mon Sep 17 00:00:00 2001 From: Nayana Bidari Date: Wed, 6 Mar 2024 13:22:36 -0800 Subject: [PATCH] Rename Resume() to Restore() in netstack. The existing Resume method in netstack is doing the work of Restore. This method does not resume endpoints as the resumable endpoints are only stored during the Restore of the sandbox, rename the method appropriately. PiperOrigin-RevId: 613320887 --- pkg/sentry/inet/inet.go | 4 +-- pkg/sentry/inet/test_stack.go | 4 +-- pkg/sentry/kernel/kernel.go | 4 +-- pkg/sentry/socket/hostinet/stack.go | 4 +-- pkg/sentry/socket/netstack/stack.go | 6 ++-- pkg/tcpip/stack/stack.go | 34 +++++++++++----------- pkg/tcpip/stack/transport_test.go | 2 +- pkg/tcpip/transport/icmp/endpoint_state.go | 4 +-- pkg/tcpip/transport/raw/endpoint_state.go | 4 +-- pkg/tcpip/transport/tcp/endpoint_state.go | 6 ++-- pkg/tcpip/transport/udp/endpoint_state.go | 4 +-- 11 files changed, 38 insertions(+), 38 deletions(-) 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()