wiresnap "bazil.org/bazil/fs/snap/wire" "bazil.org/bazil/fs/wire" "bazil.org/bazil/tokens" "bazil.org/bazil/util/env" "bazil.org/fuse" "bazil.org/fuse/fs" ) type listSnaps struct { fs *Volume rootDir *dir } var _ = fs.Node(&listSnaps{}) var _ = fs.NodeMkdirer(&listSnaps{}) var _ = fs.NodeStringLookuper(&listSnaps{}) var _ = fs.Handle(&listSnaps{}) var _ = fs.HandleReadDirer(&listSnaps{}) func (d *listSnaps) Attr() fuse.Attr { return fuse.Attr{ Inode: tokens.InodeSnap, Mode: os.ModeDir | 0755, Nlink: 1, Uid: env.MyUID, Gid: env.MyGID, } } var _ = fs.NodeStringLookuper(&listSnaps{})
"github.com/restic/restic/backend" "github.com/restic/restic/repository" "golang.org/x/net/context" ) type SnapshotWithId struct { *restic.Snapshot backend.ID } // These lines statically ensure that a *SnapshotsDir implement the given // interfaces; a misplaced refactoring of the implementation that breaks // the interface will be catched by the compiler var _ = fs.HandleReadDirAller(&SnapshotsDir{}) var _ = fs.NodeStringLookuper(&SnapshotsDir{}) type SnapshotsDir struct { repo *repository.Repository ownerIsRoot bool // knownSnapshots maps snapshot timestamp to the snapshot sync.RWMutex knownSnapshots map[string]SnapshotWithId } func NewSnapshotsDir(repo *repository.Repository, ownerIsRoot bool) *SnapshotsDir { return &SnapshotsDir{ repo: repo, knownSnapshots: make(map[string]SnapshotWithId), ownerIsRoot: ownerIsRoot,
package fuse import ( "os" "bazil.org/fuse" "bazil.org/fuse/fs" "golang.org/x/net/context" "github.com/restic/restic" "github.com/restic/restic/repository" ) // Statically ensure that *dir implement those interface var _ = fs.HandleReadDirAller(&dir{}) var _ = fs.NodeStringLookuper(&dir{}) type dir struct { repo *repository.Repository items map[string]*restic.Node inode uint64 } func newDir(repo *repository.Repository, node *restic.Node) (*dir, error) { tree, err := restic.LoadTree(repo, node.Subtree) if err != nil { return nil, err } items := make(map[string]*restic.Node) for _, node := range tree.Nodes { items[node.Name] = node
a.Mode = 0666 return nil } // Dir can be embedded in a struct to make it look like a directory. type Dir struct{} func (f Dir) Attr(ctx context.Context, a *fuse.Attr) error { a.Mode = os.ModeDir | 0777 return nil } // ChildMap is a directory with child nodes looked up from a map. type ChildMap map[string]fs.Node var _ = fs.Node(ChildMap{}) var _ = fs.NodeStringLookuper(ChildMap{}) func (f ChildMap) Attr(ctx context.Context, a *fuse.Attr) error { a.Mode = os.ModeDir | 0777 return nil } func (f ChildMap) Lookup(ctx context.Context, name string) (fs.Node, error) { child, ok := f[name] if !ok { return nil, fuse.ENOENT } return child, nil }
reader: r, } return child, nil default: return nil, fmt.Errorf("unknown entry in tree, %v", de) } } type fuseDir struct { chunkStore chunks.Store reader *Reader } var _ = fusefs.Node(fuseDir{}) var _ = fusefs.NodeStringLookuper(fuseDir{}) var _ = fusefs.NodeCreater(fuseDir{}) var _ = fusefs.Handle(fuseDir{}) var _ = fusefs.HandleReadDirAller(fuseDir{}) func (d fuseDir) Attr(ctx context.Context, a *fuse.Attr) error { a.Mode = os.ModeDir | 0555 a.Uid = env.MyUID a.Gid = env.MyGID return nil } const _MAX_INT64 = 9223372036854775807 func (d fuseDir) Lookup(ctx context.Context, name string) (fusefs.Node, error) { de, err := d.reader.Lookup(name)
func (benchFS) Init(req *fuse.InitRequest, resp *fuse.InitResponse, intr fs.Intr) fuse.Error { resp.MaxReadahead = 64 * 1024 * 1024 resp.Flags |= fuse.InitAsyncRead return nil } func (f benchFS) Root() (fs.Node, fuse.Error) { return benchDir{conf: f.conf}, nil } type benchDir struct { conf *benchConfig } var _ = fs.Node(benchDir{}) var _ = fs.NodeStringLookuper(benchDir{}) var _ = fs.Handle(benchDir{}) var _ = fs.HandleReadDirer(benchDir{}) func (benchDir) Attr() fuse.Attr { return fuse.Attr{Inode: 1, Mode: os.ModeDir | 0555} } func (d benchDir) Lookup(name string, intr fs.Intr) (fs.Node, fuse.Error) { if name == "bench" { return benchFile{conf: d.conf}, nil } return nil, fuse.ENOENT } func (benchDir) ReadDir(intr fs.Intr) ([]fuse.Dirent, fuse.Error) {
if err != nil { return nil, err } testName = regexp.QuoteMeta(testName) cmd := exec.Command(executable, "-test.run=^"+testName+"$", "-fuse.internal.childmode") cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr return cmd, nil } // childMapFS is an FS with one fixed child named "child". type childMapFS map[string]fs.Node var _ = fs.FS(childMapFS{}) var _ = fs.Node(childMapFS{}) var _ = fs.NodeStringLookuper(childMapFS{}) func (f childMapFS) Attr() fuse.Attr { return fuse.Attr{Inode: 1, Mode: os.ModeDir | 0777} } func (f childMapFS) Root() (fs.Node, fuse.Error) { return f, nil } func (f childMapFS) Lookup(name string, intr fs.Intr) (fs.Node, fuse.Error) { child, ok := f[name] if !ok { return nil, fuse.ENOENT } return child, nil