Linus Torvalds 不满 Linux 6.9 中的一些 Bcachefs 代码
Bcachefs 文件系统自从被纳入 Linux 6.7 内核的上游版本以来,一直保持着良好的运行状态。但现如今,随着 Bcachefs 的功能更新被提交到 Linux 6.9 合并窗口,引发了 Linus Torvalds 对其中一些 proposed code 的不满。
维护者 Kent Overstreet 将针对 Linux 6.9 的 Bcachefs 改动的拉取请求总结为:
- Subvolume children btree;是为 walking subvolumes 提供用户空间界面所必需的,计划在稍后提供
- 对目录结构检查进行了大量改进
- 改进了日志管道,显着提高了 high iodepth write workloads 的性能
- Discard path 改进:Discard path 更加高效,并且不再不必要地刷新日志
- Buffered write path 现在可以避免占用 inode lock
- 调出用于 XFS 的各种库代码:time stats、mean_and_variance、darray、eytzinger、thread_with_file
- 新的 mm helper:memalloc_flags_{save|restore}
- mempool now does kvmalloc mempools
但让 Linus Torvalds 感到不解的是,这些补丁把 Bcachefs 代码中的一些元素移到了一些 library-type 的代码中,以至于可以轻松地被其他文件系统重用。
Linus Torvalds 在回应相关 PR 时表示:“我看了看'make random bcachefs code be a library function'的内容,觉得毫无意义,最终决定在没有进一步解释的情况下我不会使用它(老实说,我不认为这些解释站得住脚)。”
并直言 "stdio_redirect_printf() "和 darray_char 都很“恶心”。建议 Overstreet 将其保留在自己的代码中就好,不要试图提交上来。如果实在不死心的话,建议他先做好以下几点:
- 多加解释
- 有更合理的命名,减少恶心和完全无意义的 interfaces ("DARRAY()")。
而且,仅仅找到一个其他文件系统来共享这种代码并不足以证明它是一个合理的 interfaces 和合理的命名。
但是,最主要的问题是疯狂的数学计算。该死的,我们很久以前就讨论过"mean and variance"这种愚蠢的垃圾。当时就错了,现在还是错的。你没有解释为什么它不能使用简单得多的 MAD(median absolute deviation),而不是使用 variance。这个错误的决定直接导致无意义地使用过于复杂的 128 位数学。
我当时称其为疯狂的过度工程化,而就我所知,除了一些轻微的类型名称细节外,绝对没有任何变化。
只要你把它改成某种只适用于 bcachefs 的东西,我就不介意。但现在,你却试图把这些垃圾作为通用库代码推向市场,让其他人也能使用,这就意味着,我会介意这种过度设计的 interfaces。
在其他方面,time_stats 看上去就像是一个有名称和用途的正常 interfaces,但使用了这种可怕的基础架构后,它就变得不伦不类了。
在 Overstreet 争辩之后,Linus 进一步补充道:
加权版本的代码字面上没有任何变化。
variance value 是不同的,但 MAD 和 standard deviation 之间的区别基本上只是一个 constant factor(不同的分布会有所不同,但那又怎样?任何特定情况都会有特定的分布)。那么,为什么 constant factor 会对指数加权产生任何影响呢?
不管怎样,请随意将您的代码保存在 bcachefs 中。也许 xfs 甚至想复制该代码。我不在乎,这看起来很愚蠢,但这是文件系统的选择。但如果我们要把它打造成一个通用的内核库,它就必须是健全的。不要让人们仅仅为了随机统计元素而进行 64 位平方根和 128 位除法。
因此,就目前情况而言,Linus Torvalds 并没有接受这个针对 Linux 6.9 内核的 Bcachefs 拉取请求。至于后续如何,就要看新的 PR 会不会放弃这些补丁或以其他方式重新修改以满足 Linus 的要求。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
凌鲨 0.7.36 版本更新
凌鲨0.7.36版本更新 服务端版本: 0.2.40 新增: 新增atomgit账号授权登录 改进: 切换服务器放到顶部导航栏 改进: 顶部导航栏增加服务器管理入口 去除: 去除体验账号提示 相关截图
- 下一篇
System76 计划 5 月底发布 COSMIC Desktop Alpha
System76 原计划在第一季度末发布 Rust 编写的 COSMIC 桌面环境的第一个 alpha 版本,但现在他们将时间推迟到了 5 月下旬,以便有时间完成新桌面应用程序的功能开发工作。 最初,System76 打算将其首个 COSMIC alpha 版本与 Pop!_OS 22.04 上的 GNOME 应用程序一起发布,但随着 COSMIC 应用程序取得良好进展,他们打算将 alpha 版本的发布时间推迟两个月,以便使其应用程序处于更好的状态。 System76 在终端编辑器、文本编辑器、文件管理器和应用程序商店方面都取得了不错的进展。虽然首个 alphas 版本已经推迟发布,但 System76 的目标仍然是在今年发布 COSMIC 桌面稳定版,同时发布的还有基于 Ubuntu 24.04 LTS 的 Pop!_OS 24.04。 COSMIC 开发人员最近完成了混合图形支持、窗口最小化和还原、新壁纸、平铺小程序和输入设备设置等方面的工作。COSMIC 今后的工作主要集中在应用程序、图标和其他用户界面方面。 更多详情可查看官方博客。
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装Docker,最新的服务器搭配容器使用
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能