mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Add IfChange/ThenChange reminders in fs/proc
There is a lot of code duplication for VFSv2 and this serves as remind to keep the copies in sync. Updates #1195 PiperOrigin-RevId: 290139234
This commit is contained in:
committed by
gVisor bot
parent
70d7c52bd7
commit
ab48112e41
@@ -21,6 +21,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/sentry/fs"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
func newCGroupInode(ctx context.Context, msrc *fs.MountSource, cgroupControllers map[string]string) *fs.Inode {
|
||||
// From man 7 cgroups: "For each cgroup hierarchy of which the process
|
||||
// is a member, there is one entry containing three colon-separated
|
||||
@@ -39,3 +41,5 @@ func newCGroupInode(ctx context.Context, msrc *fs.MountSource, cgroupControllers
|
||||
|
||||
return newStaticProcInode(ctx, msrc, []byte(data))
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/tasks_files.go)
|
||||
|
||||
@@ -22,6 +22,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/sentry/kernel"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
func newCPUInfo(ctx context.Context, msrc *fs.MountSource) *fs.Inode {
|
||||
k := kernel.KernelFromContext(ctx)
|
||||
features := k.FeatureSet()
|
||||
@@ -35,3 +37,5 @@ func newCPUInfo(ctx context.Context, msrc *fs.MountSource) *fs.Inode {
|
||||
}
|
||||
return newStaticProcInode(ctx, msrc, buf.Bytes())
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/tasks_files.go)
|
||||
|
||||
@@ -29,6 +29,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/waiter"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
// execArgType enumerates the types of exec arguments that are exposed through
|
||||
// proc.
|
||||
type execArgType int
|
||||
@@ -201,3 +203,5 @@ func (f *execArgFile) Read(ctx context.Context, _ *fs.File, dst usermem.IOSequen
|
||||
}
|
||||
return int64(n), err
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/task.go)
|
||||
|
||||
@@ -28,6 +28,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/syserror"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
// walkDescriptors finds the descriptor (file-flag pair) for the fd identified
|
||||
// by p, and calls the toInodeOperations callback with that descriptor. This is a helper
|
||||
// method for implementing fs.InodeOperations.Lookup.
|
||||
@@ -277,3 +279,5 @@ func (fdid *fdInfoDir) GetFile(ctx context.Context, dirent *fs.Dirent, flags fs.
|
||||
}
|
||||
return fs.NewFile(ctx, dirent, flags, fops), nil
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/task_files.go)
|
||||
|
||||
@@ -23,6 +23,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/sentry/fs/proc/seqfile"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
// filesystemsData backs /proc/filesystems.
|
||||
//
|
||||
// +stateify savable
|
||||
@@ -59,3 +61,5 @@ func (*filesystemsData) ReadSeqFileData(ctx context.Context, h seqfile.SeqHandle
|
||||
// Return the SeqData and advance the generation counter.
|
||||
return []seqfile.SeqData{{Buf: buf.Bytes(), Handle: (*filesystemsData)(nil)}}, 1
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/filesystem.go)
|
||||
|
||||
@@ -21,6 +21,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/sentry/fs"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
// filesystem is a procfs.
|
||||
//
|
||||
// +stateify savable
|
||||
@@ -79,3 +81,5 @@ func (f *filesystem) Mount(ctx context.Context, device string, flags fs.MountSou
|
||||
// never want them cached.
|
||||
return New(ctx, fs.NewNonCachingMountSource(ctx, f, flags), cgroups)
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/filesystem.go)
|
||||
|
||||
@@ -26,6 +26,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/sentry/usermem"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
// taskOwnedInodeOps wraps an fs.InodeOperations and overrides the UnstableAttr
|
||||
// method to return either the task or root as the owner, depending on the
|
||||
// task's dumpability.
|
||||
@@ -131,3 +133,5 @@ func newProcInode(ctx context.Context, iops fs.InodeOperations, msrc *fs.MountSo
|
||||
}
|
||||
return fs.NewInode(ctx, iops, msrc, sattr)
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/tasks.go)
|
||||
|
||||
@@ -22,6 +22,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/sentry/fs/proc/seqfile"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
// loadavgData backs /proc/loadavg.
|
||||
//
|
||||
// +stateify savable
|
||||
@@ -53,3 +55,5 @@ func (d *loadavgData) ReadSeqFileData(ctx context.Context, h seqfile.SeqHandle)
|
||||
},
|
||||
}, 0
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/tasks_files.go)
|
||||
|
||||
@@ -25,6 +25,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/sentry/usermem"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
// meminfoData backs /proc/meminfo.
|
||||
//
|
||||
// +stateify savable
|
||||
@@ -83,3 +85,5 @@ func (d *meminfoData) ReadSeqFileData(ctx context.Context, h seqfile.SeqHandle)
|
||||
fmt.Fprintf(&buf, "Shmem: %8d kB\n", snapshot.Tmpfs/1024)
|
||||
return []seqfile.SeqData{{Buf: buf.Bytes(), Handle: (*meminfoData)(nil)}}, 0
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/tasks_files.go)
|
||||
|
||||
@@ -25,6 +25,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/sentry/kernel"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
// forEachMountSource runs f for the process root mount and each mount that is a
|
||||
// descendant of the root.
|
||||
func forEachMount(t *kernel.Task, fn func(string, *fs.Mount)) {
|
||||
@@ -195,3 +197,5 @@ func (mf *mountsFile) ReadSeqFileData(ctx context.Context, handle seqfile.SeqHan
|
||||
|
||||
return []seqfile.SeqData{{Buf: buf.Bytes(), Handle: (*mountsFile)(nil)}}, 0
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/tasks_files.go)
|
||||
|
||||
@@ -38,6 +38,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/tcpip/header"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
// newNet creates a new proc net entry.
|
||||
func (p *proc) newNetDir(ctx context.Context, k *kernel.Kernel, msrc *fs.MountSource) *fs.Inode {
|
||||
var contents map[string]*fs.Inode
|
||||
@@ -831,3 +833,5 @@ func (n *netUDP) ReadSeqFileData(ctx context.Context, h seqfile.SeqHandle) ([]se
|
||||
}
|
||||
return data, 0
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/tasks_net.go)
|
||||
|
||||
@@ -31,6 +31,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/syserror"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
// proc is a root proc node.
|
||||
//
|
||||
// +stateify savable
|
||||
@@ -249,3 +251,5 @@ func (rpf *rootProcFile) Readdir(ctx context.Context, file *fs.File, ser fs.Dent
|
||||
}
|
||||
return offset, nil
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/tasks.go)
|
||||
|
||||
@@ -24,6 +24,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/sentry/kernel"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
// statData backs /proc/stat.
|
||||
//
|
||||
// +stateify savable
|
||||
@@ -140,3 +142,5 @@ func (s *statData) ReadSeqFileData(ctx context.Context, h seqfile.SeqHandle) ([]
|
||||
},
|
||||
}, 0
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/task_files.go)
|
||||
|
||||
@@ -31,6 +31,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/waiter"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
// mmapMinAddrData backs /proc/sys/vm/mmap_min_addr.
|
||||
//
|
||||
// +stateify savable
|
||||
@@ -160,3 +162,5 @@ func (hf *hostnameFile) Read(ctx context.Context, _ *fs.File, dst usermem.IOSequ
|
||||
}
|
||||
|
||||
var _ fs.FileOperations = (*hostnameFile)(nil)
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/tasks_sys.go)
|
||||
|
||||
@@ -30,6 +30,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/waiter"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
type tcpMemDir int
|
||||
|
||||
const (
|
||||
@@ -364,3 +366,5 @@ func (p *proc) newSysNetDir(ctx context.Context, msrc *fs.MountSource) *fs.Inode
|
||||
d := ramfs.NewDir(ctx, contents, fs.RootOwner, fs.FilePermsFromMode(0555))
|
||||
return newProcInode(ctx, d, msrc, fs.SpecialDirectory, nil)
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/tasks_sys.go)
|
||||
|
||||
@@ -37,6 +37,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/waiter"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
// getTaskMM returns t's MemoryManager. If getTaskMM succeeds, the MemoryManager's
|
||||
// users count is incremented, and must be decremented by the caller when it is
|
||||
// no longer in use.
|
||||
@@ -800,3 +802,5 @@ func (f *auxvecFile) Read(ctx context.Context, _ *fs.File, dst usermem.IOSequenc
|
||||
n, err := dst.CopyOut(ctx, buf[offset:])
|
||||
return int64(n), err
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/task.go|../../fsimpl/proc/task_files.go)
|
||||
|
||||
@@ -30,6 +30,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/waiter"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
// idMapInodeOperations implements fs.InodeOperations for
|
||||
// /proc/[pid]/{uid,gid}_map.
|
||||
//
|
||||
@@ -177,3 +179,5 @@ func (imfo *idMapFileOperations) Write(ctx context.Context, file *fs.File, src u
|
||||
// count, even if fewer bytes were used.
|
||||
return int64(srclen), nil
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/task_files.go)
|
||||
|
||||
@@ -28,6 +28,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/waiter"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
// uptime is a file containing the system uptime.
|
||||
//
|
||||
// +stateify savable
|
||||
@@ -85,3 +87,5 @@ func (f *uptimeFile) Read(ctx context.Context, _ *fs.File, dst usermem.IOSequenc
|
||||
n, err := dst.CopyOut(ctx, s[offset:])
|
||||
return int64(n), err
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/tasks_files.go)
|
||||
|
||||
@@ -22,6 +22,8 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/sentry/kernel"
|
||||
)
|
||||
|
||||
// LINT.IfChange
|
||||
|
||||
// versionData backs /proc/version.
|
||||
//
|
||||
// +stateify savable
|
||||
@@ -76,3 +78,5 @@ func (v *versionData) ReadSeqFileData(ctx context.Context, h seqfile.SeqHandle)
|
||||
},
|
||||
}, 0
|
||||
}
|
||||
|
||||
// LINT.ThenChange(../../fsimpl/proc/task_files.go)
|
||||
|
||||
Reference in New Issue
Block a user