LWN:6.4 合并窗口,第一部分!

关注了就能看到更多这么棒的文章哦~

6.4 Merge window, part 1

By Jonathan Corbet
April 28, 2023
DeepL assisted translation
https://lwn.net/Articles/930068/

截至目前,已经有将近 7500 个 non-merge changeset 被合入 6.4 内核版本的 mainline 仓库。6.4 版本的合并窗口显然已经启动,并且已经合入了许多重要改动。请继续阅读了解目前为止最重要的改动有哪些。

BPF

  • 现在可以在更多的 BPF map 类型中存储 kptrs(具体来说是 per-CPU hashmap、LRU hashmap 和 local-storage map)。

  • BPF 程序现在可以在 bpf_timer_start() 中使用绝对时间。

  • 新增了用于 packet 和 XDP buffer 的 kptr 类型。还有其他一些新增 kptr 类型,包括 RCU-protected kptr 和 reference-counted kptr。

  • 开发人员在 uprobe 程序中添加了 Android APK 包的的相关支持。这样以来就可以更容易地把 uprobe 关联到存储在 APK 包中的代码上了。

  • 合入了 generic iterator patch,最终目标是使 BPF 程序中的循环更易写。

  • BPF verifier log 包含了 verifier 拒绝程序的原因这些重要信息,现在可以采用循环记录模式。这使得开发人员在寻找信息时,最有价值的部分更大可能仍保留在日志中。

Core kernel

  • 新增两个 ptrace() 操作:PTRACE_GET_SYSCALL_USER_DISPATCH 和 PTRACE_SET_SYSCALL_USER_DISPATCH,它们用来供一个进程操纵另一个进程的 system-call user dispatch 相关设置。这个功能的目标使用场景是用户空间的检查点/恢复(checkpoint/restore)机制。

  • 如果底层文件系统支持的话,io_uring 子系统可以对一个文件发起多个 direct I/O 并行写入;目前,ext4 和 XFS 有这种支持。还有一个新的 "multishot" timeout 超时选项,可以重复产生 timeout,不需要每次都重新设置 timer 计时器。

Filesystems and block I/O

  • 用 O_DIRECTORY 和 O_CREAT 两个 flag 来调用 open() 的话语义会很奇怪,并且多年来发生过几次变化。从 6.4 版本开始,这种 flag 组合会导致系统调用失败,返回 EINVAL 错误。

  • F2FS 文件系统现在可以支持每个 zone 的 size 不是 2 的幂次的 zoned block device。

  • ublk 驱动的 command code 有了改变。这一改动显然会破坏那些使用了旧的代码的程序;对于他们来说,可以使用配置选项(UBLK_LEGACY_OPCODES)来让旧代码继续正常工作。

Hardware support

  • GPIO 和引脚控制: Loongson 64 位 GPIO 控制器,Fairchild FXL6408 8 位 I2C 控制的 GPIO 扩展器,以及 Intel Elkhart Lake PSE GPIO 控制器。

  • 图形: Magnachip D53E6EA8966 DSI 面板,索尼 TD4353 JDI 面板,诺瓦泰克 NT36523 面板,飞思卡尔 i.MX LCD 控制器,以及三星 MIPI DSIM 桥。

  • 硬件监控: Starfive JH71x0 温度传感器和 ACBEL FSG032 电源。

  • 杂项: 高通云 AI 加速器、飞思卡尔 i.MX8 图像传感器接口、微星笔记本电脑嵌入式控制器、联想 Yoga 平板电脑模式开关、Richtek RT5739 稳压器、Richtek RT4803 升压稳压器和硅谷机顶盒随机数发生器。

  • 网络: Realtek RTL8710B(U)无线接口、联发科 MT7530 和 MT7531 交换机、意法半导体 STM32 基本扩展 CAN 控制器、StarFive dwmac 以太网控制器、AMD/Pensando 核心设备适配器、Realtek 8822BS、8822CS 和 8821CS SDIO 无线网络适配器、NXP 100BASE-TX PHYs 和 Microchip 10BASE-T1S 以太网 PHYs。

Miscellaneous

  • 值得提一下新增的文档中包括了内核贡献成熟度模型(the kernel contribution maturity model)以及关于如何建立一个 trimmed kernel 的详细教程。

  • nolibc 库添加了 loongarch 支持。

Networking

  • 内核现在在 SCTP 协议中支持了公平容量(fair capacity)和加权公平排队(weighted fair queuing) stream scheduler。

  • 在系统的 devicetree 中支持了将 LED 绑定到网络交换机或 PHY。

  • 新增一个基于 netlink 的 API,用于调用用户空间的 helper 函数。关于该功能的概述请参见相关 commit,而关于如何使用该功能来实现 TLS-handshake 请求也有一个相关 commit。

  • 现在可以将 BPF 程序关联到 netfilter 的 hook 上,使得可以用 BPF 来做出数据包转发决策;相关 merge commit 中有更多信息。

Security-related

  • 正如人们所预期的那样,SELinux runtime disable 这个功能已经被移除了。这个功能已经被弃用多年了,而且大多数发行版早已将其禁用,所以很可能没有人会注意到这一点。

  • SELinux 的 "checkreqprot" 功能,可以用来规避对创建可执行内存映射的限制策略,因此也已经被删除。这个功能已经经过了一个漫长的废弃(deprecation)周期,似乎不太可能有人会受到影响。

  • 内核现在可以限制 .machine keyring (存放着机器所有者的密钥),只允许使用公认的证书机构正确签名过的密钥。其目的是允许这个 keyring 可以跟完整性测量架构(IMA, Integrity Measurement Architecture)子系统一起使用。

Internal kernel changes

  • 新增一个通用的机制,能够从用户空间创建内核工作进程(kernel worker process),更多信息请参见相关 commit。

  • 正如预期的那样,SLOB 内存分配器已经被移除。

如果仍然保持了通常的两周时间表的话,6.4 合并窗口可望一致持续开放到 5 月 7 日。等到窗口关闭时,LWN 上会再提供一次摘要。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

format,png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值