From 813a4f7456aa1966f0dfd2ea24d6ec70adf3b4c6 Mon Sep 17 00:00:00 2001 From: sparklxb Date: Mon, 6 Mar 2017 13:04:46 +0800 Subject: [PATCH] Fixes #266 --- weed/command/mount.go | 2 +- weed/command/mount_std.go | 37 +++++++++++++++++++++---------------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/weed/command/mount.go b/weed/command/mount.go index d6e87d76c..746e4b92e 100644 --- a/weed/command/mount.go +++ b/weed/command/mount.go @@ -26,7 +26,7 @@ var cmdMount = &Command{ 2) have a "weed filer" running These 2 requirements can be achieved with one command "weed server -filer=true" - This uses bazil.org/fuse, whichenables writing FUSE file systems on + This uses bazil.org/fuse, which enables writing FUSE file systems on Linux, and OS X. On OS X, it requires OSXFUSE (http://osxfuse.github.com/). diff --git a/weed/command/mount_std.go b/weed/command/mount_std.go index b086d8cbf..ec990adae 100644 --- a/weed/command/mount_std.go +++ b/weed/command/mount_std.go @@ -4,6 +4,7 @@ package command import ( "fmt" + "os" "runtime" "bazil.org/fuse" @@ -47,16 +48,10 @@ func runMount(cmd *Command, args []string) bool { return true } -type File struct { - FileId filer.FileId - Name string -} +type WFS struct{} -func (File) Attr(context context.Context, attr *fuse.Attr) error { - return nil -} -func (File) ReadAll(ctx context.Context) ([]byte, error) { - return []byte("hello, world\n"), nil +func (WFS) Root() (fs.Node, error) { + return Dir{}, nil } type Dir struct { @@ -65,6 +60,8 @@ type Dir struct { } func (dir Dir) Attr(context context.Context, attr *fuse.Attr) error { + attr.Inode = 1 + attr.Mode = os.ModeDir | 0555 return nil } @@ -79,13 +76,7 @@ func (dir Dir) Lookup(ctx context.Context, name string) (fs.Node, error) { return nil, fmt.Errorf("File Not Found for %s", name) } -type WFS struct{} - -func (WFS) Root() (fs.Node, error) { - return Dir{}, nil -} - -func (dir *Dir) ReadDir(ctx context.Context) ([]fuse.Dirent, error) { +func (dir Dir) ReadDirAll(ctx context.Context) ([]fuse.Dirent, error) { var ret []fuse.Dirent if dirs, e := filer.ListDirectories(*mountOptions.filer, dir.Path); e == nil { for _, d := range dirs.Directories { @@ -104,3 +95,17 @@ func (dir *Dir) ReadDir(ctx context.Context) ([]fuse.Dirent, error) { } return ret, nil } + +type File struct { + FileId filer.FileId + Name string +} + +func (File) Attr(context context.Context, attr *fuse.Attr) error { + attr.Inode = 2 + attr.Mode = 0444 + return nil +} +func (File) ReadAll(ctx context.Context) ([]byte, error) { + return []byte("hello, world\n"), nil +}