server.go 逻辑主循环,不断从内核收取request,处理完毕后,再写回内核。
opcode.go 根据操作类型,调用不同的处理函数,进行处理(doInit, doCreate,doRead等等)。
nodefs/fsconnector.go 负责转换内核中inodeid到fuse的内存数据结构,opcode中的处理函数,最终会调用fsconnector的成员函数,这个通过NewServer函数,将connector设置为nodefs的filesystem成员。
位于文件 fsops.go中的处理函数,最终会调用到具体文件系统fsInode(memnode,pathnode等)的成员函数。这个主要在创建connetor时传入root节点。
pathfs/pathfs.go 可以将每次对一个inode的操作,转为更高层的全路径,这样更通用,但是性能有损耗。
pathfs/loopback.go 最后一层,自定义的文件系统,实现所有的接口。
参考资料
linux FUSE源码分析
FUSE源码分析
声明:转载本博文章须在文章明显处注明作者及附上原文链接,便于读者找到原文的更新版。