Linux 7.3-rc7: исправления mount namespace, ext4 data=journal устарел, обход AMD Erratum #1718

Обложка: Linux 7.3-rc7, исправления mount namespace, ext4 data=journal и AMD Erratum #1718

В ночь на 12 октября по Москве Линус Торвальдс выпустил Linux 7.3-rc7, анонс из рассылки ядра опубликовал LWN. Это последний rc перед релизом: если ничего нового не всплывёт, финальный 7.3 выйдет в следующие выходные. Анонс задержался на шесть часов. После поездки на Kernel Maintainer Summit и LPC Линус весь день был уверен, что сегодня суббота, и вспомнил про rc только за ужином.

Для тех, кто держит серверы на свежих ядрах, в rc7 интересны три вещи: большая пачка исправлений в коде монтирования, предупреждение для ext4 в режиме data=journal и обход ошибки в процессорах AMD Zen 5.

Mount namespace: 58 коммитов Кристиана Браунера

Половина патча rc7 приходится на селфтесты. По словам Линуса, так вышло из-за нескольких исправленных ошибок в монтировании: сами правки небольшие, а тесты к ним заметные. Если не считать каталог tools/testing/, картина обычная: половина в драйверах (drm и сеть), остальное по всему дереву, а слой VFS выделяется как раз из-за этих исправлений.

Почти всё написал мейнтейнер VFS Кристиан Браунер, у него в шортлоге 58 коммитов. Ядро стало строже в пограничных случаях. Копия неразделяемой (unbindable) точки монтирования теперь остаётся неразделяемой, а MOVE_MOUNT_SET_GROUP на такой точке отклоняется. Занятые точки монтирования больше не отмонтируются молча. Рекурсивный bind mount проверяют на петли между пространствами имён монтирования, а fspick() и remount не дают перенастраивать внутренние суперблоки. Ещё есть правки в pivot_root(), автомонтировании, OPEN_TREE_NAMESPACE и nullfs.

На практике это про контейнеры: Docker, Podman, systemd-nspawn и песочницы, которые плотно работают с mount namespace. Обычному серверу ничего делать не нужно. Но если у вас своя схема с bind mount и propagation, после перехода на 7.3 её лучше сначала погонять на тестовой машине.

ext4 data=journal уберут в январе 2028

Тед Цо пометил режим data=journal устаревшим: поддержку обещают убрать в январе 2028 года. В этом режиме все данные сначала пишутся в журнал и только потом на основное место. Это самый медленный режим ext4, и он отключает отложенное выделение (delayed allocation) и O_DIRECT, как сказано в документации ядра. По умолчанию ext4 работает в data=ordered, так что большинства серверов это не касается.

С этим патчем ядро при каждом монтировании с data=journal пишет в лог предупреждение. Проверить, нет ли такого режима у вас, можно так:

grep data=journal /proc/mounts /etc/fstab
sudo dmesg | grep -i 'data=journal'
# режим может быть зашит в саму ФС как опция по умолчанию
sudo tune2fs -l /dev/sda1 | grep -i 'default mount options'

Если в выводе tune2fs есть journal_data, режим включён в суперблоке, даже если в fstab его нет. Время на переезд есть, но планировать его лучше заранее.

AMD Zen 5: обход TLBI Erratum #1718

Борислав Петков из AMD добавил обход ошибки процессора: при выполнении пары инструкций INVLPGB/TLBSYNC процессор может не сбросить запись в TLB. Ядро использует INVLPGB для сброса TLB в своём адресном пространстве, а несброшенная запись означает обращение по уже неактуальному отображению памяти.

Обход включается на Zen 5 с поддержкой INVLPGB, если в микрокоде ещё нет исправления. Тогда ядро помечает у процессора ошибку tlbi и выполняет TLBSYNC дважды. Если микрокод уже исправлен, ничего не меняется. Патч помечен для stable, так что придёт и в стабильные ветки. На ядре с этим патчем проверить можно так:

grep -m1 'model name' /proc/cpuinfo
grep -ow tlbi /proc/cpuinfo | sort -u
grep -m1 microcode /proc/cpuinfo

Если tlbi в списке ошибок есть, стоит обновить микрокод: пакет amd64-microcode в Debian и Ubuntu или linux-firmware в других дистрибутивах.

В итоге 7.3-rc7 получился большим из-за тестов, но без поводов для задержки: финальный Linux 7.3 ждут в следующие выходные. Контейнерам достанутся десятки исправлений в mount namespace, у ext4 начинается обратный отсчёт для data=journal до января 2028, а владельцам Zen 5 без свежего микрокода ядро само включит обход ошибки TLB.

Источники и ссылки


Комментарии загружаются…