关注了就能看到更多这么棒的文章哦~
The rest of the 5.6 merge window
By Jonathan Corbet
February 10, 2020
原文来自:https://lwn.net/Articles/811230/
Linus在2月9日发布了5.6-rc prepatch,关闭了合入窗口。针对5.6 kernel,有10,780个changset合入了mainline repository。这比起近期的几个开发周期来说少了好多(5.5版本有14,350个,5.4有14,619个),不过跟去年同期的数字差不多(2019年1月的5.0-rc1有10,843个changset)。其中,有约6000个改动是在LWN的上一篇文章之后合入的,下面介绍一下这些改动。
Architecture-specific
在3.19时合入的Intel memory protection extension被移除了。这个功能没能占据市场主流,GCC编译器里面也已经移除了对它的支持代码。
RISC-V架构支持了KASAN address sanitizer。
Core kernel
最后一个使用32位timer_t类型的地方被修复了,相关的数据类型也从kernel里面删掉了。也就是说,除了少数一些问题以外,Linux kernel基本已经可以处理好year-2038问题了。user-space还需要不少工作,32位系统上的应用程序需要使用更新后的C库。更多细节见merge commit https://git.kernel.org/linus/22b17db4ea05
io_uring subsystem支持了更多操作,参见此文:https://lwn.net/Articles/810414/
合入了pidfd_getfd()系统调用,用来供进程从另一个进程获取一个被打开的文件描述符。
"bootconfig"机制允许kernel在启动的时候接受一个包含command-line参数的文件。主要应用场景是例如在boot-time设置kprobe。tools目录下的bootconfig工具是用来把这种文件加入initramfs image里面的。文档见此https://git.kernel.org/linus/7b9b816f4b9a 。还有一组新增参数可以控制boot-time tracing设置的,文档见此 https://git.kernel.org/linus/47781947947a
改变了pipe waiting的工作机制,可以加速kernel并行编译的速度——kernel开发者最常做的工作——不过同时也可能会在搭配旧版本GNU Make工具的时候导致bug。
Filesystems and block I/O
F2FS文件系统支持压缩了。参见https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4c8ff7095bef
新增了softreval NFS mount选项,可以在server下线的时候通过缓存里的数据来让attribute revalidation 成功。如change log所说:“这个功能是为了让我们哪怕在server已经无法访问的情况下也可以遍历路径和使用已经缓存的信息(可能会比较慢)”
缺省关闭了通过UDP进行NFS mount的功能。
支持了NFS v4.2 server-to-server文件复制功能。
ZoneFS文件系统,协助支持对zoned block device的底层访问功能。参见https://git.kernel.org/linus/8dcc1a9d90c1
Hardware support
Clock: Qualcomm MSM8998 multimedia clock controllers, Qualcomm SC7180 clock controllers, Qualcomm IPQ6018 global clock controllers, and NXP IMX8MP CCM clock controllers.
Graphics: Boe Himax8279d panels, R-Car DU color-management modules, Xinpeng XPP055C272 panels, Leadtek LTK500HD1829 panels, and Sony ACX424AKP DSI command-mode panels.
Miscellaneous: Rockchip image signal processing units, TI TPS61050/TPS61052 LED controllers, ROHM BD71828 Power Management ICs, Qualcomm WCD9340/WCD9341 codecs, SGI IOC3 PS/2 controllers, and Mediatek system companion processors.
PCI: Broadcom Brcmstb PCIe host controllers and Intel Gateway PCIe host controllers.
Memory management
新增了一个名为PR_SET_IO_FLUSHER的prctl()操作。目的是把一个进程标记为帮助进行内存回收的I/O操作的,从而在内存紧张的时候这个进程也不会被限制。在kernel里,会对这个进程的task structure设置PF_MEMALLOC_NOIO和PF_LESS_THROTTLE flag。
dma-buf heaps subsystem终于合入了,它起源于Android ION allocator。
Security-related
/dev/random blocking pool的patch被移除了。这个改动导致/dev/random的行为更像/dev/urandom了,也就是在pool被初始化之后不会再导致blocking。
Virtualization and containers
VirtualBox里运行的Linux guest系统现在可以mount由host系统export出来的文件目录了。
Internal kernel changes
pin_user_pages() API合入了,用于让kernel能更好地统计有哪些user-space page被pin在RAM里面。不过相应的利用这个功能的完整架构还没有合入。
build系统现在会test所有的UAPI头文件的#ifdef标记,避免把它们include了两次。
新增了一个API在kernel生成synthetic trace event,参见https://git.kernel.org/linus/34ed63573b66 (注:可以用于在kernel里面配置监听某些trace event)
从现在到3月底4月初为止,kernel开发社区需要找寻并修复上述所有这些工作引入的bug了。
全文完
LWN文章遵循CC BY-SA 4.0许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注LWN深度文章以及开源社区的各种新近言论~