// mu protects the fields below. mu sync.Mutex name string blob *blobs.Blob dirty dirtiness handles uint32 // when was this entry last changed // TODO: written time.Time } var _ = node(&file{}) var _ = fs.Node(&file{}) var _ = fs.NodeForgetter(&file{}) var _ = fs.NodeOpener(&file{}) var _ = fs.NodeSetattrer(&file{}) var _ = fs.NodeFsyncer(&file{}) var _ = fs.HandleFlusher(&file{}) var _ = fs.HandleReader(&file{}) var _ = fs.HandleWriter(&file{}) var _ = fs.HandleReleaser(&file{}) func (f *file) setName(name string) { f.mu.Lock() defer f.mu.Unlock() f.name = name } func (f *file) marshalInternal() (*wire.Dirent, error) {
name string // each in-memory child, so we can return the same node on // multiple Lookups and know what to do on .save() // // each child also stores its own name; if the value in the child, // looked up in this map, does not equal the child, that means the // child has been unlinked active map[string]node } var _ = node(&dir{}) var _ = fs.Node(&dir{}) var _ = fs.NodeCreater(&dir{}) var _ = fs.NodeForgetter(&dir{}) var _ = fs.NodeMkdirer(&dir{}) var _ = fs.NodeRemover(&dir{}) var _ = fs.NodeRenamer(&dir{}) var _ = fs.NodeStringLookuper(&dir{}) var _ = fs.HandleReadDirer(&dir{}) func (d *dir) setName(name string) { d.mu.Lock() defer d.mu.Unlock() d.name = name } func (d *dir) Attr() fuse.Attr { return fuse.Attr{ Inode: d.inode,