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) { de := &wire.Dirent{ Inode: f.inode, } manifest, err := f.blob.Save() if err != nil { return nil, err }
"bazil.org/fuse" "bazil.org/fuse/fs" ) type nothing struct{} // ReleaseWaiter notes whether a FUSE Release call has been seen. // // Releases are not guaranteed to happen synchronously with any client // call, so they must be waited for. type ReleaseWaiter struct { once sync.Once seen chan nothing } var _ = fs.HandleReleaser(&ReleaseWaiter{}) func (r *ReleaseWaiter) init() { r.once.Do(func() { r.seen = make(chan nothing, 1) }) } func (r *ReleaseWaiter) Release(req *fuse.ReleaseRequest, intr fs.Intr) fuse.Error { r.init() close(r.seen) return nil } // WaitForRelease waits for Release to be called. //