LWN: 5.13 合并窗口第二部分!
關(guān)注了就能看到更多這么棒的文章哦~
The second half of the 5.13 merge window
By Jonathan Corbet
May 10, 2021
DeepL assisted translation
https://lwn.net/Articles/855140/
在最后一個(gè) pull request 被合入以及發(fā)布 5.13-rc1 時(shí),總共有 14,231 個(gè) non-merge commit 進(jìn)入 mainline。這使得 5.13 的合并窗口比起 5.12 開發(fā)周期(13,015 個(gè)提交)的規(guī)模還要大,僅僅比 5.11 的全部 commit 數(shù)量(14,340 個(gè))略少。換句話說(shuō),5.13 也算是我們最近一段時(shí)間內(nèi)看到的比較繁忙的開發(fā)周期之一了。這些提交中大約有 6400 個(gè)是在上次的前半程總結(jié)寫完之后提交的,其中包括一些重要的新功能。
在 5.13 合并窗口的后半部分中合并的改動(dòng)包括:
Architecture-specific
arm64 架構(gòu)已將 SPARSEMEM_VMEMMAP 作為唯一支持的內(nèi)存管理模型(memory-management model)。
32 位 PowerPC 系統(tǒng)現(xiàn)在支持 extended BPF 和 KFENCE 調(diào)試功能。
PowerPC 系統(tǒng)現(xiàn)在支持 time namespaces。
RISC-V 架構(gòu)支持了 kexec、crash dumps(利用 kexec)、execute-in-place,以及 kprobes。
s390 系統(tǒng)現(xiàn)在可以在系統(tǒng)調(diào)用的處理程序(system-call handlers)中對(duì)堆棧偏移量進(jìn)行隨機(jī)化處理。
Core kernel
BPF tracing program 現(xiàn)在可以使用 task-local storage,比起使用 BPF maps 來(lái)說(shuō)有性能優(yōu)勢(shì)。
BPF program 支持了一種新的機(jī)制,可以直接調(diào)用內(nèi)核里的函數(shù)了。這個(gè)功能起初的應(yīng)用場(chǎng)景是實(shí)現(xiàn) TCP 擁塞控制算法。調(diào)用的函數(shù)需要被明確地列入白名單,BPF 才可以調(diào)用。相關(guān)信息可以在此提交(https://git.kernel.org/linus/e6ac2450d6de )中找到。
function tracer(ftrace)新增了一個(gè) func-no-repeats 選項(xiàng),這樣對(duì)一個(gè)函數(shù)的多次連續(xù)調(diào)用在輸出信息中就被轉(zhuǎn)換成一個(gè)簡(jiǎn)單的次數(shù)信息了。
使用 userfaultfd() 在用戶空間進(jìn)行 page-fault 處理,現(xiàn)在可以管理 minor faults 了(指那些存在 valid page 但沒(méi)有 valid page-table entry 引起的 fault)。關(guān)于這項(xiàng)功能的信息以及使用方法,請(qǐng)參見此提交(https://git.kernel.org/linus/7677f7fd8be7)。
古老的(同時(shí)也是很危險(xiǎn)的)/dev/kmem 這個(gè)特殊文件,終于被刪除了。它提供了對(duì)內(nèi)核地址空間的訪問(wèn)能力。
Filesystems and block I/O
exFAT 文件系統(tǒng)已經(jīng)獲得了對(duì) FITRIM ioctl() 的支持,用來(lái)通知存儲(chǔ)設(shè)備這些 block 不再使用。
XFS 文件系統(tǒng)現(xiàn)在可以從文件系統(tǒng)的最后一個(gè) allocation group 中移除空間了,這是為了實(shí)現(xiàn) XFS 文件系統(tǒng)的 shrink(縮減)功能邁出的第一步。
新增了一個(gè)關(guān)于 quota(配額)的系統(tǒng)調(diào)用:
int quotactl_path(unsigned int cme, const char *mountpoint, qit_t id,
void *addr);它的行為與 quotactl()相似,但是它的參數(shù)是一個(gè)文件系統(tǒng)的 mount 位置的路徑,而不是放置該文件系統(tǒng)的 block device。
fanotify 機(jī)制中的一些功能一直只有特權(quán)用戶才可以使用,但在 5.13 中移除了其中一些限制。關(guān)于哪些是允許的、哪些是不允許的,請(qǐng)看此提交的描述:https://git.kernel.org/linus/7cea2a3c505e
Ext4 文件系統(tǒng)現(xiàn)在會(huì)在刪除文件時(shí)將目錄項(xiàng)(directory entry)覆蓋掉。Ext4 現(xiàn)在也可以處理那些既使用了大小寫區(qū)分以及加密了。
Hardware support
人機(jī)界面設(shè)備:FTDI FT260 USB HID 到 I2C 主機(jī)橋接器,微軟 Surface 系統(tǒng)聚合模塊 HID 傳輸器,Azoteq IQS626A 電容式觸摸控制器,MStar msg2638 觸摸屏,Ilitek I2C 213X/23XX/25XX/Lego 系列觸摸控制器,以及 Hycon hy46xx 觸摸屏。
雜項(xiàng):Silicon Labs CP2615 USB I2C 適配器,HiSilicon I2C 控制器,Unisoc IOMMUs,Intel Data Accelerators 性能監(jiān)視器,Toshiba Visconti 脈寬調(diào)制器,MediaTek Gen3 PCIe 控制器和 SiFive FU740 PCIe 主機(jī)控制器。
網(wǎng)絡(luò)。Marvell 88X2222 PHYs、Broadcom BCM6368 MDIO 總線復(fù)用器、Actions Semi Owl 以太網(wǎng) MACs、Microsoft Azure 網(wǎng)絡(luò)適配器、NXP C45 TJA11XX PHYs 以及 Microchip KSZ8863 和 KSZ8873 交換機(jī)。
引腳控制。Broadcom BCM63xx GPIO 控制器、Mediatek MT8195 引腳控制器、Xilinx ZynqMP 引腳控制器和 Realtek Otto GPIO 控制器。
聲音。Realtek RT1316 編解碼器,Realtek RT711 和 RT715 SDCA 編解碼器,Realtek RT1019 單聲道 D 類音頻放大器,以及聯(lián)發(fā)科 MT6359 ACCDET 插孔控制器。
Virtio:為藍(lán)牙控制器和聲音設(shè)備增加了新的 virtio 驅(qū)動(dòng)程序。
Security-related
經(jīng)過(guò)多年的工作,修改了 34 次之后,Landlock security module 終于被合并了。
Landlock 的目標(biāo)是希望能夠限制一組進(jìn)程的周邊權(quán)限(例如能否訪問(wèn)全局文件系統(tǒng))。由于 Landlock 是一個(gè)可堆疊的 LSM,這樣今后就可能在現(xiàn)有的全系統(tǒng)訪問(wèn)控制之外創(chuàng)建安全的沙盒了。
更多信息見 https://landlock.io/
Internal kernel changes
vmalloc()現(xiàn)在可以創(chuàng)建 huge-page mapping 了。
新增一些函數(shù)用于在一次調(diào)用中分配成批的 page:alloc_pages_bulk() 和 alloc_pages_bulk_array() 。文檔很少,但在這個(gè)提交(https://git.kernel.org/linus/387ba26fb1cb)和另一個(gè)提交(https://git.kernel.org/linus/0f87d9d30f21)中可以找到一些信息。
關(guān)于上述兩個(gè)改動(dòng)的更多信息,可以參看這篇文章https://lwn.net/Articles/855226/
有一個(gè)功能這次沒(méi)能進(jìn)入 kernel,那就是之前提出的 memfd_secret() 系統(tǒng)調(diào)用,它用來(lái)創(chuàng)建對(duì)系統(tǒng)的其他部分(包括內(nèi)核)隱藏起來(lái)的內(nèi)存區(qū)域。Andrew Morton 對(duì)該功能是否實(shí)用表示懷疑,這引出了一些潛在的用戶說(shuō)他們確實(shí)需要這個(gè)功能。Morton 現(xiàn)在似乎被說(shuō)服了,但是這時(shí)已經(jīng)趕不上 5.13 了。所以 memfd_secret() 應(yīng)該會(huì)在 5.14 中出現(xiàn)。
如果 5.13 內(nèi)核在 7 個(gè)-rc 版本后正式發(fā)布,那么就是在 6 月 27 日。如果需要有-rc8 的話,5.13 就可以在美國(guó) 7 月 4 日的煙火和慶祝中誕生了。合并窗口已經(jīng)結(jié)束,但仍有相當(dāng)多的工作要做才能將這個(gè) kernel 版本正式推出。
全文完
LWN 文章遵循 CC BY-SA 4.0 許可協(xié)議。
長(zhǎng)按下面二維碼關(guān)注,關(guān)注 LWN 深度文章以及開源社區(qū)的各種新近言論~
