作者:pj
项目:ghf
func main() {
flag.Parse()
if *token == "" {
log.Println("must provide -token")
os.Exit(1)
}
client = github.NewClient(oauth2.NewClient(oauth2.NoContext, oauth2.StaticTokenSource(
&oauth2.Token{AccessToken: *token},
)))
if *mountpoint == "" {
log.Println("must provide -mountpoint")
os.Exit(1)
}
c, err := fuse.Mount(*mountpoint)
if err != nil {
log.Printf("mount: %v", err)
os.Exit(1)
}
defer c.Close()
log.Println("serving...")
if err := fs.Serve(c, FS{}); err != nil {
log.Printf("serve: %v", err)
os.Exit(1)
}
<-c.Ready
if err := c.MountError; err != nil {
log.Printf("mount error: %v", err)
os.Exit(1)
}
}
作者:netrob
项目:seaweedf
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
}
c, err := fuse.Mount(*mountOptions.dir)
if err != nil {
glog.Fatal(err)
return false
}
OnInterrupt(func() {
fuse.Unmount(*mountOptions.dir)
c.Close()
})
err = fs.Serve(c, WFS{})
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
}
作者:rjkroeg
项目:fus
func main() {
flag.Usage = Usage
flag.Parse()
if flag.NArg() != 1 {
Usage()
os.Exit(2)
}
mountpoint := flag.Arg(0)
c, err := fuse.Mount(mountpoint)
if err != nil {
log.Fatal(err)
}
defer c.Close()
err = fs.Serve(c, FS{})
if err != nil {
log.Fatal(err)
}
// check if the mount process has an error to report
<-c.Ready
if err := c.MountError; err != nil {
log.Fatal(err)
}
}
作者:jostillmann
项目:bolt-moun
func mount(dbpath, mountpoint string) error {
db, err := bolt.Open(dbpath, 0600, nil)
if err != nil {
return err
}
c, err := fuse.Mount(mountpoint)
if err != nil {
return err
}
defer c.Close()
filesys := &FS{
db: db,
}
if err := fs.Serve(c, filesys); err != nil {
return err
}
// check if the mount process has an error to report
<-c.Ready
if err := c.MountError; err != nil {
return err
}
return nil
}
作者:Bren201
项目:go-ipf
// Mount mounts an IpfsNode instance at a particular path. It
// serves until the process receives exit signals (to Unmount).
func Mount(ipfs *core.IpfsNode, fpath string) error {
sigc := make(chan os.Signal, 1)
signal.Notify(sigc, syscall.SIGHUP, syscall.SIGINT,
syscall.SIGTERM, syscall.SIGQUIT)
go func() {
<-sigc
Unmount(fpath)
}()
c, err := fuse.Mount(fpath)
if err != nil {
return err
}
defer c.Close()
err = fs.Serve(c, FileSystem{Ipfs: ipfs})
if err != nil {
return err
}
// check if the mount process has an error to report
<-c.Ready
if err := c.MountError; err != nil {
return err
}
return nil
}
作者:mehulsbhat
项目:pachyder
func (m *mounter) Mount(
address string,
mountPoint string,
shard uint64,
modulus uint64,
) (retErr error) {
// TODO: should we make the caller do this?
if err := os.MkdirAll(mountPoint, 0777); err != nil {
return err
}
name := namePrefix + address
conn, err := fuse.Mount(
mountPoint,
fuse.FSName(name),
fuse.VolumeName(name),
fuse.Subtype(subtype),
fuse.AllowOther(),
fuse.WritebackCache(),
fuse.MaxReadahead(1<<32-1),
)
if err != nil {
return err
}
defer func() {
if err := conn.Close(); err != nil && retErr == nil {
retErr = err
}
}()
if err := fs.Serve(conn, newFilesystem(m.apiClient, shard, modulus)); err != nil {
return err
}
<-conn.Ready
return conn.MountError
}
作者:cjluca
项目:unitef
func main() {
ufs := unitefs.NewFS()
for i := 1; i < len(os.Args)-1; i++ {
println(os.Args[i])
ufs.RegisterSubtree(os.Args[i])
}
c, err := fuse.Mount(
os.Args[len(os.Args)-1],
fuse.FSName("unitefs"),
fuse.Subtype("unitefs"),
fuse.LocalVolume(),
fuse.VolumeName("unitefs"),
)
if err != nil {
log.Fatal(err)
}
defer c.Close()
fmt.Println("FS mounted")
err = fs.Serve(c, ufs)
if err != nil {
log.Fatal(err)
}
// check if the mount process has an error to report
<-c.Ready
if err := c.MountError; err != nil {
log.Fatal(err)
}
}
作者:orive
项目:ghf
func main() {
log.SetFlags(0)
// Parse arguments and require that we have the path.
token := flag.String("token", "", "personal access token")
flag.Parse()
if flag.NArg() != 1 {
log.Fatal("path required")
}
log.Printf("mounting to: %s", flag.Arg(0))
// Create FUSE connection.
conn, err := fuse.Mount(flag.Arg(0))
if err != nil {
log.Fatal(err)
}
// Create OAuth transport.
var c *http.Client
if *token != "" {
c = (&oauth.Transport{Token: &oauth.Token{AccessToken: *token}}).Client()
}
// Create filesystem.
filesys := &FS{Client: github.NewClient(c)}
if err := fs.Serve(conn, filesys); err != nil {
log.Fatal(err)
}
// Wait until the mount is unmounted or there is an error.
<-conn.Ready
if err := conn.MountError; err != nil {
log.Fatal(err)
}
}
作者:rfjako
项目:cluef
func (fs *ClueFS) MountAndServe(mountpoint string, readonly bool) error {
// Mount the file system
fs.mountDir = mountpoint
if IsDebugActive() {
fuse.Debug = FuseDebug
}
mountOpts := []fuse.MountOption{
fuse.FSName(programName),
fuse.Subtype(programName),
fuse.VolumeName(programName),
fuse.LocalVolume(),
}
if readonly {
mountOpts = append(mountOpts, fuse.ReadOnly())
}
conn, err := fuse.Mount(mountpoint, mountOpts...)
if err != nil {
return err
}
defer conn.Close()
// Start serving requests
if err = fusefs.Serve(conn, fs); err != nil {
return err
}
// Check for errors when mounting the file system
<-conn.Ready
if err = conn.MountError; err != nil {
return err
}
return nil
}
作者:port
项目:simple-network-fus
func Mount(host, mountpoint string) error {
conn, err := net.Dial("tcp", host)
if err != nil {
return err
}
defer conn.Close()
log.Println("Connected")
c, err := fuse.Mount(
mountpoint,
fuse.FSName("simple-network-fuse"),
fuse.Subtype("rofl"),
)
if err != nil {
return err
}
defer c.Close()
fsConn := connection{
enc: gob.NewEncoder(conn),
dec: gob.NewDecoder(conn),
}
err = fs.Serve(c, &FS{fsConn})
if err != nil {
return err
}
<-c.Ready
if err := c.MountError; err != nil {
return err
}
return nil
}
作者:nc
项目:rclon
// mount the file system
//
// The mount point will be ready when this returns.
//
// returns an error, and an error channel for the serve process to
// report an error when fusermount is called.
func mount(f fs.Fs, mountpoint string) (<-chan error, error) {
fs.Debug(f, "Mounting on %q", mountpoint)
c, err := fuse.Mount(mountpoint, mountOptions(f.Name()+":"+f.Root())...)
if err != nil {
return nil, err
}
filesys := &FS{
f: f,
}
// Serve the mount point in the background returning error to errChan
errChan := make(chan error, 1)
go func() {
err := fusefs.Serve(c, filesys)
closeErr := c.Close()
if err == nil {
err = closeErr
}
errChan <- err
}()
// check if the mount process has an error to report
<-c.Ready
if err := c.MountError; err != nil {
return nil, err
}
return errChan, nil
}
作者:dmcgowa
项目:fus
func main() {
flag.Usage = usage
flag.Parse()
if flag.NArg() != 1 {
usage()
os.Exit(2)
}
mountpoint := flag.Arg(0)
c, err := fuse.Mount(
mountpoint,
fuse.FSName("helloworld"),
fuse.Subtype("hellofs"),
fuse.LocalVolume(),
fuse.VolumeName("Hello world!"),
)
if err != nil {
log.Fatal(err)
}
defer c.Close()
err = fs.Serve(c, FS{})
if err != nil {
log.Fatal(err)
}
// check if the mount process has an error to report
<-c.Ready
if err := c.MountError; err != nil {
log.Fatal(err)
}
}
作者:Reisende
项目:acdfus
func Run(c *cli.Context) {
println("Amazon Cloud Drive mount at", c.String("mountpoint"))
mountpoint := c.String("mountpoint")
if mountpoint == "" {
log.Fatal("no mountpoint! try running \"acdfuse help\"")
}
fuseCtx, err := fuse.Mount(
c.String("mountpoint"),
fuse.FSName("helloworld"),
fuse.Subtype("hellofs"),
fuse.LocalVolume(),
fuse.VolumeName("Hello world!"),
)
if err != nil {
log.Fatal(err)
}
defer fuseCtx.Close()
err = fs.Serve(fuseCtx, acdfs.FS{})
if err != nil {
log.Fatal(err)
}
// check if the mount process has an error to report
<-fuseCtx.Ready
if err := fuseCtx.MountError; err != nil {
log.Fatal(err)
}
}
作者:ryanstou
项目:mirrorf
func main() {
MIRROR_FOLDER := "/Users/ryanstout/Sites/infinitydrive/go/drive"
flag.Usage = Usage
flag.Parse()
if flag.NArg() != 1 {
Usage()
os.Exit(2)
}
mountpoint := flag.Arg(0)
c, err := fuse.Mount(mountpoint)
if err != nil {
log.Fatal(err)
}
defer c.Close()
err = fs.Serve(c, FS{MIRROR_FOLDER})
if err != nil {
log.Fatal(err)
}
// check if the mount process has an error to report
<-c.Ready
if err := c.MountError; err != nil {
log.Fatal(err)
}
}
作者:henrylee2c
项目:pachyder
func (m *mounter) Mount(apiClient pfs.ApiClient, repositoryName string, mountPoint string, shard uint64, modulus uint64) (retErr error) {
if err := os.MkdirAll(mountPoint, 0777); err != nil {
return err
}
conn, err := fuse.Mount(
mountPoint,
fuse.FSName(namePrefix+repositoryName),
fuse.VolumeName(namePrefix+repositoryName),
fuse.Subtype(subtype),
fuse.WritebackCache(),
fuse.MaxReadahead(1<<32-1),
)
if err != nil {
return err
}
defer func() {
if err := conn.Close(); err != nil && retErr == nil {
retErr = err
}
}()
close(m.ready)
if err := fs.Serve(conn, &filesystem{apiClient, repositoryName, shard, modulus}); err != nil {
return err
}
// check if the mount process has an error to report
<-conn.Ready
return conn.MountError
}
作者:pombredann
项目:openstorag
func (v *volumeDriver) Mount(volumeID api.VolumeID, mountpath string) error {
volume, err := v.GetVol(volumeID)
if err != nil {
return err
}
mountOptions, err := v.provider.GetMountOptions(volume.Spec)
if err != nil {
return err
}
conn, err := fuse.Mount(mountpath, mountOptions...)
if err != nil {
return err
}
filesystem, err := v.provider.GetFS(volume.Spec)
if err != nil {
return err
}
go func() {
// TODO: track error once we understand driver model better
_ = fs.Serve(conn, filesystem)
_ = conn.Close()
}()
<-conn.Ready
return conn.MountError
}
作者:mou
项目:fuse-snm
func main() {
var err error
// getopt
flag.Usage = usage
flag.Parse()
if flag.NArg() != 2 {
usage()
os.Exit(2)
}
mountpoint := flag.Arg(0)
snmpServer := flag.Arg(1)
// connect snmp
snmp.client, err = gosnmp.NewGoSNMP(snmpServer, "public", gosnmp.Version2c, 5)
if err != nil {
logrus.Fatalf("gosnmp.NewGoSNMP: %v", err)
}
//snmp.client.SetDebug(true)
//snmp.client.SetVerbose(true)
snmp.currentId = 1
snmp.cache = make(map[string]SnmpCacheEntry)
snmp.cacheMap = make(map[uint64]string)
// preload initial cache
err = snmp.LoadWalk(".1.3.6.1")
if err != nil {
logrus.Fatalf("snmp.LoadWalk: %v", err)
}
// mount fuse
c, err := fuse.Mount(
mountpoint,
fuse.FSName("fuse-snmp"),
fuse.Subtype("snmpfs"),
fuse.LocalVolume(),
fuse.VolumeName("Fuse SNMP"),
)
if err != nil {
logrus.Fatalf("fuse.Mount: %v", err)
}
defer c.Close()
// map fuse
err = fs.Serve(c, FS{})
if err != nil {
logrus.Fatalf("fs.Serve: %v", err)
}
// wait for fuse close
<-c.Ready
if err := c.MountError; err != nil {
logrus.Fatalf("c.MountError: %v", err)
}
logrus.Fatalf("BYEBYE")
}
作者:ryanbressle
项目:RiverF
func FuseMount(mountpoint string) {
c, err := fuse.Mount(mountpoint)
if err != nil {
log.Fatal(err)
}
fs.Serve(c, NewRootDir())
}
作者:hanslovsk
项目:dvi
// OpenFUSE mounts the given directory as a FUSE file system.
// The FUSE system is a singleton with only one FUSE server operable.
func OpenFUSE(dir string, data Mountable, vinfo VersionInfo) error {
fuseServer.mutex.Lock()
defer fuseServer.mutex.Unlock()
// Make sure we haven't switched mount directory.
if len(fuseServer.dir) > 0 {
if fuseServer.dir != dir {
return fmt.Errorf("Cannot open more than one FUSE directory. Currently open: %s\n",
fuseServer.dir)
}
}
// Make sure our mount directory is present and a directory.
finfo, err := os.Stat(dir)
if err != nil {
if os.IsNotExist(err) {
if err = os.MkdirAll(dir, 0744); err != nil {
return fmt.Errorf("Cannot create mount directory: %s (%s)\n",
dir, err.Error())
}
} else {
return fmt.Errorf("Cannot access given mount directory: %s\n", dir)
}
} else if !finfo.IsDir() {
return fmt.Errorf("Given mount point (%s) is not a directory\n", dir)
}
// Check if data is already mounted at this version.
mount, found := fuseServer.mounts[vinfo.uuid]
if found {
mount.AddData(data, vinfo)
return nil
}
fuseServer.mounts[vinfo.uuid] = Mount{Data{data}, vinfo}
// Mount and serve if not already served.
if fuseServer.dir == "" {
fuseServer.dir = dir
conn, err := fuse.Mount(dir)
if err != nil {
return err
}
// Run FUSE system in gothread.
go func() {
dvid.StartCgo()
fs.Serve(conn, fuseServer)
dvid.StopCgo()
}()
}
return nil
}
作者:pik4e
项目:ndrct
func (d *DumbDestiny) CreateFS(mountpoint string) (*fs.FS, chan struct{}, error) {
conn, err := fuse.Mount(mountpoint)
if err != nil {
return nil, nil, err
}
f := fs.NewFS()
done := make(chan struct{})
go func(done chan struct{}) {
fsup.Serve(conn, f)
done <- struct{}{}
}(done)
return f, done, nil
}