Make rawfile.MMsgHdr as nosave.

recvMMsgDispatcher.msgHdrs is not required to be saved across s/r, mark it as
nosave and make changes to re-initialize it after restore.

PiperOrigin-RevId: 673859213
This commit is contained in:
Nayana Bidari
2024-09-12 08:33:37 -07:00
committed by gVisor bot
parent 9bdd97ce47
commit 98c83d5022
4 changed files with 28 additions and 3 deletions
-2
View File
@@ -69,8 +69,6 @@ func AppendIovecFromBytes(iovs []unix.Iovec, bs []byte, max int) []unix.Iovec {
}
// MMsgHdr represents the mmsg_hdr structure required by recvmmsg() on linux.
//
// +stateify savable
type MMsgHdr struct {
Msg unix.Msghdr
Len uint32
+1
View File
@@ -15,6 +15,7 @@ go_library(
"mmap_unsafe.go",
"packet_dispatchers.go",
"processors.go",
"save_restore.go",
],
visibility = ["//visibility:public"],
deps = [
+1 -1
View File
@@ -227,7 +227,7 @@ type recvMMsgDispatcher struct {
// reference an array of iovecs in the iovecs field defined above. This
// array is passed as the parameter to recvmmsg call to retrieve
// potentially more than 1 packet per unix.
msgHdrs []rawfile.MMsgHdr
msgHdrs []rawfile.MMsgHdr `state:"nosave"`
// pkts is reused to avoid allocations.
pkts stack.PacketBufferList
+26
View File
@@ -0,0 +1,26 @@
// Copyright 2024 The gVisor Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package fdbased
import (
"context"
"gvisor.dev/gvisor/pkg/rawfile"
)
// afterLoad is invoked by stateify.
func (r *recvMMsgDispatcher) afterLoad(context.Context) {
r.msgHdrs = make([]rawfile.MMsgHdr, MaxMsgsPerRecv)
}