Использование пакета go-fuse в Golang

Привет, я собираюсь портировать две мои почти рабочие простые файловые системы с предохранителями с базиллион предохранителей на go-fuse. go-fuse API кажется более сложным. Вопрос в том:

  1. В NewServer() какую RawFileSystem использовать?
  2. Как реализовать обратные вызовы для чтения, чтения и т. д.?
  3. Где использовать WaitMount()?
  4. Что такое DeleteNotify(), EntryNotify()?

person goen    schedule 21.10.2014    source источник
comment
мой текущий находится здесь github.com/goen/goenfuse   -  person goen    schedule 21.10.2014


Ответы (1)


хорошо, я нашел решения

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. мне это было не нужно.

person goen    schedule 25.10.2014