Недавно столкнулся с неожиданной и не очень понятной проблемой. Как известно, в Манджаро возможно (хоть и не рекомендуется) установить экспериментальное ядро. Захотелось попробовать новое ядро 6.2. Не то, чтобы было нужно, а именно захотелось, тем более, что делал такое уже не раз.
Всё, казалось бы, просто: установил, перезагрузился… И сразу столкнулся с тем, что SDDM (менеджер загрузки) пожаловался на то, что его файл конфигурации стал незаписываемым. Но загрузка продолжилась, и я не обратил на это внимания. Поработал немного, и тут обнаружил, что при попытке открыть Dolphin он также жалуется на то, что не может записывать в определённые файлы конфигурации. Короче говоря, вскоре я обнаружил, что файловая система стала работать только для чтения. Перезагрузка решала проблему, но только на короткое время.
Сначала я подумал о проблеме с диском, на котором установлена система, и начал, загрузившись с флешки, проверять резервные копии моих рабочих файлов. Файлы оказались в порядке, но, пока я их проверял, наткнулся на информацию с Phoronix о ядре 6.2.
Обратил внимание на два момента: работа над исправлениями в работе raid5 в btrfs (этот вопрос меня давно интересует, но в тот момент не это было главным) и включение режима discard по умолчанию при монтировании файловой системы.
Данный режим до новой версии ядра по умолчанию был отключён. Я его также не включал, для обслуживания SSD дисков включал fstrim.timer, который запускает fstrim по расписанию раз в неделю. Теперь же, получается, что при загрузке с ядром 6.2 режим discard=async включается по умолчанию. Я начал предполагать, что проблема именно в этом. У меня было два пути: вернуться пока на ядро 6.1 или остаться на 6.2, но отключить discard. Я решил всё-таки продолжить эксперимент, и подредактировал fstab. Теперь у меня опции монтирования файловой системы выглядят так:
subvol=/@,defaults,compress=zstd, commit=90,discard=off
Учитывая, что у меня на системном диске четыре подтома, в fstab, естественно, монтируются все четыре. Я пока не разобрался, какой вариант более корректен: discard=off или nodiscard, сейчас пытаюсь в этом разобраться.
В результате ошибки исчезли, система работает нормально, но остаётся вопрос: связана ли эта проблема только с моим оборудованием? Кроме того, теперь можно будет при установке системы столкнуться с тем, что ошибка будет проявляться уже при первой загрузке системы. Надеюсь, что проблема будет, всё-таки, устранена.