blk-mq獲得了Linux Kernel 5.8的加密支持
為了提高加密性能,Google工程師目前正在擴展內聯(lián)加密支持的Linux文件系統(tǒng)加密管理工具fscrypt。 相關的研發(fā)包括在Linux 5.8塊設備隊列管理blk-mq中引入了內聯(lián)加密。
fscrypt 是用于 Linux 文件系統(tǒng)加密管理的高級工具,它管理元數(shù)據、密鑰生成、密鑰封裝與 PAM 集成,并提供用于創(chuàng)建和修改加密目錄的統(tǒng)一界面。fscrypt 的內核部分已集成到諸如 ext4 的文件系統(tǒng)中。
blk-mq 則是 Linux 的塊設備層多隊列機制,它將 Linux 內核存儲棧中請求層的單隊列改成多隊列,理論上提升性能。
如果接下來 blk-mq 支持內聯(lián)加密,那么它能夠在存儲棧中向下傳遞加密上下文,目前 Linux 內核源碼 commit中解釋:我們必須通過某種方式讓存儲設備驅動程序知道它應該用于加密/解密請求的加密上下文。而上層(例如文件系統(tǒng)/fscrypt)知道情況并且管理加密上下文。這樣,當上層提交 BIO 到塊層,這個 BIO 最終到達的設備驅動程序支持內聯(lián)加密,那么設備驅動程序則已經表明了 BIO 的加密上下文。
代碼上具體改動是將 struct bio_crypt_ctx 添加到 struct bio 中,用來表示加密上下文,同時引入各種用于操作 bio_crypt_ctx 并使 bio/request 合并邏輯知曉 bio_crypt_ctx 的函數(shù)。