在Golang使用go-fuse包

时间:2014-10-21 14:39:33

标签: go fuse

您好我要将我的两个几乎正常工作的简单保险丝文件系统从bazillion fuse移植到保险丝。 go-fuse api似乎更复杂。 问题是:

  1. NewServer()中,使用哪个RawFileSystem?
  2. 如何实现read,readdir等的回调?
  3. 在哪里使用WaitMount()
  4. 什么是DeleteNotify()EntryNotify()

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案

1。 创建一个包含nodefs.Node的结构:

    type my_root struct {nodefs.Node}

初始化

    my = &my_root{Node: nodefs.NewDefaultNode()}

建立连接和原始文件系统

    con := nodefs.NewFileSystemConnector(my, nil)
    raw := fuse.NewRawFileSystem(con.RawFS())

最后,启动保险丝fs

    server, err := fuse.NewServer(raw, f.dir, optz)
  1. 像这样:

    func (my_root) OpenDir(context *fuse.Context) ([]fuse.DirEntry, fuse.Status) {}
    func (my_root) Lookup(out *fuse.Attr, name string, context *fuse.Context) (node *nodefs.Inode, code fuse.Status)
    
  2. 在第1步之后,像这样:

    server.WaitMount()
    
  3. 我不需要这个。