Linus Torvalds 不满提交到 Linux 6.9 的部分 Bcachefs 代码


自从文件系统 Bcachefs 进入 Linux 6.7 内核的上游以来,运行一直很顺利。然而,当Bcachefs 的功能更新提交到 Linux 6.9 合并时,Linus Torvalds 表示对其中一些提议的代码并不满意。

原文链接:https://www.phoronix.com/news/Linux-6.9-Bcachefs-Attempt

未经允许,禁止转载!

作者 | Michael Larabel        译者 | 弯月

责编 | 夏萌

出品 | CSDN(ID:CSDNnews)提交给 Linux 6.9 的 Bcachefs 代码包括为遍历子卷提供用户空间接口的预处理工作,改进目录结构的检查,改进日志流水线以提高性能,更高效的丢弃路径改进以及其他优化。维护人员 Kent Overstreet 总结的关于 Linux 6.9 的 Bcachefs 变更拉取请求如下:

Linux 6.9 的 Bcachefs 更新:

  • 子卷子B树:提供一个用户空间接口以遍历子卷(该功能后续提供)。

  • 目录结构检查的大量改进。

  • 改进了日志流水线,大幅提升了高 iodepth 写工作负载下的性能。

  • 改进了丢弃路径:丢弃路径更高效,不再不必要地刷新日志。

  • 缓冲写路径现在可以避免获取 inode 锁。

  • 提取出各种库代码以供 XFS 使用:时间统计、均值和方差、动态数组、eytzinger、thread_with_file。

  • 新的内存管理助手:memalloc_flags_{save|restore}

  • mempool 现在可以使用 kvmalloc 内存池

然而,令 Linus Torvalds 感到不满的代码是将 Bcachefs 代码中的一些元素移到某种库的代码中,以便其他文件系统可以轻松地重复使用,而 XFS 就是可能会重用某些Bcachefs函数的文件系统之一。

Linus Torvalds 对 Bcachefs 的拉取请求做出了如下回应:

我看了一下“让随机的 bcachefs 代码成为库函数”,我觉得毫无意义,所以这意味着没有进一步的解释我不会拉取这些代码(老实说,我认为即便有解释也不行)。

在没有说明的情况下,“stdio_redirect_printf()”和 darray_char 就是一些可怕的接口。这些接口非常糟糕。

请将这些保留在您自己的代码中,不要试图让使其成为通用库。

如果你十分想将它作为库,则需要:

  1. 更详细的说明

  2. 更合理的命名,减少毫无意义的接口(“DARRAY()”)。

另外,找到另一个文件系统来共享这种代码并不足以让它成为一个合理的接口和合理的命名。

最大的问题在于数学部分。

我们早就讨论过“均值和方差”。当时就说过这是个错误,现在依然是。

你没有解释为什么不能使用简单一万倍的 MAD(中位数绝对偏差),为什么非要使用方差。

这个糟糕的决定直接导致你使用了过度复杂的 128 位数学,毫无意义。

我当时就说过这是过度设计,而且在我看来,除了一些类型名称的细节之外,绝对没有发生任何变化。

你可以将其作为仅适用于 bcachefs 的代码,我不介意。

但如今你正在试图将这些垃圾提交到其他人也会使用的通用库,那么我会非常介意过度设计的接口。

要是没有这些可怕的设计, time_stats 的名字和接口至少还是合理的。

在经过一番讨论后,Torvalds 补充道:

加权版本的代码实际上没有变化。

方差值不同,但中位数绝对偏差和标准差之间的差异实际上只是一个常数因子(对于不同的分布来说,这个常数因子会不同,但那又怎样?任何特定的情况都会有特定的分布)。

为什么一个常数因子会对指数加权产生影响呢?

不管怎么说,你大可以将代码保留在 bcachefs 中。

也许 XFS 甚至想要复制那段代码。但我不关心,我觉得很愚蠢,但这是文件系统的选择。

但如果你想将其作为一个通用内核库,那就需要合理的代码。不要为了一个随机的统计元素而进行 64 位平方根和 128 位除法运算。

就目前而言,由于Bcachefs提议的通用库代码,Linus Torvalds 不接受此次拉取请求。时下,修改后的拉取请求已被合并到 Linux 6.9 中,但不包括库代码。

推荐阅读:

史上最大开源LLM,参数高达3140亿!马斯克如约开源Grok,10小时狂揽10000颗Star

拥有 17 年经验的硕士码农,到了 43 岁连面试机会都没有……

纵览机器学习前生今世,万字整理谷歌首席科学家 Jeff Dean 一小时演讲

4 月 25 ~ 26 日,由 CSDN 和高端 IT 咨询和教育平台 Boolan 联合主办的「全球机器学习技术大会」将在上海环球港凯悦酒店举行,特邀近 50 位技术领袖和行业应用专家,与 1000+ 来自电商、金融、汽车、智能制造、通信、工业互联网、医疗、教育等众多行业的精英参会听众,共同探讨人工智能领域的前沿发展和行业最佳实践。欢迎所有开发者朋友访问官网 http://ml-summit.org、点击「阅读原文」或扫码进一步了解详情。

相关推荐

  • 分析了 500 万份工作,看看有多少正被 AI 取代?
  • 50+国内外大模型专家齐聚,全球机器学习技术大会第二批嘉宾阵容公布!
  • 为什么defineProps宏函数不需要从vue中import导入?
  • helloworld - 同一个世界,同一行代码
  • 养成15个好的代码小习惯,让老大对你刮目相看
  • 一次真实生产事故,让我总结了线程池的正确使用方式
  • 谁说MySQL单表行数不要超过2000W?
  • 假如周处除三害发生在 IT 圈
  • springboot第65集:字节跳动一面经,一文让你走出微服务迷雾架构周刊
  • Spring Boot 整合 Postgres 实现轻量级全文搜索
  • 告别 BeanUtil.copyProperties,这款IDEA插件才是最优的替代方案!
  • Three.js 快速入门指南
  • 公司新来一个技术总监:谁再在 SQL 中写 in 和 not in,直接走人!
  • redis分布式锁的原理及java的实现代码
  • Hive和Hbase数据互通(用户画像)
  • 原生 JS 打造的一款开箱即用的后台 UI 框架!!!
  • 投身AI的路上,我为什么决定去趟南极?
  • 鹅厂程序员推荐的好书系列第一弹
  • 浙大应届生,校招入职,上班3个月被裁员,Boss都翻烂了也没人要,开始怀疑自己
  • 简单聊聊JVM中的几种垃圾收集算法