ecryptfs(一般为 FUSE 文件系统)如何与缓冲区缓存交互?

ecryptfs(一般为 FUSE 文件系统)如何与缓冲区缓存交互?

我的假设(这似乎是不正确的)是 ecryptfs(通常是 FUSE 文件系统)使用以下堆栈机制:

  • 用户代码问题read()
  • 内核尝试满足来自现有(未加密)缓冲区的请求
  • 缓冲区不存在,内核要求 ecryptfs 加载块
  • ecryptfs 要求内核加载物理(加密)块,内核执行此操作并将其存储在缓冲区缓存中
  • ecryptfs解密物理块
  • 内核将解密的块存储在缓冲区高速缓存中
  • 后续读取是从缓存中的解密块完成的

然而,比较加密和非加密文件系统上相同操作的“sys”时间,看来缓存中唯一的缓冲区是加密的,并且 ecryptfs 在每个read().上图为保险丝主页没有提到缓冲区缓存,但似乎表明操作发生在系统调用级别,而不是块级别。

熟悉 ecryptfs(达斯汀?)或 FUSE 内部结构的人可以回答这个问题吗?

相关内容