将近一年前的今天,我曾指出,Linux 开发者正在考虑从内核中移除苹果的 HFS 和 HFS+ 文件系统驱动程序。这些驱动在过去十年中一直无人维护,逐渐成为上游开发者眼中的维护负担。然而令人意外的是,后来有几位开发者主动站出来,承担起维护 HFS(+) 驱动的责任。一年过去了,这已成为一个成功的故事:针对这一日渐老化的苹果文件系统支持,持续不断地推出了更多修复补丁。
去年,当这些开发者挺身而出维护 HFS/HFS+ 驱动后,使得它们得以保留在主线内核中,此后我们几乎每个内核发布周期都能看到一系列修复。在 Linux 7.1 版本中,以及如今一年之后,又有一大批修复即将合并到主线代码树中。

HFS/HFS+ 文件系统驱动代码修复了由 Syzbot 报告的多个问题,同时也解决了部分 xfstests 测试失败的情况。这些修复来自四位开发者,包括以下内容:
- hfsplus: 修复 generic/642 测试失败问题
- hfsplus: 重构扩展属性(xattr)B 树中节点映射的创建逻辑
- hfsplus: 修复 B 树节点分配/释放的逻辑问题
- hfsplus: 修复 hfs_bmap_free() 中的错误处理问题
- hfsplus: 修复 B 树功能中的潜在竞争条件(race conditions)
- hfsplus: 将隐藏目录搜索功能提取为一个辅助函数(helper function)
- hfsplus: 修复 hfsplus_fill_super() 中释放已持有锁的问题
- hfsplus: 修复 generic/523 测试用例失败
- hfsplus: 在挂载时验证 B 树节点 0 的位图
- hfsplus: 重构 B 树映射页的访问方式,并增加节点类型验证
- hfsplus: 重命名后更新 ctime(更改时间)
- hfsplus: 修复 generic/533 测试用例失败
- hfsplus: 在 setxattr 和 removexattr 操作后设置 ctime
- hfsplus: 通过验证目录记录大小来修复未初始化值问题
- hfsplus: 修复 fsync 后可能导致分配文件(Allocation File)损坏的问题
所有详细信息可通过 Linux 7.1 的 HFS 拉取请求(pull request)查看。随着这些维护工作的持续推进,尽管 macOS 已经专注于苹果自家的 Apple File System(APFS),但 HFS/HFS+ 文件系统支持在 Linux 主线内核中依然运行良好、充满活力。
转自 Apple HFS / HFS+ File-System Support Seeing Many Fixes For Linux 7.1 – Phoronix
Linuxeden开源社区