diff options
author | Jamie Liu <jamieliu@google.com> | 2019-12-20 16:43:34 -0800 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2019-12-20 16:44:54 -0800 |
commit | 21a14e9532365fc5eb51a5796ab66cf7f007ede3 (patch) | |
tree | b8e8f08ae0f5aafef08e3d378ebe3f2aae2e5305 | |
parent | 08c39e25870821f84f6da1915ceefe13b3196e02 (diff) |
Add vfs.Dentry.Children().
PiperOrigin-RevId: 286660774
-rw-r--r-- | pkg/sentry/vfs/dentry.go | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/pkg/sentry/vfs/dentry.go b/pkg/sentry/vfs/dentry.go index 40f4c1d09..6209eb053 100644 --- a/pkg/sentry/vfs/dentry.go +++ b/pkg/sentry/vfs/dentry.go @@ -85,12 +85,12 @@ type Dentry struct { // mounts is accessed using atomic memory operations. mounts uint32 - // mu synchronizes disowning and mounting over this Dentry. - mu sync.Mutex - // children are child Dentries. children map[string]*Dentry + // mu synchronizes disowning and mounting over this Dentry. + mu sync.Mutex + // impl is the DentryImpl associated with this Dentry. impl is immutable. // This should be the last field in Dentry. impl DentryImpl @@ -199,6 +199,18 @@ func (d *Dentry) HasChildren() bool { return len(d.children) != 0 } +// Children returns a map containing all of d's children. +func (d *Dentry) Children() map[string]*Dentry { + if !d.HasChildren() { + return nil + } + m := make(map[string]*Dentry) + for name, child := range d.children { + m[name] = child + } + return m +} + // InsertChild makes child a child of d with the given name. // // InsertChild is a mutator of d and child. |