LWN:5.10合并窗口的后半部分!

微信扫一扫,分享到朋友圈

LWN:5.10合并窗口的后半部分!

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

The rest of the 5.10 merge window

By Jonathan Corbet October 26, 2020 https://lwn.net/Articles/834504/

Linus Torvalds 在 10 月 25 日的时候发布了 5.10-rc1,关闭了 5.10 周期的合并窗口。当时,已经有 13,903 个 changeset 合入了 mainline。其中有超过 6,700 个是在 LWN 的上半场总结之后合入的,其中包含了许多有意思的功能。请继续阅读来了解 5.10 中的新功能。

Architecture-specific

  • s390 架构一直没有支持好 leap second(闰秒),每当出现 lead second 情况时,都需要重启系统,才能让时间正确对应上。这个行为不是很好。在 5.10 版本中,s390 系统将可以在运行时动态调整 lead second 了。参见https://git.kernel.org/linus/b2539aa0d7ff

  • MIPS 架构支持启动 zstd 算法压缩过的 kernel 了。

  • RISC-V 架构支持在带有 EFI firmware 的系统上启动了。

Core kernel

  • 部分类型的 BPF program 现在执行过程中可以 sleep 了。这个功能目前只限于 tracing 和 security-module program。

  • 在 bpf()中新增了 BPF_PROG_BIND_MAP 命令,用来给加载好的 program 来绑定 map。目的是方便存储相关 program 不使用的 metadata。

  • BPF program 现在可以利用 bpf_per_cpu_ptr()和 bpf_this_cpu_ptr()这两个帮助函数来访问 per-CPU 变量。

  • 新增 process_madvise()系统调用。这样一个进程就可以代替另一个进程来执行 madvise()功能了。process_madvise()在今年一月份的 LWN 文章中介绍过,不过 API 已经改变了。请参看 https://git.kernel.org/linus/ecb8ac8b1f14

Filesystems and block I/O

  • overlay 文件系统新增了一个”volatile” mode,用来让它忽略各种 fsync()的调用。这个模式很危险,不过对于在进行 image 编译等场景是非常有帮助的。这些场景里面哪怕系统突然死机了,也完全可以重新来过,不担丢失数据。参见 https://git.kernel.org/linus/c86243b090bc

  • zonefs 文件系统新增了 explicit-open mount 参数。使用了这个参数的话,打开文件做写入操作的话,会让设备上相关的 zone 变到 active 状态。这样就确保成功打开的 zone 后续可以成功地写入。参见 https://git.kernel.org/linus/48bfd5c6fac1

  • XFS V4 文件系统格式标记为 deprecated 状态。用户应该要升级到功能更强大的 V5 格式。V4 至少会支持到 2030 年,用户有足够的时间来做这个改动。

  • ext4 文件系统新增了一个 “fast commits” 模式,可以大大减少许多文件操作的 latency。性能提升很大,参见 https://lwn.net/ml/linux-ext4/20201015203802.3597742-1-harshadshirwadkar@gmail.com/ 这里贴出来的 benchmark 结果,以及针对 fast commit 功能的讨论。

  • 新增了 nosymfollow 这个 mount 参数,在解析此文件系统中路径的时候不会根据符号链接来跳转。不过应用程序还是可以使用 readlink()调用来自己 follow 符号链接的。

Hardware support

  • Clock: Micro Crystal RV3032 realtime clocks, R-Car V3U clocks, Allwinner A100 clock control units, MediaTek MT8167 clock controllers, and Qualcomm SM8150 and SM8250 display clock controllers.

  • Miscellaneous: Vivaldi keyboards, Renesas RPC-IF HyperBus controllers, Ricoh RN5T618 charger/fuel gauges, TI BQ25980 battery chargers, Mellanox BlueField I2C controllers, joysticks connected via analog-to-digital converters, Zinitix touchscreens, Toshiba Visconti watchdog timers, and TI R5F remote processor subsystems.

  • Networking: MediaTek MT7531 Ethernet switches, Marvell Prestera switches, and Microchip MCP25xxFD SPI CAN controllers.

Networking

  • 现在可以通过加载一个 BPF program,在 network packet 经过本系统的时候改动 TCP header option 了。参见https://git.kernel.org/linus/0813a841566f

  • 继续在合入 multipath TCP 功能。5.10 将可以在多个数据流上同时传输数据了。

  • 支持了 IGMPv3/MLDv2 多播协议(RFC 4604)

  • 支持了 ISO 15765-2:2016 CAN 传输层协议。

Security-related

  • SafeSetID security module 也可以控制 group-ID 的改动了。

Virtualization and containers

  • KVM hypervisor 现在可以延后让后续的 user-space 进程来处理对未知(unknown)的 model-specific registers(MSRs)的访问了。这里有更多信息https://git.kernel.org/linus/1ae099540e8c, 还有这里提供了一个过滤机制来对 MSR 处理有更多控制 https://git.kernel.org/linus/1a155254ff93。

Internal kernel changes

  • continuous memory allocator (CMA) 现在可以选择也考虑 NUMA 了。使用这个功能的话需要预先设置 DMA_PERNUMA_CMA 并且启动时要带有 cma_pernuma= 这个命令行参数来指定 per-NUMA 空间的 size。DMA mapping layer 也经过了改动,可以支持这个功能。

  • 新增了一个 API 来分配 non-coherent DMA 区域,参见 https://git.kernel.org/linus/0d71675f87dc 。还有一个新的函数(dma_direct_alloc_pages())用来从 page allocator 来直接获取可以用于 DMA 的 memory。

  • 根据 8 月份的讨论(https://lwn.net/Articles/828705/) ,改动了 prando_u32(),从而来解决一些理论上可能存在的安全问题。新的代码使用了 SipHash 哈希算法的一个变种来生成伪随机数,并且添加了一些内部的随机熵来源。

现在,是时候来解决这些代码中的 bug 了。这个工作会持续 7~8 周,最终大概在 12 月 13 日或者 20 日发布最终的 5.10 版本。作为 2020 年的最后一次发布,5.10 可能会成为下一个长期支持版本(long-term-support)的 kernel。所以实际上在 12 月份发布时,5.10 的工作,才刚刚开始。

全文完

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

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

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

微信扫一扫,分享到朋友圈

LWN:5.10合并窗口的后半部分!

车主无忧:为什么放弃开源Kafka?

上一篇

TiDB x 微众银行 | 耗时降低 58%,分布式架构助力实现普惠金融

下一篇

你也可能喜欢

LWN:5.10合并窗口的后半部分!

长按储存图像,分享给朋友