Устранение дублирования и переход на blk-crypto
Разработчик Google Эрик Биггерс (Eric Biggers) отправил в основную ветку Linux 7.3 значительный пулл-реквест, посвященный рефакторингу FSCRYPT. Ключевое изменение заключается в удалении избыточных реализаций шифрования отдельных файлов, которые ранее дублировались в файловых системах EXT4 и F2FS. Теперь для шифрования содержимого файлов используется единый механизм blk-crypto.
Это архитектурное решение не только упрощает код, но и открывает доступ к аппаратному ускорению шифрования на совместимом оборудовании, что ранее было ограничено или требовало специальных опций монтирования.
Новые возможности и поддержка Btrfs
Очистка кодовой базы создает фундамент для внедрения новых функций в будущих версиях ядра. Среди приоритетных задач, обозначенных Эриком Биггерсом, значатся:
- Полноценная поддержка шифрования в файловой системе Btrfs;
- Интеграция с IOmap;
- Поддержка large folios (крупных страниц памяти).
Прямой ввод-вывод (Direct I/O) без дополнительных опций
Важным улучшением для Linux 7.3 стала возможность работы с прямым вводом-выводом (Direct I/O) на зашифрованных файлах. Ранее для этого требовалось явно указывать опцию монтирования inlinecrypt. Теперь система корректно обрабатывает Direct I/O по умолчанию, не принуждая пользователя к использованию буферизованного ввода-вывода (buffered I/O) в качестве резервного варианта.
Сравнение подходов к шифрованию
Ниже приведена таблица, иллюстрирующая переход от старой архитектуры к новой в контексте Linux 7.3:
| Параметр | До Linux 7.3 (EXT4/F2FS) | В Linux 7.3 (Unified) |
|---|---|---|
| Реализация шифрования | Дублирующийся код в каждой ФС | Единый механизм blk-crypto |
| Аппаратное ускорение | Требовало опции inlinecrypt | Доступно нативно при поддержке железа |
| Direct I/O на зашифрованных файлах | Требовало опции inlinecrypt | Работает по умолчанию |
| Будущие интеграции | Сложно из-за разрозненности кода | Открыт путь для Btrfs, IOmap, large folios |
Данные изменения标志着 FSCRYPT становится более модульной и производительной подсистемой, готовой к поддержке более широкого спектра файловых систем и аппаратных решений.
Источник: Phoronix ↗
