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