Skip to content

Latest commit

 

History

History
36 lines (25 loc) · 1.96 KB

File metadata and controls

36 lines (25 loc) · 1.96 KB

FUSE 子系统教程

[中文] | English | 返回总目录

源码基线:Linux 7.2-rc6。

第一章:FUSE 子系统设计

第一章不依赖具体函数调用,目标是回答:FUSE 为什么需要这些对象、协议字段、缓存超时和队列规则?

  1. 边界、分层与端到端架构
  2. 核心对象、协议身份与能力协商
  3. 缓存、I/O 模式与一致性模型
  4. 并发、背压、安全与失败模型

第二章:FUSE 代码实现分析

第二章沿 Linux 源码追踪对象的创建、请求的发送、daemon 的应答和资源的释放。

  1. 源码地图、模块初始化、挂载与 FUSE_INIT
  2. 路径解析、目录操作、属性与引用记账
  3. OPEN、缓存读写、Direct I/O、Writeback 与 RELEASE
  4. 请求分配、队列状态机与 /dev/fuse 传输
  5. 普通 mmap 与 virtio-fs DAX
  6. 卸载、Abort、调试方法与性能分析

学习目标

完成本教程后,应当能够:

  • 区分 VFS inode、FUSE nodeid、generation 和 open file handle;
  • 解释一次请求在 pending、io、processing 和 finished 状态之间的变化;
  • 分析 dentry、attribute 和 data cache 的有效期与失效来源;
  • 从 VFS operation 追踪到 fuse_simple_request()/dev/fuse
  • 判断 cached I/O、direct I/O、passthrough 和 DAX 的选择条件;
  • 使用 fusectl 和 FUSE tracepoints 定位 daemon 卡顿、请求积压和错误应答。