linux 6.19 内核中移除了具有“种族灭绝”含义的函数。
linux 内核在推进包容性术语改革方面取得了一定成就。过去数年,linux 内核一直在逐步用更中性的表述替代一些有偏向和带负面意味的词汇,如“master/slave”和“blacklist/whitelist”。但是,一直存在于内核代码中的一个名为“d_genocide()”的函数,已经成为社区关注的问题。
该函数最初在 2023 年的一系列 dcache 升级中被合入主线,并且在提交时引发了人们的争议。 linux 内核开发者 Al Viro 曾经质疑和辩护过“d_genocide()”的命名。他表示,函数的意图是把给定 dentry 及其所有子结点一并删除。但是,他也提到了,该函数的命名在现实世界中找到一个完全不带负面联想的词几乎是不可能的。
该函数只在 kill_litter_super() 中被调用,这是一个负责在特定情形下清理文件系统中“泄漏”的目录项引用时使用。例如,某些文件系统会将整个目录树常驻 dcache,通过额外引用计数防止正向 dentry 被回收,在卸载文件系统时需要一次性清掉这一批残留引用。
随着 linux 6.19 合入最新补丁,这一套与“d_genocide()”和“DCACHE_GENOCIDE”相关的代码已被彻底移除。取而代之的是对卸载流程的重构。根据 Al Viro 在合并请求中的说明,现在改由常规的 shrink_dcache_for_umount() 统一去掉所有 dentry 的 DCACHE_PERSISTENT 标记,并在标记存在时相应减少引用计数。这使得 kill_litter_super() 的行为等同于 kill_anon_super(),再也不需要单独的“genocide”逻辑。
值得注意的是,“genocide”一词只存在于linux 内核的函数名和相关标记中,从未直接呈现给终端用户。然而,在 linux 社区持续推进语言包容性的背景下,这样一个带有强烈负面含义的名字依然显得格格不入,因此在本次重构中一并删除也被视为与整体风格更加一致的调整。随着linux 6.19 的推进,这一历史遗留的具争议性命名正式退出内核代码。
linux 内核在推进包容性术语改革方面取得了一定成就。过去数年,linux 内核一直在逐步用更中性的表述替代一些有偏向和带负面意味的词汇,如“master/slave”和“blacklist/whitelist”。但是,一直存在于内核代码中的一个名为“d_genocide()”的函数,已经成为社区关注的问题。
该函数最初在 2023 年的一系列 dcache 升级中被合入主线,并且在提交时引发了人们的争议。 linux 内核开发者 Al Viro 曾经质疑和辩护过“d_genocide()”的命名。他表示,函数的意图是把给定 dentry 及其所有子结点一并删除。但是,他也提到了,该函数的命名在现实世界中找到一个完全不带负面联想的词几乎是不可能的。
该函数只在 kill_litter_super() 中被调用,这是一个负责在特定情形下清理文件系统中“泄漏”的目录项引用时使用。例如,某些文件系统会将整个目录树常驻 dcache,通过额外引用计数防止正向 dentry 被回收,在卸载文件系统时需要一次性清掉这一批残留引用。
随着 linux 6.19 合入最新补丁,这一套与“d_genocide()”和“DCACHE_GENOCIDE”相关的代码已被彻底移除。取而代之的是对卸载流程的重构。根据 Al Viro 在合并请求中的说明,现在改由常规的 shrink_dcache_for_umount() 统一去掉所有 dentry 的 DCACHE_PERSISTENT 标记,并在标记存在时相应减少引用计数。这使得 kill_litter_super() 的行为等同于 kill_anon_super(),再也不需要单独的“genocide”逻辑。
值得注意的是,“genocide”一词只存在于linux 内核的函数名和相关标记中,从未直接呈现给终端用户。然而,在 linux 社区持续推进语言包容性的背景下,这样一个带有强烈负面含义的名字依然显得格格不入,因此在本次重构中一并删除也被视为与整体风格更加一致的调整。随着linux 6.19 的推进,这一历史遗留的具争议性命名正式退出内核代码。