找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

776

积分

0

好友

108

主题
发表于 16 小时前 | 查看: 0| 回复: 0

近日,由 F2FS 维护者 Jaegeuk Kim 提交的补丁 f2fs: support large folio for immutable non-compressed case 已被合入 F2FS 的开发分支。这标志着 F2FS 文件系统在适配 Linux 内核 large folio 特性的道路上迈出了试探性的第一步。

F2FS支持large folio的补丁提交说明截图

该补丁实现的支持范围非常有限,仅针对不可修改(immutable)且非压缩的文件。这里的“不可修改”是通过设置文件的 immutable 属性来强制保证的,而非简单地去除写权限,从而在逻辑上规避了写入操作可能带来的复杂场景。

我们可以通过 f2fs_io 工具为文件设置此属性:

f2fs_io setflags immutable /data/testfile_read_seq

正是由于目标场景被严格限定,使得 Kim 的这次修改复杂度相对可控。补丁的核心变更主要集中在读路径上,新增了一个 f2fs_read_data_large_folio() 函数,用于读取一个 large folio

f2fs读取路径中增加large folio支持的代码截图

当然,文件的 immutable 属性是可以被清除的:

f2fs_io clearflags immutable /data/testfile_read_seq

这就会打破文件“不可修改”的初始假定。目前,Kim 采用的解决方法是,在属性被清除后,必须强制清空页缓存(page cache)来绕过问题:

通过drop_caches清空页缓存的命令行操作截图

在页缓存被清空之前,一个刚被清除 immutable 标志的文件是无法被写入的,相关代码中增加了相应的检查逻辑。

f2fs文件打开函数中增加写模式检查的代码diff截图

这种做法略显别扭,但无论如何,整个社区在推动 F2FS 支持 large folios 的方向上总算是前进了一小步。尽管这一步的实用价值在当前看来可能并不显著,但它为后续更全面的支持奠定了基础。

值得一提的是,在整个开发和测试过程中,开发者 Nanzhe Zhao(南哲)发现并修复了多个相关的 Bug,这些修复提交同样可以在开发分支的日志中看到,体现了开源社区协作完善代码的过程。

F2FS git仓库提交记录截图,显示相关修复

对于关注 Linux内核 与文件系统发展的开发者来说,这是一个值得注意的技术动态。虽然距离 large folio 在 F2FS 中得到完整、高效的支持还有很长的路要走,但每一次代码提交都是构建未来基础设施的重要基石。你可以在 云栈社区 找到更多关于底层系统与性能优化的深度讨论。




上一篇:干货 | LLM自组织多智能体框架Agent Society:基于能力原语与运行时的智能体自主协作方案
下一篇:深入浅出GNU链接器ld:从目标文件到可执行文件的链接过程解析
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-28 18:12 , Processed in 0.425320 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表