Files
Ayush RanjanandgVisor bot ed9678b679 Delete pgalloc.MemoryFileProvider.
The work done in c087777e37 ("Plumb restore context to afterLoad()") makes
pgalloc.MemoryFileProvider redundant as structs can now easily restore
pgalloc.MemoryFile in stateify's afterLoad() method. This allows structs to
have a pgalloc.MemoryFile field and use that directly, instead of going through
the provided interface.

This cleans up a lot of code and also should be more performant (avoids an
interface method call on many hot paths).

PiperOrigin-RevId: 615258927
2024-03-12 20:06:58 -07:00

37 lines
1.1 KiB
Go

// Copyright 2022 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 iouringfs
import (
"context"
"gvisor.dev/gvisor/pkg/sentry/pgalloc"
)
// beforeSave is invoked by stateify.
func (fd *FileDescription) beforeSave() {
if fd.running.Load() != 0 {
panic("Task goroutine in fd.ProcessSubmissions during Save! This shouldn't be possible due to Kernel.Pause")
}
}
// afterLoad is invoked by stateify.
func (fd *FileDescription) afterLoad(ctx context.Context) {
fd.mf = pgalloc.MemoryFileFromContext(ctx)
// Remap shared buffers.
fd.remap = true
fd.runC = make(chan struct{}, 1)
}