1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- // +build linux darwin
- package command
- import (
- "fmt"
- "runtime"
- "bazil.org/fuse"
- "bazil.org/fuse/fs"
- "github.com/chrislusf/seaweedfs/weed/glog"
- "github.com/chrislusf/seaweedfs/weed/util"
- "github.com/chrislusf/seaweedfs/weed/filesys"
- )
- func runMount(cmd *Command, args []string) bool {
- fmt.Printf("This is SeaweedFS version %s %s %s\n", util.VERSION, runtime.GOOS, runtime.GOARCH)
- if *mountOptions.dir == "" {
- fmt.Printf("Please specify the mount directory via \"-dir\"")
- return false
- }
- fuse.Unmount(*mountOptions.dir)
- c, err := fuse.Mount(
- *mountOptions.dir,
- fuse.VolumeName("SeaweedFS"),
- fuse.FSName("SeaweedFS"),
- fuse.NoAppleDouble(),
- fuse.NoAppleXattr(),
- fuse.ExclCreate(),
- fuse.DaemonTimeout("3600"),
- fuse.AllowOther(),
- fuse.AllowSUID(),
- fuse.DefaultPermissions(),
- // fuse.MaxReadahead(1024*128), // TODO: not tested yet, possibly improving read performance
- fuse.AsyncRead(),
- fuse.WritebackCache(),
- )
- if err != nil {
- glog.Fatal(err)
- return false
- }
- util.OnInterrupt(func() {
- fuse.Unmount(*mountOptions.dir)
- c.Close()
- })
- err = fs.Serve(c, filesys.NewSeaweedFileSystem(*mountOptions.filer))
- if err != nil {
- fuse.Unmount(*mountOptions.dir)
- }
- // check if the mount process has an error to report
- <-c.Ready
- if err := c.MountError; err != nil {
- glog.Fatal(err)
- }
- return true
- }
|