From 54db03b63d4d22ec67ce3a5c0c0918a315814df8 Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Tue, 4 Aug 2015 08:45:51 +1000 Subject: [PATCH] errorFS.LookUpInode --- samples/errorfs/error_fs.go | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/samples/errorfs/error_fs.go b/samples/errorfs/error_fs.go index a5f4a73..7c1a315 100644 --- a/samples/errorfs/error_fs.go +++ b/samples/errorfs/error_fs.go @@ -31,6 +31,12 @@ const FooContents = "xxxx" const fooInodeID = fuseops.RootInodeID + 1 +var fooAttrs = fuseops.InodeAttributes{ + Nlink: 1, + Size: uint64(len(FooContents)), + Mode: 0444, +} + // A file system whose sole contents are a file named "foo" containing the // string defined by FooContents. // @@ -103,11 +109,7 @@ func (fs *errorFS) GetInodeAttributes( } case op.Inode == fooInodeID: - op.Attributes = fuseops.InodeAttributes{ - Nlink: 1, - Size: uint64(len(FooContents)), - Mode: 0444, - } + op.Attributes = fooAttrs default: err = fmt.Errorf("Unknown inode: %d", op.Inode) @@ -116,3 +118,23 @@ func (fs *errorFS) GetInodeAttributes( return } + +// LOCKS_EXCLUDED(fs.mu) +func (fs *errorFS) LookUpInode( + ctx context.Context, + op *fuseops.LookUpInodeOp) (err error) { + if fs.transformError(op, &err) { + return + } + + // Is this a known inode? + if !(op.Parent == fuseops.RootInodeID && op.Name == "foo") { + err = syscall.ENOENT + return + } + + op.Entry.Child = fooInodeID + op.Entry.Attributes = fooAttrs + + return +}