Commit 65f5a7a5 authored by Han-Wen Nienhuys's avatar Han-Wen Nienhuys Committed by Han-Wen Nienhuys

fs: correct documentation on return errno codes

Change-Id: Ia1e8e20f5646a0958f4ede5cf20f565c63f0bb7f
parent 043296a8
...@@ -233,7 +233,7 @@ type NodeGetattrer interface { ...@@ -233,7 +233,7 @@ type NodeGetattrer interface {
Getattr(ctx context.Context, f FileHandle, out *fuse.AttrOut) syscall.Errno Getattr(ctx context.Context, f FileHandle, out *fuse.AttrOut) syscall.Errno
} }
// SetAttr sets attributes for an Inode. // SetAttr sets attributes for an Inode. Default is to return ENOTSUP.
type NodeSetattrer interface { type NodeSetattrer interface {
Setattr(ctx context.Context, f FileHandle, in *fuse.SetAttrIn, out *fuse.AttrOut) syscall.Errno Setattr(ctx context.Context, f FileHandle, in *fuse.SetAttrIn, out *fuse.AttrOut) syscall.Errno
} }
...@@ -435,25 +435,25 @@ type NodeReaddirer interface { ...@@ -435,25 +435,25 @@ type NodeReaddirer interface {
} }
// Mkdir is similar to Lookup, but must create a directory entry and Inode. // Mkdir is similar to Lookup, but must create a directory entry and Inode.
// Default is to return EROFS. // Default is to return ENOTSUP.
type NodeMkdirer interface { type NodeMkdirer interface {
Mkdir(ctx context.Context, name string, mode uint32, out *fuse.EntryOut) (*Inode, syscall.Errno) Mkdir(ctx context.Context, name string, mode uint32, out *fuse.EntryOut) (*Inode, syscall.Errno)
} }
// Mknod is similar to Lookup, but must create a device entry and Inode. // Mknod is similar to Lookup, but must create a device entry and Inode.
// Default is to return EROFS. // Default is to return ENOTSUP.
type NodeMknoder interface { type NodeMknoder interface {
Mknod(ctx context.Context, name string, mode uint32, dev uint32, out *fuse.EntryOut) (*Inode, syscall.Errno) Mknod(ctx context.Context, name string, mode uint32, dev uint32, out *fuse.EntryOut) (*Inode, syscall.Errno)
} }
// Link is similar to Lookup, but must create a new link to an existing Inode. // Link is similar to Lookup, but must create a new link to an existing Inode.
// Default is to return EROFS. // Default is to return ENOTSUP.
type NodeLinker interface { type NodeLinker interface {
Link(ctx context.Context, target InodeEmbedder, name string, out *fuse.EntryOut) (node *Inode, errno syscall.Errno) Link(ctx context.Context, target InodeEmbedder, name string, out *fuse.EntryOut) (node *Inode, errno syscall.Errno)
} }
// Symlink is similar to Lookup, but must create a new symbolic link. // Symlink is similar to Lookup, but must create a new symbolic link.
// Default is to return EROFS. // Default is to return ENOTSUP.
type NodeSymlinker interface { type NodeSymlinker interface {
Symlink(ctx context.Context, target, name string, out *fuse.EntryOut) (node *Inode, errno syscall.Errno) Symlink(ctx context.Context, target, name string, out *fuse.EntryOut) (node *Inode, errno syscall.Errno)
} }
...@@ -468,20 +468,20 @@ type NodeCreater interface { ...@@ -468,20 +468,20 @@ type NodeCreater interface {
// Unlink should remove a child from this directory. If the // Unlink should remove a child from this directory. If the
// return status is OK, the Inode is removed as child in the // return status is OK, the Inode is removed as child in the
// FS tree automatically. Default is to return EROFS. // FS tree automatically. Default is to return success.
type NodeUnlinker interface { type NodeUnlinker interface {
Unlink(ctx context.Context, name string) syscall.Errno Unlink(ctx context.Context, name string) syscall.Errno
} }
// Rmdir is like Unlink but for directories. // Rmdir is like Unlink but for directories.
// Default is to return EROFS. // Default is to return success.
type NodeRmdirer interface { type NodeRmdirer interface {
Rmdir(ctx context.Context, name string) syscall.Errno Rmdir(ctx context.Context, name string) syscall.Errno
} }
// Rename should move a child from one directory to a different // Rename should move a child from one directory to a different
// one. The change is effected in the FS tree if the return status is // one. The change is effected in the FS tree if the return status is
// OK. Default is to return EROFS. // OK. Default is to return ENOTSUP.
type NodeRenamer interface { type NodeRenamer interface {
Rename(ctx context.Context, name string, newParent InodeEmbedder, newName string, flags uint32) syscall.Errno Rename(ctx context.Context, name string, newParent InodeEmbedder, newName string, flags uint32) syscall.Errno
} }
......
...@@ -378,6 +378,8 @@ func (b *rawBridge) Rmdir(cancel <-chan struct{}, header *fuse.InHeader, name st ...@@ -378,6 +378,8 @@ func (b *rawBridge) Rmdir(cancel <-chan struct{}, header *fuse.InHeader, name st
errno = mops.Rmdir(&fuse.Context{Caller: header.Caller, Cancel: cancel}, name) errno = mops.Rmdir(&fuse.Context{Caller: header.Caller, Cancel: cancel}, name)
} }
// TODO - this should not succeed silently.
if errno == 0 { if errno == 0 {
parent.RmChild(name) parent.RmChild(name)
} }
...@@ -391,6 +393,8 @@ func (b *rawBridge) Unlink(cancel <-chan struct{}, header *fuse.InHeader, name s ...@@ -391,6 +393,8 @@ func (b *rawBridge) Unlink(cancel <-chan struct{}, header *fuse.InHeader, name s
errno = mops.Unlink(&fuse.Context{Caller: header.Caller, Cancel: cancel}, name) errno = mops.Unlink(&fuse.Context{Caller: header.Caller, Cancel: cancel}, name)
} }
// TODO - this should not succeed silently.
if errno == 0 { if errno == 0 {
parent.RmChild(name) parent.RmChild(name)
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment