3 个版本

使用旧的 Rust 2015

0.1.3 2021 年 3 月 18 日
0.1.2 2017 年 6 月 20 日
0.1.0 2017 年 5 月 10 日

#1489文件系统

23 每月下载次数
2 crates 中使用

MPL-2.0LGPL-3.0

17KB
342 代码行

Version

platter-walk

一个基于物理磁盘布局优化的递归目录条目迭代器。考虑了块偏移量(通过 FIEMAP[1])、inode 表和磁盘缓存局部性。

对于具有对底层块设备读取访问权限的用户(root),它还对跨越多个目录的目录索引执行预读。这有点像是黑客行为,因为 readahead()posix_fadvise() 不能直接在目录上工作,因为它们使用单独的缓存。[2][3]

最大的好处可以在使用 ext4 文件系统的 HDD 上实现。

可以优化遍历:

  • 简单的目录条目列表(仅名称和 d_type
  • 详细条目列表(stat
  • 读取文件内容。条目批次按物理偏移量排序。

请参阅 ffcntfastar 的基准测试。

依赖项

~3MB
~61K SLoC