From 7e065440fb6208744d650579729d99207ba91d3a Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Sun, 29 Oct 2017 11:36:38 +0000 Subject: [PATCH] vfs: rename Lookup to Stat to be more in keeping with os --- cmd/cmount/fs.go | 2 +- cmd/mount/dir.go | 2 +- vfs/dir.go | 26 +++++++++++++------------- vfs/vfs.go | 27 ++++++--------------------- 4 files changed, 21 insertions(+), 36 deletions(-) diff --git a/cmd/cmount/fs.go b/cmd/cmount/fs.go index 642d4613d..feff7d5cc 100644 --- a/cmd/cmount/fs.go +++ b/cmd/cmount/fs.go @@ -120,7 +120,7 @@ func (of *openFiles) Close(fh uint64) (errc int) { // lookup a Node given a path func (fsys *FS) lookupNode(path string) (node vfs.Node, errc int) { - node, err := fsys.VFS.Lookup(path) + node, err := fsys.VFS.Stat(path) return node, translateError(err) } diff --git a/cmd/mount/dir.go b/cmd/mount/dir.go index 16738c6d5..3c89b39df 100644 --- a/cmd/mount/dir.go +++ b/cmd/mount/dir.go @@ -79,7 +79,7 @@ var _ fusefs.NodeRequestLookuper = (*Dir)(nil) // Lookup need not to handle the names "." and "..". func (d *Dir) Lookup(ctx context.Context, req *fuse.LookupRequest, resp *fuse.LookupResponse) (node fusefs.Node, err error) { defer fs.Trace(d, "name=%q", req.Name)("node=%+v, err=%v", &node, &err) - mnode, err := d.Dir.Lookup(req.Name) + mnode, err := d.Dir.Stat(req.Name) if err != nil { return nil, translateError(err) } diff --git a/vfs/dir.go b/vfs/dir.go index a21ea6dfc..950180650 100644 --- a/vfs/dir.go +++ b/vfs/dir.go @@ -219,10 +219,10 @@ func (d *Dir) _readDir() error { return nil } -// lookup a single item in the directory +// stat a single item in the directory // // returns ENOENT if not found. -func (d *Dir) lookup(leaf string) (Node, error) { +func (d *Dir) stat(leaf string) (Node, error) { d.mu.Lock() defer d.mu.Unlock() err := d._readDir() @@ -269,23 +269,23 @@ func (d *Dir) SetModTime(modTime time.Time) error { return nil } -// Lookup looks up a specific entry in the receiver. +// Stat looks up a specific entry in the receiver. // -// Lookup should return a Node corresponding to the entry. If the -// name does not exist in the directory, Lookup should return ENOENT. +// Stat should return a Node corresponding to the entry. If the +// name does not exist in the directory, Stat should return ENOENT. // -// Lookup need not to handle the names "." and "..". -func (d *Dir) Lookup(name string) (node Node, err error) { +// Stat need not to handle the names "." and "..". +func (d *Dir) Stat(name string) (node Node, err error) { path := path.Join(d.path, name) - // fs.Debugf(path, "Dir.Lookup") - node, err = d.lookup(name) + // fs.Debugf(path, "Dir.Stat") + node, err = d.stat(name) if err != nil { if err != ENOENT { - fs.Errorf(path, "Dir.Lookup error: %v", err) + fs.Errorf(path, "Dir.Stat error: %v", err) } return nil, err } - // fs.Debugf(path, "Dir.Lookup OK") + // fs.Debugf(path, "Dir.Stat OK") return node, nil } @@ -408,7 +408,7 @@ func (d *Dir) RemoveName(name string) error { } path := path.Join(d.path, name) // fs.Debugf(path, "Dir.Remove") - node, err := d.lookup(name) + node, err := d.stat(name) if err != nil { fs.Errorf(path, "Dir.Remove error: %v", err) return err @@ -424,7 +424,7 @@ func (d *Dir) Rename(oldName, newName string, destDir *Dir) error { oldPath := path.Join(d.path, oldName) newPath := path.Join(destDir.path, newName) // fs.Debugf(oldPath, "Dir.Rename to %q", newPath) - oldNode, err := d.lookup(oldName) + oldNode, err := d.stat(oldName) if err != nil { fs.Errorf(oldPath, "Dir.Rename error: %v", err) return err diff --git a/vfs/vfs.go b/vfs/vfs.go index 0669d9d97..7818761aa 100644 --- a/vfs/vfs.go +++ b/vfs/vfs.go @@ -129,8 +129,11 @@ func NewInode() (inode uint64) { return atomic.AddUint64(&inodeCount, 1) } -// Lookup finds the Node by path starting from the root -func (vfs *VFS) Lookup(path string) (node Node, err error) { +// Stat finds the Node by path starting from the root +// +// It is the equivalent of os.Stat - Node contains the os.FileInfo +// interface. +func (vfs *VFS) Stat(path string) (node Node, err error) { node = vfs.root for path != "" { i := strings.IndexRune(path, '/') @@ -148,28 +151,10 @@ func (vfs *VFS) Lookup(path string) (node Node, err error) { // We need to look in a directory, but found a file return nil, ENOENT } - node, err = dir.Lookup(name) + node, err = dir.Stat(name) if err != nil { return nil, err } } return } - -// Statfs is called to obtain file system metadata. -// It should write that data to resp. -func (vfs *VFS) Statfs() error { - /* FIXME - const blockSize = 4096 - const fsBlocks = (1 << 50) / blockSize - resp.Blocks = fsBlocks // Total data blocks in file system. - resp.Bfree = fsBlocks // Free blocks in file system. - resp.Bavail = fsBlocks // Free blocks in file system if you're not root. - resp.Files = 1E9 // Total files in file system. - resp.Ffree = 1E9 // Free files in file system. - resp.Bsize = blockSize // Block size - resp.Namelen = 255 // Maximum file name length? - resp.Frsize = blockSize // Fragment size, smallest addressable data size in the file system. - */ - return nil -}