From 175db901ca2b491c413ce3e9880f30259a8d306d Mon Sep 17 00:00:00 2001 From: Ayush Ranjan Date: Thu, 1 Dec 2022 12:43:06 -0800 Subject: [PATCH] Replace pkg/refs with pkg/refsvfs2. All VFS1 only bits have been deleted. Updates #1624 PiperOrigin-RevId: 492273183 --- pkg/bufferv2/BUILD | 4 +- pkg/lisafs/BUILD | 10 +- pkg/lisafs/fd.go | 16 +- pkg/lisafs/node.go | 4 +- pkg/lisafs/testsuite/BUILD | 1 - pkg/lisafs/testsuite/testsuite.go | 3 +- pkg/refs/BUILD | 44 +-- pkg/{refsvfs2 => refs}/README.md | 0 pkg/refs/refcounter.go | 363 +----------------- pkg/refs/refcounter_state.go | 35 -- pkg/refs/refcounter_test.go | 179 --------- pkg/{refsvfs2 => refs}/refs_map.go | 11 +- pkg/{refsvfs2 => refs}/refs_template.go | 20 +- pkg/refsvfs2/BUILD | 39 -- pkg/refsvfs2/refs.go | 41 -- pkg/sentry/fsimpl/cgroupfs/BUILD | 3 +- pkg/sentry/fsimpl/devpts/BUILD | 3 +- pkg/sentry/fsimpl/fuse/BUILD | 3 +- pkg/sentry/fsimpl/gofer/BUILD | 1 - pkg/sentry/fsimpl/gofer/directory.go | 4 +- pkg/sentry/fsimpl/gofer/gofer.go | 23 +- pkg/sentry/fsimpl/gofer/save_restore.go | 4 +- pkg/sentry/fsimpl/host/BUILD | 3 +- pkg/sentry/fsimpl/kernfs/BUILD | 10 +- pkg/sentry/fsimpl/kernfs/kernfs.go | 27 +- pkg/sentry/fsimpl/kernfs/save_restore.go | 4 +- pkg/sentry/fsimpl/mqfs/BUILD | 4 +- pkg/sentry/fsimpl/overlay/BUILD | 1 - pkg/sentry/fsimpl/overlay/overlay.go | 20 +- pkg/sentry/fsimpl/overlay/save_restore.go | 4 +- pkg/sentry/fsimpl/proc/BUILD | 11 +- pkg/sentry/fsimpl/sys/BUILD | 3 +- pkg/sentry/fsimpl/tmpfs/BUILD | 3 +- pkg/sentry/inet/BUILD | 4 +- pkg/sentry/kernel/BUILD | 11 +- .../kernel/abstract_socket_namespace.go | 10 +- pkg/sentry/kernel/ipc_namespace.go | 2 +- pkg/sentry/kernel/shm/BUILD | 3 +- pkg/sentry/mm/BUILD | 5 +- pkg/sentry/socket/unix/BUILD | 3 +- pkg/sentry/socket/unix/transport/BUILD | 5 +- pkg/sentry/vfs/BUILD | 7 +- pkg/sentry/vfs/mount.go | 18 +- pkg/sentry/vfs/save_restore.go | 4 +- pkg/tcpip/BUILD | 1 - pkg/tcpip/link/ethernet/BUILD | 1 - pkg/tcpip/link/ethernet/ethernet_test.go | 3 +- pkg/tcpip/link/fdbased/BUILD | 1 - pkg/tcpip/link/fdbased/endpoint_test.go | 3 +- pkg/tcpip/link/muxed/BUILD | 1 - pkg/tcpip/link/muxed/injectable_test.go | 3 +- pkg/tcpip/link/nested/BUILD | 1 - pkg/tcpip/link/nested/nested_test.go | 3 +- pkg/tcpip/link/packetsocket/BUILD | 1 - .../link/packetsocket/packetsocket_test.go | 3 +- pkg/tcpip/link/qdisc/fifo/BUILD | 1 - pkg/tcpip/link/qdisc/fifo/qdisc_test.go | 3 +- pkg/tcpip/link/sharedmem/BUILD | 2 - .../link/sharedmem/sharedmem_server_test.go | 3 +- pkg/tcpip/link/sharedmem/sharedmem_test.go | 3 +- pkg/tcpip/link/tun/BUILD | 3 +- pkg/tcpip/link/waitable/BUILD | 1 - pkg/tcpip/link/waitable/waitable_test.go | 3 +- pkg/tcpip/network/BUILD | 1 - pkg/tcpip/network/arp/BUILD | 2 - pkg/tcpip/network/arp/arp_test.go | 3 +- pkg/tcpip/network/arp/stats_test.go | 3 +- .../network/internal/fragmentation/BUILD | 1 - .../internal/fragmentation/main_test.go | 3 +- pkg/tcpip/network/internal/multicast/BUILD | 2 - .../internal/multicast/example_test.go | 3 +- .../internal/multicast/route_table_test.go | 3 +- pkg/tcpip/network/ip_test.go | 4 +- pkg/tcpip/network/ipv4/BUILD | 1 - pkg/tcpip/network/ipv4/igmp_test.go | 4 +- pkg/tcpip/network/ipv4/ipv4_test.go | 4 +- pkg/tcpip/network/ipv4/main_test.go | 3 +- pkg/tcpip/network/ipv6/BUILD | 2 - pkg/tcpip/network/ipv6/icmp_test.go | 4 +- pkg/tcpip/network/ipv6/main_test.go | 3 +- pkg/tcpip/network/ipv6/mld_test.go | 3 +- pkg/tcpip/network/main_test.go | 3 +- pkg/tcpip/network/multicast_group_test.go | 4 +- pkg/tcpip/stack/BUILD | 4 +- pkg/tcpip/tests/integration/BUILD | 1 - .../integration/multicast_forward_test.go | 3 +- pkg/tcpip/transport/icmp/BUILD | 1 - pkg/tcpip/transport/icmp/icmp_test.go | 3 +- pkg/tcpip/transport/internal/network/BUILD | 1 - .../internal/network/endpoint_test.go | 3 +- pkg/tcpip/transport/raw/BUILD | 1 - pkg/tcpip/transport/raw/raw_test.go | 3 +- pkg/tcpip/transport/tcp/BUILD | 5 +- pkg/tcpip/transport/tcp/main_test.go | 3 +- pkg/tcpip/transport/tcp/test/e2e/BUILD | 8 - .../transport/tcp/test/e2e/dual_stack_test.go | 3 +- .../transport/tcp/test/e2e/forwarder_test.go | 3 +- .../tcp/test/e2e/sack_scoreboard_test.go | 3 +- .../tcp/test/e2e/tcp_noracedetector_test.go | 3 +- .../transport/tcp/test/e2e/tcp_rack_test.go | 3 +- .../transport/tcp/test/e2e/tcp_sack_test.go | 3 +- pkg/tcpip/transport/tcp/test/e2e/tcp_test.go | 3 +- .../tcp/test/e2e/tcp_timestamp_test.go | 3 +- pkg/tcpip/transport/tcpconntrack/BUILD | 1 - .../tcpconntrack/tcp_conntrack_test.go | 3 +- pkg/tcpip/transport/testing/context/BUILD | 2 +- .../transport/testing/context/context.go | 4 +- pkg/tcpip/transport/udp/BUILD | 1 - pkg/tcpip/transport/udp/udp_test.go | 3 +- runsc/boot/BUILD | 1 - runsc/boot/loader.go | 3 +- runsc/cli/BUILD | 1 - runsc/cli/main.go | 3 +- 113 files changed, 209 insertions(+), 942 deletions(-) rename pkg/{refsvfs2 => refs}/README.md (100%) delete mode 100644 pkg/refs/refcounter_state.go delete mode 100644 pkg/refs/refcounter_test.go rename pkg/{refsvfs2 => refs}/refs_map.go (93%) rename pkg/{refsvfs2 => refs}/refs_template.go (92%) delete mode 100644 pkg/refsvfs2/BUILD delete mode 100644 pkg/refsvfs2/refs.go diff --git a/pkg/bufferv2/BUILD b/pkg/bufferv2/BUILD index 9dbc2c6d1..fed6edbbd 100644 --- a/pkg/bufferv2/BUILD +++ b/pkg/bufferv2/BUILD @@ -8,7 +8,7 @@ go_template_instance( out = "chunk_refs.go", package = "bufferv2", prefix = "chunk", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "chunk", }, @@ -45,7 +45,7 @@ go_library( "//pkg/ilist", "//pkg/log", "//pkg/pool", - "//pkg/refsvfs2", + "//pkg/refs", "//pkg/sync", "//pkg/tcpip/checksum", ], diff --git a/pkg/lisafs/BUILD b/pkg/lisafs/BUILD index c6a5ca2b3..01f5d4faf 100644 --- a/pkg/lisafs/BUILD +++ b/pkg/lisafs/BUILD @@ -11,7 +11,7 @@ go_template_instance( out = "control_fd_refs.go", package = "lisafs", prefix = "controlFD", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "ControlFD", }, @@ -22,7 +22,7 @@ go_template_instance( out = "open_fd_refs.go", package = "lisafs", prefix = "openFD", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "OpenFD", }, @@ -33,7 +33,7 @@ go_template_instance( out = "bound_socket_fd_refs.go", package = "lisafs", prefix = "boundSocketFD", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "BoundSocketFD", }, @@ -44,7 +44,7 @@ go_template_instance( out = "node_fd_refs.go", package = "lisafs", prefix = "node", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "Node", }, @@ -110,7 +110,7 @@ go_library( "//pkg/log", "//pkg/marshal/primitive", "//pkg/p9", - "//pkg/refsvfs2", + "//pkg/refs", "//pkg/sync", "//pkg/unet", "@org_golang_x_sys//unix:go_default_library", diff --git a/pkg/lisafs/fd.go b/pkg/lisafs/fd.go index b1ccb8d1c..b81911503 100644 --- a/pkg/lisafs/fd.go +++ b/pkg/lisafs/fd.go @@ -18,7 +18,7 @@ import ( "golang.org/x/sys/unix" "gvisor.dev/gvisor/pkg/abi/linux" "gvisor.dev/gvisor/pkg/context" - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" "gvisor.dev/gvisor/pkg/sync" ) @@ -38,7 +38,7 @@ func (f FDID) Ok() bool { // genericFD can represent any type of FD. type genericFD interface { - refsvfs2.RefCounter + refs.RefCounter } // A ControlFD is the gateway to the backing filesystem tree node. It is an @@ -84,9 +84,9 @@ type ControlFD struct { var _ genericFD = (*ControlFD)(nil) -// DecRef implements refsvfs2.RefCounter.DecRef. Note that the context +// DecRef implements refs.RefCounter.DecRef. Note that the context // parameter should never be used. It exists solely to comply with the -// refsvfs2.RefCounter interface. +// refs.RefCounter interface. func (fd *ControlFD) DecRef(context.Context) { fd.controlFDRefs.DecRef(func() { fd.conn.server.renameMu.RLock() @@ -254,9 +254,9 @@ func (fd *OpenFD) ControlFD() ControlFDImpl { return fd.controlFD.impl } -// DecRef implements refsvfs2.RefCounter.DecRef. Note that the context +// DecRef implements refs.RefCounter.DecRef. Note that the context // parameter should never be used. It exists solely to comply with the -// refsvfs2.RefCounter interface. +// refs.RefCounter interface. func (fd *OpenFD) DecRef(context.Context) { fd.openFDRefs.DecRef(func() { fd.controlFD.openFDsMu.Lock() @@ -311,9 +311,9 @@ func (fd *BoundSocketFD) ControlFD() ControlFDImpl { return fd.controlFD.impl } -// DecRef implements refsvfs2.RefCounter.DecRef. Note that the context +// DecRef implements refs.RefCounter.DecRef. Note that the context // parameter should never be used. It exists solely to comply with the -// refsvfs2.RefCounter interface. +// refs.RefCounter interface. func (fd *BoundSocketFD) DecRef(context.Context) { fd.boundSocketFDRefs.DecRef(func() { fd.controlFD.DecRef(nil) // Drop the ref on the control FD. diff --git a/pkg/lisafs/node.go b/pkg/lisafs/node.go index 2282d3a12..3c34baf86 100644 --- a/pkg/lisafs/node.go +++ b/pkg/lisafs/node.go @@ -101,9 +101,9 @@ type Node struct { dynamicChildren map[string]*Node } -// DecRef implements refsvfs2.RefCounter.DecRef. Note that the context +// DecRef implements refs.RefCounter.DecRef. Note that the context // parameter should never be used. It exists solely to comply with the -// refsvfs2.RefCounter interface. +// refs.RefCounter interface. // // Precondition: server's rename mutex must be at least read locked. func (n *Node) DecRef(context.Context) { diff --git a/pkg/lisafs/testsuite/BUILD b/pkg/lisafs/testsuite/BUILD index 9e795fd02..4a522cde6 100644 --- a/pkg/lisafs/testsuite/BUILD +++ b/pkg/lisafs/testsuite/BUILD @@ -14,7 +14,6 @@ go_library( "//pkg/context", "//pkg/lisafs", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/unet", "@com_github_syndtr_gocapability//capability:go_default_library", "@org_golang_x_sys//unix:go_default_library", diff --git a/pkg/lisafs/testsuite/testsuite.go b/pkg/lisafs/testsuite/testsuite.go index 4193ad57c..2b38a04c6 100644 --- a/pkg/lisafs/testsuite/testsuite.go +++ b/pkg/lisafs/testsuite/testsuite.go @@ -31,7 +31,6 @@ import ( "gvisor.dev/gvisor/pkg/context" "gvisor.dev/gvisor/pkg/lisafs" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/unet" ) @@ -120,7 +119,7 @@ func RunTest(t *testing.T, tester Tester, testName string, testFn TestFunc, moun // Release server resources and check for leaks. Note that leak check must // happen before c.Close() because server cleans up resources on shutdown. server.Destroy() - refsvfs2.DoRepeatedLeakCheck() + refs.DoRepeatedLeakCheck() c.Close() // This should trigger client and server shutdown. server.Wait() diff --git a/pkg/refs/BUILD b/pkg/refs/BUILD index d92aba964..7d356e37d 100644 --- a/pkg/refs/BUILD +++ b/pkg/refs/BUILD @@ -1,26 +1,31 @@ -load("//tools:defs.bzl", "go_library", "go_test") -load("//tools/go_generics:defs.bzl", "go_template_instance") +load("//tools:defs.bzl", "go_library") +load("//tools/go_generics:defs.bzl", "go_template") package(licenses = ["notice"]) -go_template_instance( - name = "weak_ref_list", - out = "weak_ref_list.go", - package = "refs", - prefix = "weakRef", - template = "//pkg/ilist:generic_list", - types = { - "Element": "*WeakRef", - "Linker": "*WeakRef", - }, +go_template( + name = "refs_template", + srcs = [ + "refs_template.go", + ], + opt_consts = [ + "enableLogging", + ], + types = [ + "T", + ], + visibility = ["//:sandbox"], + deps = [ + "//pkg/log", + "//pkg/refs", + ], ) go_library( name = "refs", srcs = [ "refcounter.go", - "refcounter_state.go", - "weak_ref_list.go", + "refs_map.go", ], visibility = ["//:sandbox"], deps = [ @@ -30,14 +35,3 @@ go_library( "//pkg/sync", ], ) - -go_test( - name = "refs_test", - size = "small", - srcs = ["refcounter_test.go"], - library = ":refs", - deps = [ - "//pkg/context", - "//pkg/sync", - ], -) diff --git a/pkg/refsvfs2/README.md b/pkg/refs/README.md similarity index 100% rename from pkg/refsvfs2/README.md rename to pkg/refs/README.md diff --git a/pkg/refs/refcounter.go b/pkg/refs/refcounter.go index 3a069c0b9..ec60ee1a0 100644 --- a/pkg/refs/refcounter.go +++ b/pkg/refs/refcounter.go @@ -12,234 +12,52 @@ // See the License for the specific language governing permissions and // limitations under the License. -// Package refs defines an interface for reference counted objects. It -// also provides a drop-in implementation called AtomicRefCount. +// Package refs defines an interface for reference counted objects. package refs import ( "bytes" "fmt" - "reflect" "runtime" - "sync/atomic" "gvisor.dev/gvisor/pkg/atomicbitops" "gvisor.dev/gvisor/pkg/context" - "gvisor.dev/gvisor/pkg/log" "gvisor.dev/gvisor/pkg/sync" ) // RefCounter is the interface to be implemented by objects that are reference // counted. -// -// TODO(gvisor.dev/issue/1624): Get rid of most of this package and replace it -// with refsvfs2. type RefCounter interface { // IncRef increments the reference counter on the object. IncRef() - // DecRef decrements the reference counter on the object. - // - // Note that AtomicRefCounter.DecRef() does not support destructors. - // If a type has a destructor, it must implement its own DecRef() - // method and call AtomicRefCounter.DecRefWithDestructor(destructor). + // DecRef decrements the object's reference count. Users of refs_template.Refs + // may specify a destructor to be called once the reference count reaches zero. DecRef(ctx context.Context) +} - // TryIncRef attempts to increase the reference counter on the object, - // but may fail if all references have already been dropped. This - // should be used only in special circumstances, such as WeakRefs. +// TryRefCounter is like RefCounter but allow the ref increment to be tried. +type TryRefCounter interface { + RefCounter + + // TryIncRef attempts to increment the reference count, but may fail if all + // references have already been dropped, in which case it returns false. If + // true is returned, then a valid reference is now held on the object. TryIncRef() bool - - // addWeakRef adds the given weak reference. Note that you should have a - // reference to the object when calling this method. - addWeakRef(*WeakRef) - - // dropWeakRef drops the given weak reference. Note that you should have - // a reference to the object when calling this method. - dropWeakRef(*WeakRef) -} - -// A WeakRefUser is notified when the last non-weak reference is dropped. -type WeakRefUser interface { - // WeakRefGone is called when the last non-weak reference is dropped. - WeakRefGone(ctx context.Context) -} - -// WeakRef is a weak reference. -// -// +stateify savable -type WeakRef struct { - weakRefEntry `state:"nosave"` - - // obj is an atomic value that points to the refCounter. - obj atomic.Value `state:".(savedReference)"` - - // user is notified when the weak ref is zapped by the object getting - // destroyed. - user WeakRefUser -} - -// weakRefPool is a pool of weak references to avoid allocations on the hot path. -var weakRefPool = sync.Pool{ - New: func() any { - return &WeakRef{} - }, -} - -// NewWeakRef acquires a weak reference for the given object. -// -// An optional user will be notified when the last non-weak reference is -// dropped. -// -// Note that you must hold a reference to the object prior to getting a weak -// reference. (But you may drop the non-weak reference after that.) -func NewWeakRef(rc RefCounter, u WeakRefUser) *WeakRef { - w := weakRefPool.Get().(*WeakRef) - w.init(rc, u) - return w -} - -// get attempts to get a normal reference to the underlying object, and returns -// the object. If this weak reference has already been zapped (the object has -// been destroyed) then false is returned. If the object still exists, then -// true is returned. -func (w *WeakRef) get() (RefCounter, bool) { - rc := w.obj.Load().(RefCounter) - if v := reflect.ValueOf(rc); v == reflect.Zero(v.Type()) { - // This pointer has already been zapped by zap() below. We do - // this to ensure that the GC can collect the underlying - // RefCounter objects and they don't hog resources. - return nil, false - } - if !rc.TryIncRef() { - return nil, true - } - return rc, true -} - -// Get attempts to get a normal reference to the underlying object, and returns -// the object. If this fails (the object no longer exists), then nil will be -// returned instead. -func (w *WeakRef) Get() RefCounter { - rc, _ := w.get() - return rc -} - -// Drop drops this weak reference. You should always call drop when you are -// finished with the weak reference. You may not use this object after calling -// drop. -func (w *WeakRef) Drop(ctx context.Context) { - rc, ok := w.get() - if !ok { - // We've been zapped already. When the refcounter has called - // zap, we're guaranteed it's not holding references. - weakRefPool.Put(w) - return - } - if rc == nil { - // The object is in the process of being destroyed. We can't - // remove this from the object's list, nor can we return this - // object to the pool. It'll just be garbage collected. This is - // a rare edge case, so it's not a big deal. - return - } - - // At this point, we have a reference on the object. So destruction - // of the object (and zapping this weak reference) can't race here. - rc.dropWeakRef(w) - - // And now aren't on the object's list of weak references. So it won't - // zap us if this causes the reference count to drop to zero. - rc.DecRef(ctx) - - // Return to the pool. - weakRefPool.Put(w) -} - -// init initializes this weak reference. -func (w *WeakRef) init(rc RefCounter, u WeakRefUser) { - // Reset the contents of the weak reference. - // This is important because we are reseting the atomic value type. - // Otherwise, we could panic here if obj is different than what it was - // the last time this was used. - *w = WeakRef{} - w.user = u - w.obj.Store(rc) - - // In the load path, we may already have a nil value. So we need to - // check whether or not that is the case before calling addWeakRef. - if v := reflect.ValueOf(rc); v != reflect.Zero(v.Type()) { - rc.addWeakRef(w) - } -} - -// zap zaps this weak reference. -func (w *WeakRef) zap() { - // We need to be careful about types here. - // So reflect is involved. But it's not that bad. - rc := w.obj.Load() - typ := reflect.TypeOf(rc) - w.obj.Store(reflect.Zero(typ).Interface()) -} - -// AtomicRefCount keeps a reference count using atomic operations and calls the -// destructor when the count reaches zero. -// -// Do not use AtomicRefCount for new ref-counted objects! It is deprecated in -// favor of the refsvfs2 package. -// -// N.B. To allow the zero-object to be initialized, the count is offset by -// 1, that is, when refCount is n, there are really n+1 references. -// -// +stateify savable -type AtomicRefCount struct { - // refCount is composed of two fields: - // - // [32-bit speculative references]:[32-bit real references] - // - // Speculative references are used for TryIncRef, to avoid a - // CompareAndSwap loop. See IncRef, DecRef and TryIncRef for details of - // how these fields are used. - refCount atomicbitops.Int64 - - // name is the name of the type which owns this ref count. - // - // name is immutable after EnableLeakCheck is called. - name string - - // stack optionally records the caller of EnableLeakCheck. - // - // stack is immutable after EnableLeakCheck is called. - stack []uintptr - - // mu protects the list below. - mu sync.Mutex `state:"nosave"` - - // weakRefs is our collection of weak references. - weakRefs weakRefList `state:"nosave"` } // LeakMode configures the leak checker. type LeakMode uint32 -// TODO(gvisor.dev/issue/1624): Simplify down to two modes (on/off) once vfs1 -// ref counting is gone. const ( - // UninitializedLeakChecking indicates that the leak checker has not yet been initialized. - UninitializedLeakChecking LeakMode = iota - // NoLeakChecking indicates that no effort should be made to check for // leaks. - NoLeakChecking + NoLeakChecking LeakMode = iota // LeaksLogWarning indicates that a warning should be logged when leaks // are found. LeaksLogWarning - // LeaksLogTraces indicates that a trace collected during allocation - // should be logged when leaks are found. - LeaksLogTraces - // LeaksPanic indidcates that a panic should be issued when leaks are found. LeaksPanic ) @@ -251,8 +69,6 @@ func (l *LeakMode) Set(v string) error { *l = NoLeakChecking case "log-names": *l = LeaksLogWarning - case "log-traces": - *l = LeaksLogTraces case "panic": *l = LeaksPanic default: @@ -269,14 +85,10 @@ func (l *LeakMode) Get() any { // String implements flag.Value. func (l LeakMode) String() string { switch l { - case UninitializedLeakChecking: - return "uninitialized" case NoLeakChecking: return "disabled" case LeaksLogWarning: return "log-names" - case LeaksLogTraces: - return "log-traces" case LeaksPanic: return "panic" default: @@ -373,157 +185,6 @@ func FormatStack(pcs []uintptr) string { return trace.String() } -func (r *AtomicRefCount) finalize() { - var note string - switch LeakMode(leakMode.Load()) { - case NoLeakChecking: - return - case UninitializedLeakChecking: - note = "(Leak checker uninitialized): " - } - if n := r.ReadRefs(); n != 0 { - msg := fmt.Sprintf("%sAtomicRefCount %p owned by %q garbage collected with ref count of %d (want 0)", note, r, r.name, n) - if len(r.stack) != 0 { - msg += ":\nCaller:\n" + FormatStack(r.stack) - } else { - msg += " (enable trace logging to debug)" - } - log.Warningf(msg) - } -} - -// EnableLeakCheck checks for reference leaks when the AtomicRefCount gets -// garbage collected. -// -// This function adds a finalizer to the AtomicRefCount, so the AtomicRefCount -// must be at the beginning of its parent. -// -// name is a friendly name that will be listed as the owner of the -// AtomicRefCount in logs. It should be the name of the parent type, including -// package. -func (r *AtomicRefCount) EnableLeakCheck(name string) { - if name == "" { - panic("invalid name") - } - switch LeakMode(leakMode.Load()) { - case NoLeakChecking: - return - case LeaksLogTraces: - r.stack = RecordStack() - } - r.name = name - runtime.SetFinalizer(r, (*AtomicRefCount).finalize) -} - -// ReadRefs returns the current number of references. The returned count is -// inherently racy and is unsafe to use without external synchronization. -func (r *AtomicRefCount) ReadRefs() int64 { - // Account for the internal -1 offset on refcounts. - return r.refCount.Load() + 1 -} - -// IncRef increments this object's reference count. While the count is kept -// greater than zero, the destructor doesn't get called. -// -// The sanity check here is limited to real references, since if they have -// dropped beneath zero then the object should have been destroyed. -// -//go:nosplit -func (r *AtomicRefCount) IncRef() { - if v := r.refCount.Add(1); v <= 0 { - panic("Incrementing non-positive ref count") - } -} - -// TryIncRef attempts to increment the reference count, *unless the count has -// already reached zero*. If false is returned, then the object has already -// been destroyed, and the weak reference is no longer valid. If true if -// returned then a valid reference is now held on the object. -// -// To do this safely without a loop, a speculative reference is first acquired -// on the object. This allows multiple concurrent TryIncRef calls to -// distinguish other TryIncRef calls from genuine references held. -// -//go:nosplit -func (r *AtomicRefCount) TryIncRef() bool { - const speculativeRef = 1 << 32 - v := r.refCount.Add(speculativeRef) - if int32(v) < 0 { - // This object has already been freed. - r.refCount.Add(-speculativeRef) - return false - } - - // Turn into a real reference. - r.refCount.Add(-speculativeRef + 1) - return true -} - -// addWeakRef adds the given weak reference. -func (r *AtomicRefCount) addWeakRef(w *WeakRef) { - r.mu.Lock() - r.weakRefs.PushBack(w) - r.mu.Unlock() -} - -// dropWeakRef drops the given weak reference. -func (r *AtomicRefCount) dropWeakRef(w *WeakRef) { - r.mu.Lock() - r.weakRefs.Remove(w) - r.mu.Unlock() -} - -// DecRefWithDestructor decrements the object's reference count. If the -// resulting count is negative and the destructor is not nil, then the -// destructor will be called. -// -// Note that speculative references are counted here. Since they were added -// prior to real references reaching zero, they will successfully convert to -// real references. In other words, we see speculative references only in the -// following case: -// -// A: TryIncRef [speculative increase => sees non-negative references] -// B: DecRef [real decrease] -// A: TryIncRef [transform speculative to real] -func (r *AtomicRefCount) DecRefWithDestructor(ctx context.Context, destroy func(context.Context)) { - switch v := r.refCount.Add(-1); { - case v < -1: - panic("Decrementing non-positive ref count") - - case v == -1: - // Zap weak references. Note that at this point, all weak - // references are already invalid. That is, TryIncRef() will - // return false due to the reference count check. - r.mu.Lock() - for !r.weakRefs.Empty() { - w := r.weakRefs.Front() - // Capture the callback because w cannot be touched - // after it's zapped -- the owner is free it reuse it - // after that. - user := w.user - r.weakRefs.Remove(w) - w.zap() - - if user != nil { - r.mu.Unlock() - user.WeakRefGone(ctx) - r.mu.Lock() - } - } - r.mu.Unlock() - - // Call the destructor. - if destroy != nil { - destroy(ctx) - } - } -} - -// DecRef decrements this object's reference count. -func (r *AtomicRefCount) DecRef(ctx context.Context) { - r.DecRefWithDestructor(ctx, nil) -} - // OnExit is called on sandbox exit. It runs GC to enqueue refcount finalizers, // which check for reference leaks. There is no way to guarantee that every // finalizer will run before exiting, but this at least ensures that they will diff --git a/pkg/refs/refcounter_state.go b/pkg/refs/refcounter_state.go deleted file mode 100644 index 7987b39a1..000000000 --- a/pkg/refs/refcounter_state.go +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2018 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 refs - -// +stateify savable -type savedReference struct { - obj any -} - -func (w *WeakRef) saveObj() savedReference { - // We load the object directly, because it is typed. This will be - // serialized and loaded as a typed value. - return savedReference{w.obj.Load()} -} - -func (w *WeakRef) loadObj(v savedReference) { - // See note above. This will be serialized and loaded typed. So we're okay - // as long as refs aren't changing during save and load (which they should - // not be). - // - // w.user is loaded before loadObj is called. - w.init(v.obj.(RefCounter), w.user) -} diff --git a/pkg/refs/refcounter_test.go b/pkg/refs/refcounter_test.go deleted file mode 100644 index 6d0dd1018..000000000 --- a/pkg/refs/refcounter_test.go +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2018 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 refs - -import ( - "reflect" - "testing" - - "gvisor.dev/gvisor/pkg/context" - "gvisor.dev/gvisor/pkg/sync" -) - -type testCounter struct { - AtomicRefCount - - // mu protects the boolean below. - mu sync.Mutex - - // destroyed indicates whether this was destroyed. - destroyed bool -} - -func (t *testCounter) DecRef(ctx context.Context) { - t.AtomicRefCount.DecRefWithDestructor(ctx, t.destroy) -} - -func (t *testCounter) destroy(context.Context) { - t.mu.Lock() - defer t.mu.Unlock() - t.destroyed = true -} - -func (t *testCounter) IsDestroyed() bool { - t.mu.Lock() - defer t.mu.Unlock() - return t.destroyed -} - -func newTestCounter() *testCounter { - return &testCounter{destroyed: false} -} - -func TestOneRef(t *testing.T) { - tc := newTestCounter() - tc.DecRef(context.Background()) - - if !tc.IsDestroyed() { - t.Errorf("object should have been destroyed") - } -} - -func TestTwoRefs(t *testing.T) { - tc := newTestCounter() - tc.IncRef() - ctx := context.Background() - tc.DecRef(ctx) - tc.DecRef(ctx) - - if !tc.IsDestroyed() { - t.Errorf("object should have been destroyed") - } -} - -func TestMultiRefs(t *testing.T) { - tc := newTestCounter() - tc.IncRef() - ctx := context.Background() - tc.DecRef(ctx) - - tc.IncRef() - tc.DecRef(ctx) - - tc.DecRef(ctx) - - if !tc.IsDestroyed() { - t.Errorf("object should have been destroyed") - } -} - -func TestWeakRef(t *testing.T) { - tc := newTestCounter() - w := NewWeakRef(tc, nil) - ctx := context.Background() - - // Try resolving. - if x := w.Get(); x == nil { - t.Errorf("weak reference didn't resolve: expected %v, got nil", tc) - } else { - x.DecRef(ctx) - } - - // Try resolving again. - if x := w.Get(); x == nil { - t.Errorf("weak reference didn't resolve: expected %v, got nil", tc) - } else { - x.DecRef(ctx) - } - - // Shouldn't be destroyed yet. (Can't continue if this fails.) - if tc.IsDestroyed() { - t.Fatalf("original object destroyed earlier than expected") - } - - // Drop the original reference. - tc.DecRef(ctx) - - // Assert destroyed. - if !tc.IsDestroyed() { - t.Errorf("original object not destroyed as expected") - } - - // Shouldn't be anything. - if x := w.Get(); x != nil { - t.Errorf("weak reference resolved: expected nil, got %v", x) - } -} - -func TestWeakRefDrop(t *testing.T) { - tc := newTestCounter() - w := NewWeakRef(tc, nil) - ctx := context.Background() - w.Drop(ctx) - - // Just assert the list is empty. - if !tc.weakRefs.Empty() { - t.Errorf("weak reference not dropped") - } - - // Drop the original reference. - tc.DecRef(ctx) -} - -type testWeakRefUser struct { - weakRefGone func() -} - -func (u *testWeakRefUser) WeakRefGone(ctx context.Context) { - u.weakRefGone() -} - -func TestCallback(t *testing.T) { - called := false - tc := newTestCounter() - var w *WeakRef - w = NewWeakRef(tc, &testWeakRefUser{func() { - called = true - - // Check that the weak ref has been zapped. - rc := w.obj.Load().(RefCounter) - if v := reflect.ValueOf(rc); v != reflect.Zero(v.Type()) { - t.Fatalf("Callback called with non-nil ptr") - } - - // Check that we're not holding the mutex by acquiring and - // releasing it. - tc.mu.Lock() - tc.mu.Unlock() - }}) - - // Drop the original reference, this must trigger the callback. - ctx := context.Background() - tc.DecRef(ctx) - - if !called { - t.Fatalf("Callback not called") - } -} diff --git a/pkg/refsvfs2/refs_map.go b/pkg/refs/refs_map.go similarity index 93% rename from pkg/refsvfs2/refs_map.go rename to pkg/refs/refs_map.go index 49605349e..94c510841 100644 --- a/pkg/refsvfs2/refs_map.go +++ b/pkg/refs/refs_map.go @@ -12,13 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. -package refsvfs2 +package refs import ( "fmt" "gvisor.dev/gvisor/pkg/log" - refs_vfs1 "gvisor.dev/gvisor/pkg/refs" "gvisor.dev/gvisor/pkg/sync" ) @@ -50,14 +49,14 @@ func init() { // LeakCheckEnabled returns whether leak checking is enabled. The following // functions should only be called if it returns true. func LeakCheckEnabled() bool { - mode := refs_vfs1.GetLeakMode() - return mode != refs_vfs1.NoLeakChecking && mode != refs_vfs1.UninitializedLeakChecking + mode := GetLeakMode() + return mode != NoLeakChecking } // leakCheckPanicEnabled returns whether DoLeakCheck() should panic when leaks // are detected. func leakCheckPanicEnabled() bool { - return refs_vfs1.GetLeakMode() == refs_vfs1.LeaksPanic + return GetLeakMode() == LeaksPanic } // Register adds obj to the live object map. @@ -116,7 +115,7 @@ func LogDecRef(obj CheckedObject, refs int64) { // obj.LogRefs() should be checked before calling logEvent, in order to avoid // calling any text processing needed to evaluate msg. func logEvent(obj CheckedObject, msg string) { - log.Infof("[%s %p] %s:\n%s", obj.RefType(), obj, msg, refs_vfs1.FormatStack(refs_vfs1.RecordStack())) + log.Infof("[%s %p] %s:\n%s", obj.RefType(), obj, msg, FormatStack(RecordStack())) } // checkOnce makes sure that leak checking is only done once. DoLeakCheck is diff --git a/pkg/refsvfs2/refs_template.go b/pkg/refs/refs_template.go similarity index 92% rename from pkg/refsvfs2/refs_template.go rename to pkg/refs/refs_template.go index 871c7d49f..e805c3e80 100644 --- a/pkg/refsvfs2/refs_template.go +++ b/pkg/refs/refs_template.go @@ -20,7 +20,7 @@ import ( "fmt" "gvisor.dev/gvisor/pkg/atomicbitops" - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" ) // enableLogging indicates whether reference-related events should be logged (with @@ -64,20 +64,20 @@ type Refs struct { // checking. func (r *Refs) InitRefs() { r.refCount.Store(1) - refsvfs2.Register(r) + refs.Register(r) } -// RefType implements refsvfs2.CheckedObject.RefType. +// RefType implements refs.CheckedObject.RefType. func (r *Refs) RefType() string { return fmt.Sprintf("%T", obj)[1:] } -// LeakMessage implements refsvfs2.CheckedObject.LeakMessage. +// LeakMessage implements refs.CheckedObject.LeakMessage. func (r *Refs) LeakMessage() string { return fmt.Sprintf("[%s %p] reference count of %d instead of 0", r.RefType(), r, r.ReadRefs()) } -// LogRefs implements refsvfs2.CheckedObject.LogRefs. +// LogRefs implements refs.CheckedObject.LogRefs. func (r *Refs) LogRefs() bool { return enableLogging } @@ -94,7 +94,7 @@ func (r *Refs) ReadRefs() int64 { func (r *Refs) IncRef() { v := r.refCount.Add(1) if enableLogging { - refsvfs2.LogIncRef(r, v) + refs.LogIncRef(r, v) } if v <= 1 { panic(fmt.Sprintf("Incrementing non-positive count %p on %s", r, r.RefType())) @@ -119,7 +119,7 @@ func (r *Refs) TryIncRef() bool { // Turn into a real reference. v := r.refCount.Add(-speculativeRef + 1) if enableLogging { - refsvfs2.LogTryIncRef(r, v) + refs.LogTryIncRef(r, v) } return true } @@ -139,14 +139,14 @@ func (r *Refs) TryIncRef() bool { func (r *Refs) DecRef(destroy func()) { v := r.refCount.Add(-1) if enableLogging { - refsvfs2.LogDecRef(r, v) + refs.LogDecRef(r, v) } switch { case v < 0: panic(fmt.Sprintf("Decrementing non-positive ref count %p, owned by %s", r, r.RefType())) case v == 0: - refsvfs2.Unregister(r) + refs.Unregister(r) // Call the destructor. if destroy != nil { destroy() @@ -156,6 +156,6 @@ func (r *Refs) DecRef(destroy func()) { func (r *Refs) afterLoad() { if r.ReadRefs() > 0 { - refsvfs2.Register(r) + refs.Register(r) } } diff --git a/pkg/refsvfs2/BUILD b/pkg/refsvfs2/BUILD deleted file mode 100644 index 7c1a8c792..000000000 --- a/pkg/refsvfs2/BUILD +++ /dev/null @@ -1,39 +0,0 @@ -# TODO(gvisor.dev/issue/1624): rename this directory/package to "refs" once VFS1 -# is gone and the current refs package can be deleted. -load("//tools:defs.bzl", "go_library") -load("//tools/go_generics:defs.bzl", "go_template") - -package(licenses = ["notice"]) - -go_template( - name = "refs_template", - srcs = [ - "refs_template.go", - ], - opt_consts = [ - "enableLogging", - ], - types = [ - "T", - ], - visibility = ["//:sandbox"], - deps = [ - "//pkg/log", - "//pkg/refs", - ], -) - -go_library( - name = "refsvfs2", - srcs = [ - "refs.go", - "refs_map.go", - ], - visibility = ["//:sandbox"], - deps = [ - "//pkg/context", - "//pkg/log", - "//pkg/refs", - "//pkg/sync", - ], -) diff --git a/pkg/refsvfs2/refs.go b/pkg/refsvfs2/refs.go deleted file mode 100644 index fe3e4a1ca..000000000 --- a/pkg/refsvfs2/refs.go +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2020 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 refsvfs2 defines an interface for a reference-counted object. -package refsvfs2 - -import ( - "gvisor.dev/gvisor/pkg/context" -) - -// RefCounter is the interface to be implemented by objects that are reference -// counted. -type RefCounter interface { - // IncRef increments the reference counter on the object. - IncRef() - - // DecRef decrements the object's reference count. Users of refs_template.Refs - // may specify a destructor to be called once the reference count reaches zero. - DecRef(ctx context.Context) -} - -// TryRefCounter is like RefCounter but allow the ref increment to be tried. -type TryRefCounter interface { - RefCounter - - // TryIncRef attempts to increment the reference count, but may fail if all - // references have already been dropped, in which case it returns false. If - // true is returned, then a valid reference is now held on the object. - TryIncRef() bool -} diff --git a/pkg/sentry/fsimpl/cgroupfs/BUILD b/pkg/sentry/fsimpl/cgroupfs/BUILD index 3018d1ad0..536dd26a1 100644 --- a/pkg/sentry/fsimpl/cgroupfs/BUILD +++ b/pkg/sentry/fsimpl/cgroupfs/BUILD @@ -23,7 +23,7 @@ go_template_instance( out = "dir_refs.go", package = "cgroupfs", prefix = "dir", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "dir", }, @@ -57,7 +57,6 @@ go_library( "//pkg/hostarch", "//pkg/log", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sentry/arch", "//pkg/sentry/fsimpl/kernfs", "//pkg/sentry/kernel", diff --git a/pkg/sentry/fsimpl/devpts/BUILD b/pkg/sentry/fsimpl/devpts/BUILD index cbb71bcdf..614c05ddb 100644 --- a/pkg/sentry/fsimpl/devpts/BUILD +++ b/pkg/sentry/fsimpl/devpts/BUILD @@ -8,7 +8,7 @@ go_template_instance( out = "root_inode_refs.go", package = "devpts", prefix = "rootInode", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "rootInode", }, @@ -35,7 +35,6 @@ go_library( "//pkg/marshal", "//pkg/marshal/primitive", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/safemem", "//pkg/sentry/arch", "//pkg/sentry/fsimpl/kernfs", diff --git a/pkg/sentry/fsimpl/fuse/BUILD b/pkg/sentry/fsimpl/fuse/BUILD index 955160757..65d4ae37d 100644 --- a/pkg/sentry/fsimpl/fuse/BUILD +++ b/pkg/sentry/fsimpl/fuse/BUILD @@ -20,7 +20,7 @@ go_template_instance( out = "inode_refs.go", package = "fuse", prefix = "inode", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "inode", }, @@ -55,7 +55,6 @@ go_library( "//pkg/marshal", "//pkg/marshal/primitive", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/safemem", "//pkg/sentry/fsimpl/devtmpfs", "//pkg/sentry/fsimpl/kernfs", diff --git a/pkg/sentry/fsimpl/gofer/BUILD b/pkg/sentry/fsimpl/gofer/BUILD index c49ade1d3..182317e26 100644 --- a/pkg/sentry/fsimpl/gofer/BUILD +++ b/pkg/sentry/fsimpl/gofer/BUILD @@ -75,7 +75,6 @@ go_library( "//pkg/metric", "//pkg/p9", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/safemem", "//pkg/sentry/fsimpl/host", "//pkg/sentry/fsimpl/lock", diff --git a/pkg/sentry/fsimpl/gofer/directory.go b/pkg/sentry/fsimpl/gofer/directory.go index 984392b40..056da2048 100644 --- a/pkg/sentry/fsimpl/gofer/directory.go +++ b/pkg/sentry/fsimpl/gofer/directory.go @@ -25,7 +25,7 @@ import ( "gvisor.dev/gvisor/pkg/lisafs" "gvisor.dev/gvisor/pkg/log" "gvisor.dev/gvisor/pkg/p9" - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" "gvisor.dev/gvisor/pkg/sentry/kernel/auth" "gvisor.dev/gvisor/pkg/sentry/kernel/pipe" "gvisor.dev/gvisor/pkg/sentry/socket/unix/transport" @@ -132,7 +132,7 @@ func (d *dentry) createSyntheticChildLocked(opts *createSyntheticOpts) { mmapFD: atomicbitops.FromInt32(-1), nlink: atomicbitops.FromUint32(2), } - refsvfs2.Register(child) + refs.Register(child) switch opts.mode.FileType() { case linux.S_IFDIR: // Nothing else needs to be done. diff --git a/pkg/sentry/fsimpl/gofer/gofer.go b/pkg/sentry/fsimpl/gofer/gofer.go index 8827615f5..d72f8b38c 100644 --- a/pkg/sentry/fsimpl/gofer/gofer.go +++ b/pkg/sentry/fsimpl/gofer/gofer.go @@ -53,8 +53,7 @@ import ( "gvisor.dev/gvisor/pkg/lisafs" "gvisor.dev/gvisor/pkg/log" "gvisor.dev/gvisor/pkg/p9" - refs_vfs1 "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" fslock "gvisor.dev/gvisor/pkg/sentry/fsimpl/lock" "gvisor.dev/gvisor/pkg/sentry/fsutil" "gvisor.dev/gvisor/pkg/sentry/kernel/auth" @@ -730,7 +729,7 @@ func (fs *filesystem) Release(ctx context.Context) { // have released all external resources above rather than relying on dentry // destructors. fs.root may be nil if creating the client or initializing the // root dentry failed in GetFilesystem. - if refs_vfs1.GetLeakMode() != refs_vfs1.NoLeakChecking && fs.root != nil { + if refs.GetLeakMode() != refs.NoLeakChecking && fs.root != nil { fs.renameMu.Lock() fs.root.releaseSyntheticRecursiveLocked(ctx) fs.evictAllCachedDentriesLocked(ctx) @@ -1112,7 +1111,7 @@ func (fs *filesystem) newDentry(ctx context.Context, file p9file, qid p9.QID, ma } } d.vfsd.Init(d) - refsvfs2.Register(d) + refs.Register(d) fs.syncMu.Lock() fs.syncableDentries.PushBack(&d.syncableListEntry) fs.syncMu.Unlock() @@ -1187,7 +1186,7 @@ func (fs *filesystem) newDentryLisa(ctx context.Context, ino *lisafs.Inode) (*de } } d.vfsd.Init(d) - refsvfs2.Register(d) + refs.Register(d) fs.syncMu.Lock() fs.syncableDentries.PushBack(&d.syncableListEntry) fs.syncMu.Unlock() @@ -1813,7 +1812,7 @@ func (d *dentry) IncRef() { // d.checkCachingLocked(). r := d.refs.Add(1) if d.LogRefs() { - refsvfs2.LogIncRef(d, r) + refs.LogIncRef(d, r) } } @@ -1826,7 +1825,7 @@ func (d *dentry) TryIncRef() bool { } if d.refs.CompareAndSwap(r, r+1) { if d.LogRefs() { - refsvfs2.LogTryIncRef(d, r+1) + refs.LogTryIncRef(d, r+1) } return true } @@ -1846,7 +1845,7 @@ func (d *dentry) DecRef(ctx context.Context) { func (d *dentry) decRefNoCaching() int64 { r := d.refs.Add(-1) if d.LogRefs() { - refsvfs2.LogDecRef(d, r) + refs.LogDecRef(d, r) } if r < 0 { panic("gofer.dentry.decRefNoCaching() called without holding a reference") @@ -1854,17 +1853,17 @@ func (d *dentry) decRefNoCaching() int64 { return r } -// RefType implements refsvfs2.CheckedObject.Type. +// RefType implements refs.CheckedObject.Type. func (d *dentry) RefType() string { return "gofer.dentry" } -// LeakMessage implements refsvfs2.CheckedObject.LeakMessage. +// LeakMessage implements refs.CheckedObject.LeakMessage. func (d *dentry) LeakMessage() string { return fmt.Sprintf("[gofer.dentry %p] reference count of %d instead of -1", d, d.refs.Load()) } -// LogRefs implements refsvfs2.CheckedObject.LogRefs. +// LogRefs implements refs.CheckedObject.LogRefs. // // This should only be set to true for debugging purposes, as it can generate an // extremely large amount of output and drastically degrade performance. @@ -2222,7 +2221,7 @@ func (d *dentry) destroyLocked(ctx context.Context) { if d.parent != nil && d.parent.decRefNoCaching() == 0 { d.parent.checkCachingLocked(ctx, true /* renameMuWriteLocked */) } - refsvfs2.Unregister(d) + refs.Unregister(d) } func (d *dentry) isDeleted() bool { diff --git a/pkg/sentry/fsimpl/gofer/save_restore.go b/pkg/sentry/fsimpl/gofer/save_restore.go index 5b42fddef..5a3f99d1b 100644 --- a/pkg/sentry/fsimpl/gofer/save_restore.go +++ b/pkg/sentry/fsimpl/gofer/save_restore.go @@ -26,7 +26,7 @@ import ( "gvisor.dev/gvisor/pkg/hostarch" "gvisor.dev/gvisor/pkg/lisafs" "gvisor.dev/gvisor/pkg/p9" - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" "gvisor.dev/gvisor/pkg/safemem" "gvisor.dev/gvisor/pkg/sentry/vfs" ) @@ -153,7 +153,7 @@ func (d *dentry) afterLoad() { d.writeFD = atomicbitops.FromInt32(-1) d.mmapFD = atomicbitops.FromInt32(-1) if d.refs.Load() != -1 { - refsvfs2.Register(d) + refs.Register(d) } } diff --git a/pkg/sentry/fsimpl/host/BUILD b/pkg/sentry/fsimpl/host/BUILD index e85b66e53..3cc00621b 100644 --- a/pkg/sentry/fsimpl/host/BUILD +++ b/pkg/sentry/fsimpl/host/BUILD @@ -8,7 +8,7 @@ go_template_instance( out = "inode_refs.go", package = "host", prefix = "inode", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "inode", }, @@ -38,7 +38,6 @@ go_library( "//pkg/log", "//pkg/marshal/primitive", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/safemem", "//pkg/sentry/arch", "//pkg/sentry/fsimpl/kernfs", diff --git a/pkg/sentry/fsimpl/kernfs/BUILD b/pkg/sentry/fsimpl/kernfs/BUILD index cc8efe8fc..322b3e4c8 100644 --- a/pkg/sentry/fsimpl/kernfs/BUILD +++ b/pkg/sentry/fsimpl/kernfs/BUILD @@ -44,7 +44,7 @@ go_template_instance( out = "static_directory_refs.go", package = "kernfs", prefix = "StaticDirectory", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "StaticDirectory", }, @@ -55,7 +55,7 @@ go_template_instance( out = "dir_refs.go", package = "kernfs_test", prefix = "dir", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "dir", }, @@ -66,7 +66,7 @@ go_template_instance( out = "readonly_dir_refs.go", package = "kernfs_test", prefix = "readonlyDir", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "readonlyDir", }, @@ -77,7 +77,7 @@ go_template_instance( out = "synthetic_directory_refs.go", package = "kernfs", prefix = "syntheticDirectory", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "syntheticDirectory", }, @@ -127,7 +127,6 @@ go_library( "//pkg/hostarch", "//pkg/log", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/safemem", "//pkg/sentry/fsimpl/lock", "//pkg/sentry/fsutil", @@ -159,7 +158,6 @@ go_test( "//pkg/fspath", "//pkg/log", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sentry/contexttest", "//pkg/sentry/fsimpl/testutil", "//pkg/sentry/kernel/auth", diff --git a/pkg/sentry/fsimpl/kernfs/kernfs.go b/pkg/sentry/fsimpl/kernfs/kernfs.go index de846d00a..18c056c63 100644 --- a/pkg/sentry/fsimpl/kernfs/kernfs.go +++ b/pkg/sentry/fsimpl/kernfs/kernfs.go @@ -66,7 +66,7 @@ import ( "gvisor.dev/gvisor/pkg/context" "gvisor.dev/gvisor/pkg/errors/linuxerr" "gvisor.dev/gvisor/pkg/fspath" - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" "gvisor.dev/gvisor/pkg/sentry/kernel/auth" "gvisor.dev/gvisor/pkg/sentry/vfs" "gvisor.dev/gvisor/pkg/sync" @@ -85,7 +85,7 @@ type Filesystem struct { // deferredDecRefs is a list of dentries waiting to be DecRef()ed. This is // used to defer dentry destruction until mu can be acquired for // writing. Protected by deferredDecRefsMu. - deferredDecRefs []refsvfs2.RefCounter + deferredDecRefs []refs.RefCounter // mu synchronizes the lifetime of Dentries on this filesystem. Holding it // for reading guarantees continued existence of any resolved dentries, but @@ -135,7 +135,7 @@ type Filesystem struct { // deferDecRef defers dropping a dentry ref until the next call to // processDeferredDecRefs{,Locked}. See comment on Filesystem.mu. // This may be called while Filesystem.mu or Dentry.dirMu is locked. -func (fs *Filesystem) deferDecRef(d refsvfs2.RefCounter) { +func (fs *Filesystem) deferDecRef(d refs.RefCounter) { fs.deferredDecRefsMu.Lock() fs.deferredDecRefs = append(fs.deferredDecRefs, d) fs.deferredDecRefsMu.Unlock() @@ -256,7 +256,7 @@ func (d *Dentry) IncRef() { // d.cacheLocked(). r := d.refs.Add(1) if d.LogRefs() { - refsvfs2.LogIncRef(d, r) + refs.LogIncRef(d, r) } } @@ -269,7 +269,7 @@ func (d *Dentry) TryIncRef() bool { } if d.refs.CompareAndSwap(r, r+1) { if d.LogRefs() { - refsvfs2.LogTryIncRef(d, r+1) + refs.LogTryIncRef(d, r+1) } return true } @@ -280,7 +280,7 @@ func (d *Dentry) TryIncRef() bool { func (d *Dentry) DecRef(ctx context.Context) { r := d.refs.Add(-1) if d.LogRefs() { - refsvfs2.LogDecRef(d, r) + refs.LogDecRef(d, r) } if r == 0 { d.fs.mu.Lock() @@ -294,7 +294,7 @@ func (d *Dentry) DecRef(ctx context.Context) { func (d *Dentry) decRefLocked(ctx context.Context) { r := d.refs.Add(-1) if d.LogRefs() { - refsvfs2.LogDecRef(d, r) + refs.LogDecRef(d, r) } if r == 0 { d.cacheLocked(ctx) @@ -415,8 +415,7 @@ func (d *Dentry) evictLocked(ctx context.Context) { // by path traversal. // - d.vfsd.IsDead() is true. func (d *Dentry) destroyLocked(ctx context.Context) { - refs := d.refs.Load() - switch refs { + switch refs := d.refs.Load(); refs { case 0: // Mark the dentry destroyed. d.refs.Store(-1) @@ -432,20 +431,20 @@ func (d *Dentry) destroyLocked(ctx context.Context) { d.parent.decRefLocked(ctx) } - refsvfs2.Unregister(d) + refs.Unregister(d) } -// RefType implements refsvfs2.CheckedObject.Type. +// RefType implements refs.CheckedObject.Type. func (d *Dentry) RefType() string { return "kernfs.Dentry" } -// LeakMessage implements refsvfs2.CheckedObject.LeakMessage. +// LeakMessage implements refs.CheckedObject.LeakMessage. func (d *Dentry) LeakMessage() string { return fmt.Sprintf("[kernfs.Dentry %p] reference count of %d instead of -1", d, d.refs.Load()) } -// LogRefs implements refsvfs2.CheckedObject.LogRefs. +// LogRefs implements refs.CheckedObject.LogRefs. // // This should only be set to true for debugging purposes, as it can generate an // extremely large amount of output and drastically degrade performance. @@ -483,7 +482,7 @@ func (d *Dentry) Init(fs *Filesystem, inode Inode) { if ftype == linux.ModeSymlink { d.flags = atomicbitops.FromUint32(d.flags.RacyLoad() | dflagsIsSymlink) } - refsvfs2.Register(d) + refs.Register(d) } // VFSDentry returns the generic vfs dentry for this kernfs dentry. diff --git a/pkg/sentry/fsimpl/kernfs/save_restore.go b/pkg/sentry/fsimpl/kernfs/save_restore.go index e22592c77..1b2245955 100644 --- a/pkg/sentry/fsimpl/kernfs/save_restore.go +++ b/pkg/sentry/fsimpl/kernfs/save_restore.go @@ -15,13 +15,13 @@ package kernfs import ( - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" ) // afterLoad is invoked by stateify. func (d *Dentry) afterLoad() { if d.refs.Load() >= 0 { - refsvfs2.Register(d) + refs.Register(d) } } diff --git a/pkg/sentry/fsimpl/mqfs/BUILD b/pkg/sentry/fsimpl/mqfs/BUILD index 0c7189942..575315e18 100644 --- a/pkg/sentry/fsimpl/mqfs/BUILD +++ b/pkg/sentry/fsimpl/mqfs/BUILD @@ -8,7 +8,7 @@ go_template_instance( out = "root_inode_refs.go", package = "mqfs", prefix = "rootInode", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "rootInode", }, @@ -29,7 +29,7 @@ go_library( "//pkg/atomicbitops", "//pkg/context", "//pkg/errors/linuxerr", - "//pkg/refsvfs2", + "//pkg/refs", "//pkg/sentry/fsimpl/kernfs", "//pkg/sentry/kernel/auth", "//pkg/sentry/kernel/ipc", diff --git a/pkg/sentry/fsimpl/overlay/BUILD b/pkg/sentry/fsimpl/overlay/BUILD index e8135f715..e5daab158 100644 --- a/pkg/sentry/fsimpl/overlay/BUILD +++ b/pkg/sentry/fsimpl/overlay/BUILD @@ -105,7 +105,6 @@ go_library( "//pkg/hostarch", "//pkg/log", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sentry/arch", "//pkg/sentry/fsimpl/lock", "//pkg/sentry/kernel/auth", diff --git a/pkg/sentry/fsimpl/overlay/overlay.go b/pkg/sentry/fsimpl/overlay/overlay.go index f28f5e456..6d1a5b3af 100644 --- a/pkg/sentry/fsimpl/overlay/overlay.go +++ b/pkg/sentry/fsimpl/overlay/overlay.go @@ -42,7 +42,7 @@ import ( "gvisor.dev/gvisor/pkg/context" "gvisor.dev/gvisor/pkg/errors/linuxerr" "gvisor.dev/gvisor/pkg/fspath" - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" "gvisor.dev/gvisor/pkg/sentry/kernel/auth" "gvisor.dev/gvisor/pkg/sentry/memmap" "gvisor.dev/gvisor/pkg/sentry/vfs" @@ -527,7 +527,7 @@ func (fs *filesystem) newDentry() *dentry { } d.lowerVDs = d.inlineLowerVDs[:0] d.vfsd.Init(d) - refsvfs2.Register(d) + refs.Register(d) return d } @@ -537,7 +537,7 @@ func (d *dentry) IncRef() { // d.checkDropLocked(). r := d.refs.Add(1) if d.LogRefs() { - refsvfs2.LogIncRef(d, r) + refs.LogIncRef(d, r) } } @@ -550,7 +550,7 @@ func (d *dentry) TryIncRef() bool { } if d.refs.CompareAndSwap(r, r+1) { if d.LogRefs() { - refsvfs2.LogTryIncRef(d, r+1) + refs.LogTryIncRef(d, r+1) } return true } @@ -561,7 +561,7 @@ func (d *dentry) TryIncRef() bool { func (d *dentry) DecRef(ctx context.Context) { r := d.refs.Add(-1) if d.LogRefs() { - refsvfs2.LogDecRef(d, r) + refs.LogDecRef(d, r) } if r == 0 { d.fs.renameMu.Lock() @@ -575,7 +575,7 @@ func (d *dentry) DecRef(ctx context.Context) { func (d *dentry) decRefLocked(ctx context.Context) { r := d.refs.Add(-1) if d.LogRefs() { - refsvfs2.LogDecRef(d, r) + refs.LogDecRef(d, r) } if r == 0 { d.checkDropLocked(ctx) @@ -645,20 +645,20 @@ func (d *dentry) destroyLocked(ctx context.Context) { // locking d.fs.renameMu. d.parent.decRefLocked(ctx) } - refsvfs2.Unregister(d) + refs.Unregister(d) } -// RefType implements refsvfs2.CheckedObject.Type. +// RefType implements refs.CheckedObject.Type. func (d *dentry) RefType() string { return "overlay.dentry" } -// LeakMessage implements refsvfs2.CheckedObject.LeakMessage. +// LeakMessage implements refs.CheckedObject.LeakMessage. func (d *dentry) LeakMessage() string { return fmt.Sprintf("[overlay.dentry %p] reference count of %d instead of -1", d, d.refs.Load()) } -// LogRefs implements refsvfs2.CheckedObject.LogRefs. +// LogRefs implements refs.CheckedObject.LogRefs. // // This should only be set to true for debugging purposes, as it can generate an // extremely large amount of output and drastically degrade performance. diff --git a/pkg/sentry/fsimpl/overlay/save_restore.go b/pkg/sentry/fsimpl/overlay/save_restore.go index 61f408704..94fb439e6 100644 --- a/pkg/sentry/fsimpl/overlay/save_restore.go +++ b/pkg/sentry/fsimpl/overlay/save_restore.go @@ -15,11 +15,11 @@ package overlay import ( - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" ) func (d *dentry) afterLoad() { if d.refs.Load() != -1 { - refsvfs2.Register(d) + refs.Register(d) } } diff --git a/pkg/sentry/fsimpl/proc/BUILD b/pkg/sentry/fsimpl/proc/BUILD index 8d9615d2b..4344ee594 100644 --- a/pkg/sentry/fsimpl/proc/BUILD +++ b/pkg/sentry/fsimpl/proc/BUILD @@ -8,7 +8,7 @@ go_template_instance( out = "fd_dir_inode_refs.go", package = "proc", prefix = "fdDirInode", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "fdDirInode", }, @@ -19,7 +19,7 @@ go_template_instance( out = "fd_info_dir_inode_refs.go", package = "proc", prefix = "fdInfoDirInode", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "fdInfoDirInode", }, @@ -30,7 +30,7 @@ go_template_instance( out = "subtasks_inode_refs.go", package = "proc", prefix = "subtasksInode", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "subtasksInode", }, @@ -41,7 +41,7 @@ go_template_instance( out = "task_inode_refs.go", package = "proc", prefix = "taskInode", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "taskInode", }, @@ -52,7 +52,7 @@ go_template_instance( out = "tasks_inode_refs.go", package = "proc", prefix = "tasksInode", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "tasksInode", }, @@ -86,7 +86,6 @@ go_library( "//pkg/hostarch", "//pkg/log", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/safemem", "//pkg/sentry/fsbridge", "//pkg/sentry/fsimpl/kernfs", diff --git a/pkg/sentry/fsimpl/sys/BUILD b/pkg/sentry/fsimpl/sys/BUILD index 7edc41616..e03cb015b 100644 --- a/pkg/sentry/fsimpl/sys/BUILD +++ b/pkg/sentry/fsimpl/sys/BUILD @@ -8,7 +8,7 @@ go_template_instance( out = "dir_refs.go", package = "sys", prefix = "dir", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "dir", }, @@ -31,7 +31,6 @@ go_library( "//pkg/errors/linuxerr", "//pkg/log", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sentry/arch", "//pkg/sentry/fsimpl/kernfs", "//pkg/sentry/inet", diff --git a/pkg/sentry/fsimpl/tmpfs/BUILD b/pkg/sentry/fsimpl/tmpfs/BUILD index f91d6cd5e..0e3122a6f 100644 --- a/pkg/sentry/fsimpl/tmpfs/BUILD +++ b/pkg/sentry/fsimpl/tmpfs/BUILD @@ -32,7 +32,7 @@ go_template_instance( out = "inode_refs.go", package = "tmpfs", prefix = "inode", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "inode", }, @@ -96,7 +96,6 @@ go_library( "//pkg/hostarch", "//pkg/log", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/safemem", "//pkg/sentry/arch", "//pkg/sentry/fsimpl/lock", diff --git a/pkg/sentry/inet/BUILD b/pkg/sentry/inet/BUILD index 156addaf2..6f6c3fbed 100644 --- a/pkg/sentry/inet/BUILD +++ b/pkg/sentry/inet/BUILD @@ -11,7 +11,7 @@ go_template_instance( out = "namespace_refs.go", package = "inet", prefix = "namespace", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "Namespace", }, @@ -42,7 +42,7 @@ go_library( "//pkg/abi/linux", "//pkg/atomicbitops", "//pkg/context", - "//pkg/refsvfs2", + "//pkg/refs", "//pkg/tcpip", "//pkg/tcpip/stack", ], diff --git a/pkg/sentry/kernel/BUILD b/pkg/sentry/kernel/BUILD index 6b83f81d5..7be60e830 100644 --- a/pkg/sentry/kernel/BUILD +++ b/pkg/sentry/kernel/BUILD @@ -133,7 +133,7 @@ go_template_instance( out = "fd_table_refs.go", package = "kernel", prefix = "FDTable", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "FDTable", }, @@ -144,7 +144,7 @@ go_template_instance( out = "fs_context_refs.go", package = "kernel", prefix = "FSContext", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "FSContext", }, @@ -155,7 +155,7 @@ go_template_instance( out = "ipc_namespace_refs.go", package = "kernel", prefix = "IPCNamespace", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "IPCNamespace", }, @@ -166,7 +166,7 @@ go_template_instance( out = "process_group_refs.go", package = "kernel", prefix = "ProcessGroup", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "ProcessGroup", }, @@ -177,7 +177,7 @@ go_template_instance( out = "session_refs.go", package = "kernel", prefix = "Session", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "Session", }, @@ -302,7 +302,6 @@ go_library( "//pkg/marshal/primitive", "//pkg/metric", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/safemem", "//pkg/secio", "//pkg/sentry/arch", diff --git a/pkg/sentry/kernel/abstract_socket_namespace.go b/pkg/sentry/kernel/abstract_socket_namespace.go index 5d86a04f3..57c98e714 100644 --- a/pkg/sentry/kernel/abstract_socket_namespace.go +++ b/pkg/sentry/kernel/abstract_socket_namespace.go @@ -19,7 +19,7 @@ import ( "golang.org/x/sys/unix" "gvisor.dev/gvisor/pkg/context" - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" "gvisor.dev/gvisor/pkg/sentry/socket/unix/transport" "gvisor.dev/gvisor/pkg/sync" ) @@ -27,7 +27,7 @@ import ( // +stateify savable type abstractEndpoint struct { ep transport.BoundEndpoint - socket refsvfs2.TryRefCounter + socket refs.TryRefCounter name string ns *AbstractSocketNamespace } @@ -57,7 +57,7 @@ func NewAbstractSocketNamespace() *AbstractSocketNamespace { // its backing socket. type boundEndpoint struct { transport.BoundEndpoint - socket refsvfs2.TryRefCounter + socket refs.TryRefCounter } // Release implements transport.BoundEndpoint.Release. @@ -89,7 +89,7 @@ func (a *AbstractSocketNamespace) BoundEndpoint(name string) transport.BoundEndp // // When the last reference managed by socket is dropped, ep may be removed from the // namespace. -func (a *AbstractSocketNamespace) Bind(ctx context.Context, name string, ep transport.BoundEndpoint, socket refsvfs2.TryRefCounter) error { +func (a *AbstractSocketNamespace) Bind(ctx context.Context, name string, ep transport.BoundEndpoint, socket refs.TryRefCounter) error { a.mu.Lock() defer a.mu.Unlock() @@ -109,7 +109,7 @@ func (a *AbstractSocketNamespace) Bind(ctx context.Context, name string, ep tran // Remove removes the specified socket at name from the abstract socket // namespace, if it has not yet been replaced. -func (a *AbstractSocketNamespace) Remove(name string, socket refsvfs2.TryRefCounter) { +func (a *AbstractSocketNamespace) Remove(name string, socket refs.TryRefCounter) { a.mu.Lock() defer a.mu.Unlock() diff --git a/pkg/sentry/kernel/ipc_namespace.go b/pkg/sentry/kernel/ipc_namespace.go index 50b4e015e..d75d501f1 100644 --- a/pkg/sentry/kernel/ipc_namespace.go +++ b/pkg/sentry/kernel/ipc_namespace.go @@ -98,7 +98,7 @@ func (i *IPCNamespace) PosixQueues() *mq.Registry { return i.posixQueues } -// DecRef implements refsvfs2.RefCounter.DecRef. +// DecRef implements refs.RefCounter.DecRef. func (i *IPCNamespace) DecRef(ctx context.Context) { i.IPCNamespaceRefs.DecRef(func() { i.shms.Release(ctx) diff --git a/pkg/sentry/kernel/shm/BUILD b/pkg/sentry/kernel/shm/BUILD index 245a58e9d..b76177d9f 100644 --- a/pkg/sentry/kernel/shm/BUILD +++ b/pkg/sentry/kernel/shm/BUILD @@ -11,7 +11,7 @@ go_template_instance( }, package = "shm", prefix = "Shm", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "Shm", }, @@ -33,7 +33,6 @@ go_library( "//pkg/hostarch", "//pkg/log", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sentry/device", "//pkg/sentry/kernel/auth", "//pkg/sentry/kernel/ipc", diff --git a/pkg/sentry/mm/BUILD b/pkg/sentry/mm/BUILD index 055d0f7b1..ccd054c7d 100644 --- a/pkg/sentry/mm/BUILD +++ b/pkg/sentry/mm/BUILD @@ -122,7 +122,7 @@ go_template_instance( out = "aio_mappable_refs.go", package = "mm", prefix = "aioMappable", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "aioMappable", }, @@ -133,7 +133,7 @@ go_template_instance( out = "special_mappable_refs.go", package = "mm", prefix = "SpecialMappable", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "SpecialMappable", }, @@ -179,7 +179,6 @@ go_library( "//pkg/hostarch", "//pkg/log", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/safecopy", "//pkg/safemem", "//pkg/sentry/arch", diff --git a/pkg/sentry/socket/unix/BUILD b/pkg/sentry/socket/unix/BUILD index 5c9f62819..cf0534b48 100644 --- a/pkg/sentry/socket/unix/BUILD +++ b/pkg/sentry/socket/unix/BUILD @@ -8,7 +8,7 @@ go_template_instance( out = "socket_refs.go", package = "unix", prefix = "socket", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "Socket", }, @@ -33,7 +33,6 @@ go_library( "//pkg/log", "//pkg/marshal", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/safemem", "//pkg/sentry/arch", "//pkg/sentry/device", diff --git a/pkg/sentry/socket/unix/transport/BUILD b/pkg/sentry/socket/unix/transport/BUILD index 60575d520..5110d5581 100644 --- a/pkg/sentry/socket/unix/transport/BUILD +++ b/pkg/sentry/socket/unix/transport/BUILD @@ -45,7 +45,7 @@ go_template_instance( out = "queue_refs.go", package = "transport", prefix = "queue", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "queue", }, @@ -56,7 +56,7 @@ go_template_instance( out = "host_connected_endpoint_refs.go", package = "transport", prefix = "HostConnectedEndpoint", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "HostConnectedEndpoint", }, @@ -93,7 +93,6 @@ go_library( "//pkg/ilist", "//pkg/log", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sentry/hostfd", "//pkg/sentry/inet", "//pkg/sentry/uniqueid", diff --git a/pkg/sentry/vfs/BUILD b/pkg/sentry/vfs/BUILD index 2f45dd809..e17e9af41 100644 --- a/pkg/sentry/vfs/BUILD +++ b/pkg/sentry/vfs/BUILD @@ -81,7 +81,7 @@ go_template_instance( out = "file_description_refs.go", package = "vfs", prefix = "FileDescription", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "FileDescription", }, @@ -92,7 +92,7 @@ go_template_instance( out = "mount_namespace_refs.go", package = "vfs", prefix = "MountNamespace", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "MountNamespace", }, @@ -103,7 +103,7 @@ go_template_instance( out = "filesystem_refs.go", package = "vfs", prefix = "Filesystem", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "Filesystem", }, @@ -162,7 +162,6 @@ go_library( "//pkg/hostarch", "//pkg/log", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/safemem", "//pkg/sentry/arch", "//pkg/sentry/fsimpl/lock", diff --git a/pkg/sentry/vfs/mount.go b/pkg/sentry/vfs/mount.go index f0da76fff..5904adb9e 100644 --- a/pkg/sentry/vfs/mount.go +++ b/pkg/sentry/vfs/mount.go @@ -26,7 +26,7 @@ import ( "gvisor.dev/gvisor/pkg/cleanup" "gvisor.dev/gvisor/pkg/context" "gvisor.dev/gvisor/pkg/errors/linuxerr" - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" "gvisor.dev/gvisor/pkg/sentry/kernel/auth" ) @@ -135,7 +135,7 @@ func newMount(vfs *VirtualFilesystem, fs *Filesystem, root *Dentry, mntns *Mount if opts.ReadOnly { mnt.setReadOnlyLocked(true) } - refsvfs2.Register(mnt) + refs.Register(mnt) return mnt } @@ -688,7 +688,7 @@ func (mnt *Mount) tryIncMountedRef() bool { } if mnt.refs.CompareAndSwap(r, r+1) { if mnt.LogRefs() { - refsvfs2.LogTryIncRef(mnt, r+1) + refs.LogTryIncRef(mnt, r+1) } return true } @@ -701,7 +701,7 @@ func (mnt *Mount) IncRef() { // the eager-unmount bit. r := mnt.refs.Add(1) if mnt.LogRefs() { - refsvfs2.LogIncRef(mnt, r) + refs.LogIncRef(mnt, r) } } @@ -709,10 +709,10 @@ func (mnt *Mount) IncRef() { func (mnt *Mount) DecRef(ctx context.Context) { r := mnt.refs.Add(-1) if mnt.LogRefs() { - refsvfs2.LogDecRef(mnt, r) + refs.LogDecRef(mnt, r) } if r&^math.MinInt64 == 0 { // mask out MSB - refsvfs2.Unregister(mnt) + refs.Unregister(mnt) mnt.destroy(ctx) } } @@ -735,17 +735,17 @@ func (mnt *Mount) destroy(ctx context.Context) { } } -// RefType implements refsvfs2.CheckedObject.Type. +// RefType implements refs.CheckedObject.Type. func (mnt *Mount) RefType() string { return "vfs.Mount" } -// LeakMessage implements refsvfs2.CheckedObject.LeakMessage. +// LeakMessage implements refs.CheckedObject.LeakMessage. func (mnt *Mount) LeakMessage() string { return fmt.Sprintf("[vfs.Mount %p] reference count of %d instead of 0", mnt, mnt.refs.Load()) } -// LogRefs implements refsvfs2.CheckedObject.LogRefs. +// LogRefs implements refs.CheckedObject.LogRefs. // // This should only be set to true for debugging purposes, as it can generate an // extremely large amount of output and drastically degrade performance. diff --git a/pkg/sentry/vfs/save_restore.go b/pkg/sentry/vfs/save_restore.go index 42bf95ee2..a3b736f8b 100644 --- a/pkg/sentry/vfs/save_restore.go +++ b/pkg/sentry/vfs/save_restore.go @@ -18,7 +18,7 @@ import ( "sync/atomic" "gvisor.dev/gvisor/pkg/context" - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" "gvisor.dev/gvisor/pkg/waiter" ) @@ -123,7 +123,7 @@ func (mnt *Mount) loadKey(vd VirtualDentry) { mnt.setKey(vd) } // afterLoad is called by stateify. func (mnt *Mount) afterLoad() { if mnt.refs.Load() != 0 { - refsvfs2.Register(mnt) + refs.Register(mnt) } } diff --git a/pkg/tcpip/BUILD b/pkg/tcpip/BUILD index 3408ff270..405d03a81 100644 --- a/pkg/tcpip/BUILD +++ b/pkg/tcpip/BUILD @@ -60,7 +60,6 @@ deps_test( "//pkg/pool", "//pkg/rand", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sleep", "//pkg/state", "//pkg/state/wire", diff --git a/pkg/tcpip/link/ethernet/BUILD b/pkg/tcpip/link/ethernet/BUILD index 0c5831bfd..f592665ff 100644 --- a/pkg/tcpip/link/ethernet/BUILD +++ b/pkg/tcpip/link/ethernet/BUILD @@ -22,7 +22,6 @@ go_test( ":ethernet", "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/header", "//pkg/tcpip/link/channel", diff --git a/pkg/tcpip/link/ethernet/ethernet_test.go b/pkg/tcpip/link/ethernet/ethernet_test.go index ccc0eea10..0980caa76 100644 --- a/pkg/tcpip/link/ethernet/ethernet_test.go +++ b/pkg/tcpip/link/ethernet/ethernet_test.go @@ -21,7 +21,6 @@ import ( "gvisor.dev/gvisor/pkg/bufferv2" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/header" "gvisor.dev/gvisor/pkg/tcpip/link/channel" @@ -167,6 +166,6 @@ func TestWritePacketToRemoteAddHeader(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/link/fdbased/BUILD b/pkg/tcpip/link/fdbased/BUILD index f7f7073c8..a3be48982 100644 --- a/pkg/tcpip/link/fdbased/BUILD +++ b/pkg/tcpip/link/fdbased/BUILD @@ -34,7 +34,6 @@ go_test( deps = [ "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/header", "//pkg/tcpip/stack", diff --git a/pkg/tcpip/link/fdbased/endpoint_test.go b/pkg/tcpip/link/fdbased/endpoint_test.go index 711c230c6..95faab674 100644 --- a/pkg/tcpip/link/fdbased/endpoint_test.go +++ b/pkg/tcpip/link/fdbased/endpoint_test.go @@ -31,7 +31,6 @@ import ( "golang.org/x/sys/unix" "gvisor.dev/gvisor/pkg/bufferv2" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/header" "gvisor.dev/gvisor/pkg/tcpip/stack" @@ -647,6 +646,6 @@ func TestDispatchPacketFormat(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/link/muxed/BUILD b/pkg/tcpip/link/muxed/BUILD index 7bdd3baf2..55545db46 100644 --- a/pkg/tcpip/link/muxed/BUILD +++ b/pkg/tcpip/link/muxed/BUILD @@ -22,7 +22,6 @@ go_test( deps = [ "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/link/fdbased", "//pkg/tcpip/network/ipv4", diff --git a/pkg/tcpip/link/muxed/injectable_test.go b/pkg/tcpip/link/muxed/injectable_test.go index 5e2b85153..e00ac84b8 100644 --- a/pkg/tcpip/link/muxed/injectable_test.go +++ b/pkg/tcpip/link/muxed/injectable_test.go @@ -23,7 +23,6 @@ import ( "golang.org/x/sys/unix" "gvisor.dev/gvisor/pkg/bufferv2" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/link/fdbased" "gvisor.dev/gvisor/pkg/tcpip/network/ipv4" @@ -120,6 +119,6 @@ func makeTestInjectableEndpoint(t *testing.T) (*InjectableEndpoint, *os.File, tc func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/link/nested/BUILD b/pkg/tcpip/link/nested/BUILD index ceb661ca4..d383dae6f 100644 --- a/pkg/tcpip/link/nested/BUILD +++ b/pkg/tcpip/link/nested/BUILD @@ -24,7 +24,6 @@ go_test( ], deps = [ "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/header", "//pkg/tcpip/link/nested", diff --git a/pkg/tcpip/link/nested/nested_test.go b/pkg/tcpip/link/nested/nested_test.go index aead15713..89a8e8741 100644 --- a/pkg/tcpip/link/nested/nested_test.go +++ b/pkg/tcpip/link/nested/nested_test.go @@ -19,7 +19,6 @@ import ( "testing" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/header" "gvisor.dev/gvisor/pkg/tcpip/link/nested" @@ -119,6 +118,6 @@ func TestNestedLinkEndpoint(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/link/packetsocket/BUILD b/pkg/tcpip/link/packetsocket/BUILD index ea2273a5a..e51246c8c 100644 --- a/pkg/tcpip/link/packetsocket/BUILD +++ b/pkg/tcpip/link/packetsocket/BUILD @@ -20,7 +20,6 @@ go_test( deps = [ ":packetsocket", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/header", "//pkg/tcpip/stack", diff --git a/pkg/tcpip/link/packetsocket/packetsocket_test.go b/pkg/tcpip/link/packetsocket/packetsocket_test.go index fb1d9371f..7771f2a9d 100644 --- a/pkg/tcpip/link/packetsocket/packetsocket_test.go +++ b/pkg/tcpip/link/packetsocket/packetsocket_test.go @@ -20,7 +20,6 @@ import ( "testing" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/header" "gvisor.dev/gvisor/pkg/tcpip/link/packetsocket" @@ -160,6 +159,6 @@ func TestPacketDispatch(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/link/qdisc/fifo/BUILD b/pkg/tcpip/link/qdisc/fifo/BUILD index d77b6ddd1..bfb4744c7 100644 --- a/pkg/tcpip/link/qdisc/fifo/BUILD +++ b/pkg/tcpip/link/qdisc/fifo/BUILD @@ -26,7 +26,6 @@ go_test( ":fifo", "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sync", "//pkg/tcpip", "//pkg/tcpip/stack", diff --git a/pkg/tcpip/link/qdisc/fifo/qdisc_test.go b/pkg/tcpip/link/qdisc/fifo/qdisc_test.go index 660ddbadc..024b64edf 100644 --- a/pkg/tcpip/link/qdisc/fifo/qdisc_test.go +++ b/pkg/tcpip/link/qdisc/fifo/qdisc_test.go @@ -22,7 +22,6 @@ import ( "gvisor.dev/gvisor/pkg/bufferv2" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/sync" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/link/qdisc/fifo" @@ -118,6 +117,6 @@ func TestWriteMorePacketsThanBatchSize(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/link/sharedmem/BUILD b/pkg/tcpip/link/sharedmem/BUILD index 838d6f29f..b153dd63b 100644 --- a/pkg/tcpip/link/sharedmem/BUILD +++ b/pkg/tcpip/link/sharedmem/BUILD @@ -42,7 +42,6 @@ go_test( deps = [ "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sync", "//pkg/tcpip", "//pkg/tcpip/header", @@ -61,7 +60,6 @@ go_test( ":sharedmem", "//pkg/log", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/adapters/gonet", "//pkg/tcpip/header", diff --git a/pkg/tcpip/link/sharedmem/sharedmem_server_test.go b/pkg/tcpip/link/sharedmem/sharedmem_server_test.go index 3860c71b6..cdcf40540 100644 --- a/pkg/tcpip/link/sharedmem/sharedmem_server_test.go +++ b/pkg/tcpip/link/sharedmem/sharedmem_server_test.go @@ -31,7 +31,6 @@ import ( "golang.org/x/sys/unix" "gvisor.dev/gvisor/pkg/log" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/adapters/gonet" "gvisor.dev/gvisor/pkg/tcpip/header" @@ -404,6 +403,6 @@ func TestClientBulkTransfer(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/link/sharedmem/sharedmem_test.go b/pkg/tcpip/link/sharedmem/sharedmem_test.go index 158663443..d7c219107 100644 --- a/pkg/tcpip/link/sharedmem/sharedmem_test.go +++ b/pkg/tcpip/link/sharedmem/sharedmem_test.go @@ -28,7 +28,6 @@ import ( "golang.org/x/sys/unix" "gvisor.dev/gvisor/pkg/bufferv2" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/sync" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/header" @@ -825,6 +824,6 @@ func TestCloseWhileWaitingToPost(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/link/tun/BUILD b/pkg/tcpip/link/tun/BUILD index 4c81fed9b..3c7b5215b 100644 --- a/pkg/tcpip/link/tun/BUILD +++ b/pkg/tcpip/link/tun/BUILD @@ -8,7 +8,7 @@ go_template_instance( out = "tun_endpoint_refs.go", package = "tun", prefix = "tunEndpoint", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "tunEndpoint", }, @@ -31,7 +31,6 @@ go_library( "//pkg/errors/linuxerr", "//pkg/log", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sync", "//pkg/tcpip", "//pkg/tcpip/header", diff --git a/pkg/tcpip/link/waitable/BUILD b/pkg/tcpip/link/waitable/BUILD index ef04d0e93..e15c2ab2e 100644 --- a/pkg/tcpip/link/waitable/BUILD +++ b/pkg/tcpip/link/waitable/BUILD @@ -24,7 +24,6 @@ go_test( library = ":waitable", deps = [ "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/header", "//pkg/tcpip/stack", diff --git a/pkg/tcpip/link/waitable/waitable_test.go b/pkg/tcpip/link/waitable/waitable_test.go index a34bc6e82..9d7655b63 100644 --- a/pkg/tcpip/link/waitable/waitable_test.go +++ b/pkg/tcpip/link/waitable/waitable_test.go @@ -19,7 +19,6 @@ import ( "testing" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/header" "gvisor.dev/gvisor/pkg/tcpip/stack" @@ -221,6 +220,6 @@ func TestOtherMethods(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/network/BUILD b/pkg/tcpip/network/BUILD index db36a08bd..4e75bd875 100644 --- a/pkg/tcpip/network/BUILD +++ b/pkg/tcpip/network/BUILD @@ -13,7 +13,6 @@ go_test( deps = [ "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sync", "//pkg/tcpip", "//pkg/tcpip/checker", diff --git a/pkg/tcpip/network/arp/BUILD b/pkg/tcpip/network/arp/BUILD index 0d1139b69..0cd4c24bd 100644 --- a/pkg/tcpip/network/arp/BUILD +++ b/pkg/tcpip/network/arp/BUILD @@ -28,7 +28,6 @@ go_test( ":arp", "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/faketime", "//pkg/tcpip/header", @@ -49,7 +48,6 @@ go_test( library = ":arp", deps = [ "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/stack", "//pkg/tcpip/testutil", diff --git a/pkg/tcpip/network/arp/arp_test.go b/pkg/tcpip/network/arp/arp_test.go index 6064daa7a..21755fe28 100644 --- a/pkg/tcpip/network/arp/arp_test.go +++ b/pkg/tcpip/network/arp/arp_test.go @@ -23,7 +23,6 @@ import ( "github.com/google/go-cmp/cmp/cmpopts" "gvisor.dev/gvisor/pkg/bufferv2" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/faketime" "gvisor.dev/gvisor/pkg/tcpip/header" @@ -714,6 +713,6 @@ func TestDADARPRequestPacket(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/network/arp/stats_test.go b/pkg/tcpip/network/arp/stats_test.go index 2c7113016..16a8355f8 100644 --- a/pkg/tcpip/network/arp/stats_test.go +++ b/pkg/tcpip/network/arp/stats_test.go @@ -20,7 +20,6 @@ import ( "testing" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/stack" "gvisor.dev/gvisor/pkg/tcpip/testutil" @@ -59,6 +58,6 @@ func TestMultiCounterStatsInitialization(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/network/internal/fragmentation/BUILD b/pkg/tcpip/network/internal/fragmentation/BUILD index 42f5ecb5b..826738aca 100644 --- a/pkg/tcpip/network/internal/fragmentation/BUILD +++ b/pkg/tcpip/network/internal/fragmentation/BUILD @@ -48,7 +48,6 @@ go_test( deps = [ "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip/faketime", "//pkg/tcpip/network/internal/testutil", "//pkg/tcpip/stack", diff --git a/pkg/tcpip/network/internal/fragmentation/main_test.go b/pkg/tcpip/network/internal/fragmentation/main_test.go index 6eb7b9795..2c1ce4b43 100644 --- a/pkg/tcpip/network/internal/fragmentation/main_test.go +++ b/pkg/tcpip/network/internal/fragmentation/main_test.go @@ -19,12 +19,11 @@ import ( "testing" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" ) func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/network/internal/multicast/BUILD b/pkg/tcpip/network/internal/multicast/BUILD index 1c8c326ff..3b2619d7a 100644 --- a/pkg/tcpip/network/internal/multicast/BUILD +++ b/pkg/tcpip/network/internal/multicast/BUILD @@ -22,7 +22,6 @@ go_test( deps = [ "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/faketime", "//pkg/tcpip/stack", @@ -40,7 +39,6 @@ go_test( ":multicast", "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/faketime", "//pkg/tcpip/stack", diff --git a/pkg/tcpip/network/internal/multicast/example_test.go b/pkg/tcpip/network/internal/multicast/example_test.go index 1ad3f6f7b..6c623b4a5 100644 --- a/pkg/tcpip/network/internal/multicast/example_test.go +++ b/pkg/tcpip/network/internal/multicast/example_test.go @@ -22,7 +22,6 @@ import ( "gvisor.dev/gvisor/pkg/bufferv2" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/faketime" "gvisor.dev/gvisor/pkg/tcpip/network/internal/multicast" @@ -136,6 +135,6 @@ func newPacketBuffer(body string) stack.PacketBufferPtr { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/network/internal/multicast/route_table_test.go b/pkg/tcpip/network/internal/multicast/route_table_test.go index be32da260..b74682284 100644 --- a/pkg/tcpip/network/internal/multicast/route_table_test.go +++ b/pkg/tcpip/network/internal/multicast/route_table_test.go @@ -23,7 +23,6 @@ import ( "github.com/google/go-cmp/cmp/cmpopts" "gvisor.dev/gvisor/pkg/bufferv2" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/faketime" "gvisor.dev/gvisor/pkg/tcpip/stack" @@ -514,6 +513,6 @@ func TestSetLastUsedTimestamp(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/network/ip_test.go b/pkg/tcpip/network/ip_test.go index 81e891fac..d2d9a3059 100644 --- a/pkg/tcpip/network/ip_test.go +++ b/pkg/tcpip/network/ip_test.go @@ -22,7 +22,7 @@ import ( "github.com/google/go-cmp/cmp" "gvisor.dev/gvisor/pkg/bufferv2" - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" "gvisor.dev/gvisor/pkg/sync" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" @@ -245,7 +245,7 @@ func newTestContext() testContext { func (ctx *testContext) cleanup() { ctx.s.Close() ctx.s.Wait() - refsvfs2.DoRepeatedLeakCheck() + refs.DoRepeatedLeakCheck() } func buildIPv4Route(ctx testContext, local, remote tcpip.Address) (*stack.Route, tcpip.Error) { diff --git a/pkg/tcpip/network/ipv4/BUILD b/pkg/tcpip/network/ipv4/BUILD index d69c60df2..0295a82c2 100644 --- a/pkg/tcpip/network/ipv4/BUILD +++ b/pkg/tcpip/network/ipv4/BUILD @@ -38,7 +38,6 @@ go_test( deps = [ "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sync", "//pkg/tcpip", "//pkg/tcpip/checker", diff --git a/pkg/tcpip/network/ipv4/igmp_test.go b/pkg/tcpip/network/ipv4/igmp_test.go index c907fde3a..09f7f9418 100644 --- a/pkg/tcpip/network/ipv4/igmp_test.go +++ b/pkg/tcpip/network/ipv4/igmp_test.go @@ -19,7 +19,7 @@ import ( "time" "gvisor.dev/gvisor/pkg/bufferv2" - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" "gvisor.dev/gvisor/pkg/tcpip/faketime" @@ -75,7 +75,7 @@ func (ctx igmpTestContext) cleanup() { ctx.s.Close() ctx.s.Wait() ctx.ep.Close() - refsvfs2.DoRepeatedLeakCheck() + refs.DoRepeatedLeakCheck() } func newIGMPTestContext(t *testing.T, igmpEnabled bool) igmpTestContext { diff --git a/pkg/tcpip/network/ipv4/ipv4_test.go b/pkg/tcpip/network/ipv4/ipv4_test.go index 26183e01a..8d3bfa10d 100644 --- a/pkg/tcpip/network/ipv4/ipv4_test.go +++ b/pkg/tcpip/network/ipv4/ipv4_test.go @@ -27,7 +27,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "gvisor.dev/gvisor/pkg/bufferv2" - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" "gvisor.dev/gvisor/pkg/sync" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" @@ -82,7 +82,7 @@ func newTestContext() testContext { func (ctx testContext) cleanup() { ctx.s.Close() ctx.s.Wait() - refsvfs2.DoRepeatedLeakCheck() + refs.DoRepeatedLeakCheck() } func TestExcludeBroadcast(t *testing.T) { diff --git a/pkg/tcpip/network/ipv4/main_test.go b/pkg/tcpip/network/ipv4/main_test.go index 33d605f95..10dfd2dfc 100644 --- a/pkg/tcpip/network/ipv4/main_test.go +++ b/pkg/tcpip/network/ipv4/main_test.go @@ -19,12 +19,11 @@ import ( "testing" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" ) func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/network/ipv6/BUILD b/pkg/tcpip/network/ipv6/BUILD index a48f51d44..1be82fd2f 100644 --- a/pkg/tcpip/network/ipv6/BUILD +++ b/pkg/tcpip/network/ipv6/BUILD @@ -41,7 +41,6 @@ go_test( deps = [ "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sync", "//pkg/tcpip", "//pkg/tcpip/checker", @@ -71,7 +70,6 @@ go_test( ":ipv6", "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/checker", "//pkg/tcpip/faketime", diff --git a/pkg/tcpip/network/ipv6/icmp_test.go b/pkg/tcpip/network/ipv6/icmp_test.go index 59d790f65..2b793aa17 100644 --- a/pkg/tcpip/network/ipv6/icmp_test.go +++ b/pkg/tcpip/network/ipv6/icmp_test.go @@ -24,7 +24,7 @@ import ( "github.com/google/go-cmp/cmp" "golang.org/x/time/rate" "gvisor.dev/gvisor/pkg/bufferv2" - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" "gvisor.dev/gvisor/pkg/tcpip/checksum" @@ -222,7 +222,7 @@ func (c *testContext) cleanup() { // does not guarantee that all packets will reach refcount zero until // after an asynchronous followup from neighborEntry.notifyCompletionLocked(). c.clock.RunImmediatelyScheduledJobs() - refsvfs2.DoRepeatedLeakCheck() + refs.DoRepeatedLeakCheck() } func TestICMPCounts(t *testing.T) { diff --git a/pkg/tcpip/network/ipv6/main_test.go b/pkg/tcpip/network/ipv6/main_test.go index ddbb655f5..4a96a7d1e 100644 --- a/pkg/tcpip/network/ipv6/main_test.go +++ b/pkg/tcpip/network/ipv6/main_test.go @@ -19,12 +19,11 @@ import ( "testing" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" ) func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/network/ipv6/mld_test.go b/pkg/tcpip/network/ipv6/mld_test.go index c57f6cd03..9415f50f5 100644 --- a/pkg/tcpip/network/ipv6/mld_test.go +++ b/pkg/tcpip/network/ipv6/mld_test.go @@ -23,7 +23,6 @@ import ( "gvisor.dev/gvisor/pkg/bufferv2" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" "gvisor.dev/gvisor/pkg/tcpip/faketime" @@ -666,6 +665,6 @@ func TestMLDSkipProtocol(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/network/main_test.go b/pkg/tcpip/network/main_test.go index 12f1226a8..b419b5a32 100644 --- a/pkg/tcpip/network/main_test.go +++ b/pkg/tcpip/network/main_test.go @@ -19,12 +19,11 @@ import ( "testing" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" ) func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/network/multicast_group_test.go b/pkg/tcpip/network/multicast_group_test.go index 0b9a2bbfb..9e5900580 100644 --- a/pkg/tcpip/network/multicast_group_test.go +++ b/pkg/tcpip/network/multicast_group_test.go @@ -21,7 +21,7 @@ import ( "time" "gvisor.dev/gvisor/pkg/bufferv2" - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" "gvisor.dev/gvisor/pkg/tcpip/faketime" @@ -143,7 +143,7 @@ func (ctx *multicastTestContext) cleanup() { ctx.s.Close() ctx.s.Wait() ctx.e.Close() - refsvfs2.DoRepeatedLeakCheck() + refs.DoRepeatedLeakCheck() } func createStackWithLinkEndpoint(t *testing.T, v4, mgpEnabled bool, e stack.LinkEndpoint) (*stack.Stack, *faketime.ManualClock) { diff --git a/pkg/tcpip/stack/BUILD b/pkg/tcpip/stack/BUILD index a2a2c192b..6248ff237 100644 --- a/pkg/tcpip/stack/BUILD +++ b/pkg/tcpip/stack/BUILD @@ -32,7 +32,7 @@ go_template_instance( out = "packet_buffer_refs.go", package = "stack", prefix = "packetBuffer", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "packetBuffer", }, @@ -92,7 +92,7 @@ go_library( "//pkg/ilist", "//pkg/log", "//pkg/rand", - "//pkg/refsvfs2", + "//pkg/refs", "//pkg/sleep", "//pkg/sync", "//pkg/tcpip", diff --git a/pkg/tcpip/tests/integration/BUILD b/pkg/tcpip/tests/integration/BUILD index dcc1b46b1..40abb1c21 100644 --- a/pkg/tcpip/tests/integration/BUILD +++ b/pkg/tcpip/tests/integration/BUILD @@ -182,7 +182,6 @@ go_test( srcs = ["multicast_forward_test.go"], deps = [ "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/checker", "//pkg/tcpip/faketime", diff --git a/pkg/tcpip/tests/integration/multicast_forward_test.go b/pkg/tcpip/tests/integration/multicast_forward_test.go index 892823fe4..7df740446 100644 --- a/pkg/tcpip/tests/integration/multicast_forward_test.go +++ b/pkg/tcpip/tests/integration/multicast_forward_test.go @@ -23,7 +23,6 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" "gvisor.dev/gvisor/pkg/tcpip/faketime" @@ -1214,6 +1213,6 @@ func TestMulticastForwarding(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/transport/icmp/BUILD b/pkg/tcpip/transport/icmp/BUILD index 0a20fb3a3..f8485845c 100644 --- a/pkg/tcpip/transport/icmp/BUILD +++ b/pkg/tcpip/transport/icmp/BUILD @@ -49,7 +49,6 @@ go_test( deps = [ ":icmp", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/checker", "//pkg/tcpip/checksum", diff --git a/pkg/tcpip/transport/icmp/icmp_test.go b/pkg/tcpip/transport/icmp/icmp_test.go index 4084caa8e..51626d448 100644 --- a/pkg/tcpip/transport/icmp/icmp_test.go +++ b/pkg/tcpip/transport/icmp/icmp_test.go @@ -20,7 +20,6 @@ import ( "testing" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" "gvisor.dev/gvisor/pkg/tcpip/checksum" @@ -448,6 +447,6 @@ func TestReceiveControlMessages(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/transport/internal/network/BUILD b/pkg/tcpip/transport/internal/network/BUILD index b38bf365d..2d5b38269 100644 --- a/pkg/tcpip/transport/internal/network/BUILD +++ b/pkg/tcpip/transport/internal/network/BUILD @@ -33,7 +33,6 @@ go_test( ":network", "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/checker", "//pkg/tcpip/faketime", diff --git a/pkg/tcpip/transport/internal/network/endpoint_test.go b/pkg/tcpip/transport/internal/network/endpoint_test.go index d757d0f7a..b5ea1882b 100644 --- a/pkg/tcpip/transport/internal/network/endpoint_test.go +++ b/pkg/tcpip/transport/internal/network/endpoint_test.go @@ -22,7 +22,6 @@ import ( "github.com/google/go-cmp/cmp" "gvisor.dev/gvisor/pkg/bufferv2" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" "gvisor.dev/gvisor/pkg/tcpip/faketime" @@ -331,6 +330,6 @@ func TestBindNICID(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/transport/raw/BUILD b/pkg/tcpip/transport/raw/BUILD index 4d2eaef5a..5012f4723 100644 --- a/pkg/tcpip/transport/raw/BUILD +++ b/pkg/tcpip/transport/raw/BUILD @@ -47,7 +47,6 @@ go_test( srcs = ["raw_test.go"], deps = [ "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/checker", "//pkg/tcpip/header", diff --git a/pkg/tcpip/transport/raw/raw_test.go b/pkg/tcpip/transport/raw/raw_test.go index 45aea4b64..0f722d2ea 100644 --- a/pkg/tcpip/transport/raw/raw_test.go +++ b/pkg/tcpip/transport/raw/raw_test.go @@ -19,7 +19,6 @@ import ( "testing" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" "gvisor.dev/gvisor/pkg/tcpip/header" @@ -158,6 +157,6 @@ func TestReceiveControlMessage(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/transport/tcp/BUILD b/pkg/tcpip/transport/tcp/BUILD index d8c1e9e2f..f63075d08 100644 --- a/pkg/tcpip/transport/tcp/BUILD +++ b/pkg/tcpip/transport/tcp/BUILD @@ -20,7 +20,7 @@ go_template_instance( out = "tcp_segment_refs.go", package = "tcp", prefix = "segment", - template = "//pkg/refsvfs2:refs_template", + template = "//pkg/refs:refs_template", types = { "T": "segment", }, @@ -74,7 +74,7 @@ go_library( "//pkg/bufferv2", "//pkg/log", "//pkg/rand", - "//pkg/refsvfs2", + "//pkg/refs", "//pkg/sleep", "//pkg/sync", "//pkg/tcpip", @@ -104,7 +104,6 @@ go_test( deps = [ "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sleep", "//pkg/tcpip/faketime", "//pkg/tcpip/stack", diff --git a/pkg/tcpip/transport/tcp/main_test.go b/pkg/tcpip/transport/tcp/main_test.go index ed6c4332a..97a71a920 100644 --- a/pkg/tcpip/transport/tcp/main_test.go +++ b/pkg/tcpip/transport/tcp/main_test.go @@ -19,12 +19,11 @@ import ( "testing" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" ) func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/transport/tcp/test/e2e/BUILD b/pkg/tcpip/transport/tcp/test/e2e/BUILD index f92c8afef..5a674fbd8 100644 --- a/pkg/tcpip/transport/tcp/test/e2e/BUILD +++ b/pkg/tcpip/transport/tcp/test/e2e/BUILD @@ -12,7 +12,6 @@ go_test( "//pkg/bufferv2", "//pkg/rand", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sync", "//pkg/tcpip", "//pkg/tcpip/checker", @@ -40,7 +39,6 @@ go_test( deps = [ ":e2e", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/checker", "//pkg/tcpip/header", @@ -76,7 +74,6 @@ go_test( deps = [ ":e2e", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/checker", "//pkg/tcpip/header", @@ -102,7 +99,6 @@ go_test( srcs = ["sack_scoreboard_test.go"], deps = [ "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip/header", "//pkg/tcpip/seqnum", "//pkg/tcpip/transport/tcp", @@ -116,7 +112,6 @@ go_test( deps = [ ":e2e", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/checker", "//pkg/tcpip/header", @@ -135,7 +130,6 @@ go_test( ":e2e", "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/header", "//pkg/tcpip/seqnum", @@ -153,7 +147,6 @@ go_test( ":e2e", "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/checker", "//pkg/tcpip/header", @@ -175,7 +168,6 @@ go_test( deps = [ ":e2e", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/header", "//pkg/tcpip/transport/tcp", diff --git a/pkg/tcpip/transport/tcp/test/e2e/dual_stack_test.go b/pkg/tcpip/transport/tcp/test/e2e/dual_stack_test.go index c93d49f45..ef50eda63 100644 --- a/pkg/tcpip/transport/tcp/test/e2e/dual_stack_test.go +++ b/pkg/tcpip/transport/tcp/test/e2e/dual_stack_test.go @@ -22,7 +22,6 @@ import ( "github.com/google/go-cmp/cmp" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" "gvisor.dev/gvisor/pkg/tcpip/header" @@ -563,6 +562,6 @@ func TestMain(m *testing.M) { // Allow TCP async work to complete to avoid false reports of leaks. // TODO(gvisor.dev/issue/5940): Use fake clock in tests. time.Sleep(1 * time.Second) - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/transport/tcp/test/e2e/forwarder_test.go b/pkg/tcpip/transport/tcp/test/e2e/forwarder_test.go index c5b0cbb88..1edd12d5e 100644 --- a/pkg/tcpip/transport/tcp/test/e2e/forwarder_test.go +++ b/pkg/tcpip/transport/tcp/test/e2e/forwarder_test.go @@ -20,7 +20,6 @@ import ( "time" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" "gvisor.dev/gvisor/pkg/tcpip/header" @@ -176,6 +175,6 @@ func TestMain(m *testing.M) { // Allow TCP async work to complete to avoid false reports of leaks. // TODO(gvisor.dev/issue/5940): Use fake clock in tests. time.Sleep(1 * time.Second) - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/transport/tcp/test/e2e/sack_scoreboard_test.go b/pkg/tcpip/transport/tcp/test/e2e/sack_scoreboard_test.go index c1967fb39..5d931b49e 100644 --- a/pkg/tcpip/transport/tcp/test/e2e/sack_scoreboard_test.go +++ b/pkg/tcpip/transport/tcp/test/e2e/sack_scoreboard_test.go @@ -20,7 +20,6 @@ import ( "time" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip/header" "gvisor.dev/gvisor/pkg/tcpip/seqnum" "gvisor.dev/gvisor/pkg/tcpip/transport/tcp" @@ -258,6 +257,6 @@ func TestMain(m *testing.M) { // Allow TCP async work to complete to avoid false reports of leaks. // TODO(gvisor.dev/issue/5940): Use fake clock in tests. time.Sleep(1 * time.Second) - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/transport/tcp/test/e2e/tcp_noracedetector_test.go b/pkg/tcpip/transport/tcp/test/e2e/tcp_noracedetector_test.go index 0a68b6d9d..1643cdb62 100644 --- a/pkg/tcpip/transport/tcp/test/e2e/tcp_noracedetector_test.go +++ b/pkg/tcpip/transport/tcp/test/e2e/tcp_noracedetector_test.go @@ -27,7 +27,6 @@ import ( "time" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/header" "gvisor.dev/gvisor/pkg/tcpip/transport/tcp" @@ -565,6 +564,6 @@ func TestMain(m *testing.M) { // Allow TCP async work to complete to avoid false reports of leaks. // TODO(gvisor.dev/issue/5940): Use fake clock in tests. time.Sleep(1 * time.Second) - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/transport/tcp/test/e2e/tcp_rack_test.go b/pkg/tcpip/transport/tcp/test/e2e/tcp_rack_test.go index 98e76a38c..0fd3322cb 100644 --- a/pkg/tcpip/transport/tcp/test/e2e/tcp_rack_test.go +++ b/pkg/tcpip/transport/tcp/test/e2e/tcp_rack_test.go @@ -23,7 +23,6 @@ import ( "gvisor.dev/gvisor/pkg/bufferv2" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/header" "gvisor.dev/gvisor/pkg/tcpip/seqnum" @@ -1074,6 +1073,6 @@ func TestMain(m *testing.M) { // Allow TCP async work to complete to avoid false reports of leaks. // TODO(gvisor.dev/issue/5940): Use fake clock in tests. time.Sleep(1 * time.Second) - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/transport/tcp/test/e2e/tcp_sack_test.go b/pkg/tcpip/transport/tcp/test/e2e/tcp_sack_test.go index b188911ea..9aaaef41e 100644 --- a/pkg/tcpip/transport/tcp/test/e2e/tcp_sack_test.go +++ b/pkg/tcpip/transport/tcp/test/e2e/tcp_sack_test.go @@ -25,7 +25,6 @@ import ( "gvisor.dev/gvisor/pkg/bufferv2" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" "gvisor.dev/gvisor/pkg/tcpip/header" @@ -955,6 +954,6 @@ func TestMain(m *testing.M) { // Allow TCP async work to complete to avoid false reports of leaks. // TODO(gvisor.dev/issue/5940): Use fake clock in tests. time.Sleep(1 * time.Second) - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/transport/tcp/test/e2e/tcp_test.go b/pkg/tcpip/transport/tcp/test/e2e/tcp_test.go index b5b06a741..6e7339d76 100644 --- a/pkg/tcpip/transport/tcp/test/e2e/tcp_test.go +++ b/pkg/tcpip/transport/tcp/test/e2e/tcp_test.go @@ -28,7 +28,6 @@ import ( "gvisor.dev/gvisor/pkg/bufferv2" "gvisor.dev/gvisor/pkg/rand" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/sync" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" @@ -9283,6 +9282,6 @@ func TestMain(m *testing.M) { // Allow TCP async work to complete to avoid false reports of leaks. // TODO(gvisor.dev/issue/5940): Use fake clock in tests. time.Sleep(1 * time.Second) - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/transport/tcp/test/e2e/tcp_timestamp_test.go b/pkg/tcpip/transport/tcp/test/e2e/tcp_timestamp_test.go index 543a23d2c..6b6dd0ca9 100644 --- a/pkg/tcpip/transport/tcp/test/e2e/tcp_timestamp_test.go +++ b/pkg/tcpip/transport/tcp/test/e2e/tcp_timestamp_test.go @@ -23,7 +23,6 @@ import ( "github.com/google/go-cmp/cmp" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" "gvisor.dev/gvisor/pkg/tcpip/header" @@ -322,6 +321,6 @@ func TestMain(m *testing.M) { // Allow TCP async work to complete to avoid false reports of leaks. // TODO(gvisor.dev/issue/5940): Use fake clock in tests. time.Sleep(1 * time.Second) - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/transport/tcpconntrack/BUILD b/pkg/tcpip/transport/tcpconntrack/BUILD index 584d48541..d6221fe7d 100644 --- a/pkg/tcpip/transport/tcpconntrack/BUILD +++ b/pkg/tcpip/transport/tcpconntrack/BUILD @@ -19,7 +19,6 @@ go_test( deps = [ ":tcpconntrack", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip/header", ], ) diff --git a/pkg/tcpip/transport/tcpconntrack/tcp_conntrack_test.go b/pkg/tcpip/transport/tcpconntrack/tcp_conntrack_test.go index fc8a52694..2bda57bcb 100644 --- a/pkg/tcpip/transport/tcpconntrack/tcp_conntrack_test.go +++ b/pkg/tcpip/transport/tcpconntrack/tcp_conntrack_test.go @@ -19,7 +19,6 @@ import ( "testing" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip/header" "gvisor.dev/gvisor/pkg/tcpip/transport/tcpconntrack" ) @@ -522,6 +521,6 @@ func dataLen(tcp header.TCP) int { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/pkg/tcpip/transport/testing/context/BUILD b/pkg/tcpip/transport/testing/context/BUILD index 61d781ce9..de1792495 100644 --- a/pkg/tcpip/transport/testing/context/BUILD +++ b/pkg/tcpip/transport/testing/context/BUILD @@ -14,7 +14,7 @@ go_library( ], deps = [ "//pkg/bufferv2", - "//pkg/refsvfs2", + "//pkg/refs", "//pkg/tcpip", "//pkg/tcpip/checker", "//pkg/tcpip/checksum", diff --git a/pkg/tcpip/transport/testing/context/context.go b/pkg/tcpip/transport/testing/context/context.go index 708398279..bfbd9da1b 100644 --- a/pkg/tcpip/transport/testing/context/context.go +++ b/pkg/tcpip/transport/testing/context/context.go @@ -24,7 +24,7 @@ import ( "github.com/google/go-cmp/cmp" "golang.org/x/time/rate" "gvisor.dev/gvisor/pkg/bufferv2" - "gvisor.dev/gvisor/pkg/refsvfs2" + "gvisor.dev/gvisor/pkg/refs" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" "gvisor.dev/gvisor/pkg/tcpip/faketime" @@ -156,7 +156,7 @@ func (c *Context) Cleanup() { if c.EP != nil { c.EP.Close() } - refsvfs2.DoRepeatedLeakCheck() + refs.DoRepeatedLeakCheck() } // CreateEndpoint creates the Context's Endpoint. diff --git a/pkg/tcpip/transport/udp/BUILD b/pkg/tcpip/transport/udp/BUILD index 61f5db821..1ed99be76 100644 --- a/pkg/tcpip/transport/udp/BUILD +++ b/pkg/tcpip/transport/udp/BUILD @@ -51,7 +51,6 @@ go_test( ":udp", "//pkg/bufferv2", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/checker", "//pkg/tcpip/checksum", diff --git a/pkg/tcpip/transport/udp/udp_test.go b/pkg/tcpip/transport/udp/udp_test.go index d92a3cfee..b76f2d68e 100644 --- a/pkg/tcpip/transport/udp/udp_test.go +++ b/pkg/tcpip/transport/udp/udp_test.go @@ -26,7 +26,6 @@ import ( "gvisor.dev/gvisor/pkg/bufferv2" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/checker" "gvisor.dev/gvisor/pkg/tcpip/checksum" @@ -2268,6 +2267,6 @@ func TestWritePayloadSizeTooBig(t *testing.T) { func TestMain(m *testing.M) { refs.SetLeakMode(refs.LeaksPanic) code := m.Run() - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() os.Exit(code) } diff --git a/runsc/boot/BUILD b/runsc/boot/BUILD index a0c117ef0..a3b75795f 100644 --- a/runsc/boot/BUILD +++ b/runsc/boot/BUILD @@ -43,7 +43,6 @@ go_library( "//pkg/memutil", "//pkg/rand", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sentry/arch", "//pkg/sentry/arch:registers_go_proto", "//pkg/sentry/control", diff --git a/runsc/boot/loader.go b/runsc/boot/loader.go index 3d87e3ab8..1ea32490f 100644 --- a/runsc/boot/loader.go +++ b/runsc/boot/loader.go @@ -35,7 +35,6 @@ import ( "gvisor.dev/gvisor/pkg/memutil" "gvisor.dev/gvisor/pkg/rand" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/sentry/control" "gvisor.dev/gvisor/pkg/sentry/fdimport" "gvisor.dev/gvisor/pkg/sentry/fsimpl/host" @@ -1048,7 +1047,7 @@ func (l *Loader) waitContainer(cid string, waitStatus *uint32) error { // sandbox is killed by a signal after the ContMgrWait request is completed. if l.root.procArgs.ContainerID == cid { // All sentry-created resources should have been released at this point. - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() _ = coverage.Report() } return nil diff --git a/runsc/cli/BUILD b/runsc/cli/BUILD index ba44d7b44..33ca1d4ab 100644 --- a/runsc/cli/BUILD +++ b/runsc/cli/BUILD @@ -13,7 +13,6 @@ go_library( "//pkg/coverage", "//pkg/log", "//pkg/refs", - "//pkg/refsvfs2", "//pkg/sentry/platform", "//runsc/cmd", "//runsc/cmd/trace", diff --git a/runsc/cli/main.go b/runsc/cli/main.go index 57adae2a8..8d29c0afb 100644 --- a/runsc/cli/main.go +++ b/runsc/cli/main.go @@ -30,7 +30,6 @@ import ( "gvisor.dev/gvisor/pkg/coverage" "gvisor.dev/gvisor/pkg/log" "gvisor.dev/gvisor/pkg/refs" - "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/sentry/platform" "gvisor.dev/gvisor/runsc/cmd" "gvisor.dev/gvisor/runsc/cmd/trace" @@ -262,7 +261,7 @@ func Main(version string) { var ws unix.WaitStatus subcmdCode := subcommands.Execute(context.Background(), conf, &ws) // Check for leaks and write coverage report before os.Exit(). - refsvfs2.DoLeakCheck() + refs.DoLeakCheck() _ = coverage.Report() if subcmdCode == subcommands.ExitSuccess { log.Infof("Exiting with status: %v", ws)