} func (benchDir) ReadDir(intr fs.Intr) ([]fuse.Dirent, fuse.Error) { l := []fuse.Dirent{ {Inode: 2, Name: "bench", Type: fuse.DT_File}, } return l, nil } type benchFile struct { conf *benchConfig } var _ = fs.Node(benchFile{}) var _ = fs.NodeOpener(benchFile{}) var _ = fs.NodeFsyncer(benchFile{}) var _ = fs.Handle(benchFile{}) var _ = fs.HandleReader(benchFile{}) var _ = fs.HandleWriter(benchFile{}) func (benchFile) Attr() fuse.Attr { return fuse.Attr{Inode: 2, Mode: 0644, Size: 9999999999999999} } func (f benchFile) Open(req *fuse.OpenRequest, resp *fuse.OpenResponse, intr fs.Intr) (fs.Handle, fuse.Error) { if f.conf.directIO { resp.Flags |= fuse.OpenDirectIO } // TODO configurable? resp.Flags |= fuse.OpenKeepCache return f, nil
} func (r *Setattrs) RecordedSetattr() fuse.SetattrRequest { val := r.rec.Recorded() if val == nil { return fuse.SetattrRequest{} } return *(val.(*fuse.SetattrRequest)) } // Fsyncs records an Fsync request and its fields. type Fsyncs struct { rec RequestRecorder } var _ = fs.NodeFsyncer(&Fsyncs{}) func (r *Fsyncs) Fsync(req *fuse.FsyncRequest, intr fs.Intr) fuse.Error { tmp := *req r.rec.RecordRequest(&tmp) return nil } func (r *Fsyncs) RecordedFsync() fuse.FsyncRequest { val := r.rec.Recorded() if val == nil { return fuse.FsyncRequest{} } return *(val.(*fuse.FsyncRequest)) }