go-fuse

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源码分析

声明:转载本博文章须在文章明显处注明作者及附上原文链接,便于读者找到原文的更新版。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值