使用Golang中的go fuse包

使用Golang中的go fuse包,go,fuse,Go,Fuse,您好,我将从一个到另一个的fuse移植我的两个几乎可以工作的简单fuse文件系统。看起来更复杂。 问题是: 在NewServer()中,要使用哪个文件系统 如何实现read、readdir等的回调 在哪里使用WaitMount() 什么是DeleteNotify(),EntryNotify() 好的,我找到了解决办法 一,。 创建包含nodefs的结构。节点: type my_root struct {nodefs.Node} 初始化它 my = &my_root{No

您好,我将从一个到另一个的fuse移植我的两个几乎可以工作的简单fuse文件系统。看起来更复杂。 问题是:

  • NewServer()
    中,要使用哪个文件系统
  • 如何实现read、readdir等的回调
  • 在哪里使用WaitMount()
  • 什么是
    DeleteNotify()
    EntryNotify()

  • 好的,我找到了解决办法

    一,。 创建包含nodefs的结构。节点:

        type my_root struct {nodefs.Node}
    
    初始化它

        my = &my_root{Node: nodefs.NewDefaultNode()}
    
    建立连接并创建原始文件系统

        con := nodefs.NewFileSystemConnector(my, nil)
        raw := fuse.NewRawFileSystem(con.RawFS())
    
    最后,点燃保险丝

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

    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)
    
    server.WaitMount()
    
  • 在步骤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)
    
    server.WaitMount()
    
  • 我不需要这个

  • 我的电流在这里