mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
0659b6035a
- Add type parameter Filesystem to vfs/genericfstree, which is required to provide `ancestryMu sync.RWMutex`, and add such a RWMutex to all FSImpls that use genericfstree. - Modify genericfstree.PrependPath() and genericfstree.IsDescendant() to use ancestryMu to ensure atomicity. For callers of genericfstree.PrependPath(), this means that (broader) FSImpl locks no longer need to be held during the call. For callers of genericfstree.IsDescendant(), this means that we can remove documentation warnings about its non-atomicity. - Minor cleanup: Remove useless variable `start`, which is always 0, from MM.ReadMaps/SmapsDataInto(). PiperOrigin-RevId: 696713993
172 lines
3.8 KiB
Python
172 lines
3.8 KiB
Python
load("//pkg/sync/locking:locking.bzl", "declare_mutex", "declare_rwmutex")
|
|
load("//tools:defs.bzl", "go_library", "go_test")
|
|
load("//tools/go_generics:defs.bzl", "go_template_instance")
|
|
|
|
package(default_applicable_licenses = ["//:license"])
|
|
|
|
licenses(["notice"])
|
|
|
|
go_template_instance(
|
|
name = "dentry_list",
|
|
out = "dentry_list.go",
|
|
package = "tmpfs",
|
|
prefix = "dentry",
|
|
template = "//pkg/ilist:generic_list",
|
|
types = {
|
|
"Element": "*dentry",
|
|
"Linker": "*dentry",
|
|
},
|
|
)
|
|
|
|
go_template_instance(
|
|
name = "fstree",
|
|
out = "fstree.go",
|
|
package = "tmpfs",
|
|
prefix = "generic",
|
|
template = "//pkg/sentry/vfs/genericfstree:generic_fstree",
|
|
types = {
|
|
"Dentry": "dentry",
|
|
"Filesystem": "filesystem",
|
|
},
|
|
)
|
|
|
|
go_template_instance(
|
|
name = "inode_refs",
|
|
out = "inode_refs.go",
|
|
package = "tmpfs",
|
|
prefix = "inode",
|
|
template = "//pkg/refs:refs_template",
|
|
types = {
|
|
"T": "inode",
|
|
},
|
|
)
|
|
|
|
declare_rwmutex(
|
|
name = "ancestry_mutex",
|
|
out = "ancestry_mutex.go",
|
|
package = "tmpfs",
|
|
prefix = "ancestry",
|
|
)
|
|
|
|
declare_rwmutex(
|
|
name = "filesystem_mutex",
|
|
out = "filesystem_mutex.go",
|
|
package = "tmpfs",
|
|
prefix = "filesystem",
|
|
)
|
|
|
|
declare_mutex(
|
|
name = "inode_mutex",
|
|
out = "inode_mutex.go",
|
|
package = "tmpfs",
|
|
prefix = "inode",
|
|
)
|
|
|
|
declare_mutex(
|
|
name = "iter_mutex",
|
|
out = "iter_mutex.go",
|
|
package = "tmpfs",
|
|
prefix = "iter",
|
|
)
|
|
|
|
declare_mutex(
|
|
name = "pages_used_mutex",
|
|
out = "pages_used_mutex.go",
|
|
package = "tmpfs",
|
|
prefix = "pagesUsed",
|
|
)
|
|
|
|
go_library(
|
|
name = "tmpfs",
|
|
srcs = [
|
|
"ancestry_mutex.go",
|
|
"dentry_list.go",
|
|
"device_file.go",
|
|
"directory.go",
|
|
"filesystem.go",
|
|
"filesystem_mutex.go",
|
|
"fstree.go",
|
|
"inode_mutex.go",
|
|
"inode_refs.go",
|
|
"iter_mutex.go",
|
|
"named_pipe.go",
|
|
"pages_used_mutex.go",
|
|
"regular_file.go",
|
|
"save_restore.go",
|
|
"socket_file.go",
|
|
"symlink.go",
|
|
"tmpfs.go",
|
|
],
|
|
visibility = ["//pkg/sentry:internal"],
|
|
deps = [
|
|
"//pkg/abi/linux",
|
|
"//pkg/atomicbitops",
|
|
"//pkg/context",
|
|
"//pkg/errors/linuxerr",
|
|
"//pkg/fd",
|
|
"//pkg/fspath",
|
|
"//pkg/hostarch",
|
|
"//pkg/log",
|
|
"//pkg/refs",
|
|
"//pkg/safemem",
|
|
"//pkg/sentry/arch",
|
|
"//pkg/sentry/fsimpl/lock",
|
|
"//pkg/sentry/fsmetric",
|
|
"//pkg/sentry/fsutil",
|
|
"//pkg/sentry/hostfd",
|
|
"//pkg/sentry/kernel/auth",
|
|
"//pkg/sentry/kernel/pipe",
|
|
"//pkg/sentry/ktime",
|
|
"//pkg/sentry/memmap",
|
|
"//pkg/sentry/pgalloc",
|
|
"//pkg/sentry/platform",
|
|
"//pkg/sentry/socket/unix/transport",
|
|
"//pkg/sentry/uniqueid",
|
|
"//pkg/sentry/usage",
|
|
"//pkg/sentry/vfs",
|
|
"//pkg/sentry/vfs/memxattr",
|
|
"//pkg/sync",
|
|
"//pkg/sync/locking",
|
|
"//pkg/usermem",
|
|
],
|
|
)
|
|
|
|
go_test(
|
|
name = "benchmark_test",
|
|
size = "small",
|
|
srcs = ["benchmark_test.go"],
|
|
deps = [
|
|
":tmpfs",
|
|
"//pkg/abi/linux",
|
|
"//pkg/fspath",
|
|
"//pkg/refs",
|
|
"//pkg/sentry/contexttest",
|
|
"//pkg/sentry/kernel/auth",
|
|
"//pkg/sentry/vfs",
|
|
],
|
|
)
|
|
|
|
go_test(
|
|
name = "tmpfs_test",
|
|
size = "small",
|
|
srcs = [
|
|
"pipe_test.go",
|
|
"regular_file_test.go",
|
|
"stat_test.go",
|
|
"tmpfs_test.go",
|
|
],
|
|
library = ":tmpfs",
|
|
deps = [
|
|
"//pkg/abi/linux",
|
|
"//pkg/atomicbitops",
|
|
"//pkg/context",
|
|
"//pkg/errors/linuxerr",
|
|
"//pkg/fspath",
|
|
"//pkg/sentry/contexttest",
|
|
"//pkg/sentry/fsimpl/lock",
|
|
"//pkg/sentry/kernel/auth",
|
|
"//pkg/sentry/vfs",
|
|
"//pkg/usermem",
|
|
],
|
|
)
|