Среди множества запросов на вытягивание VFS, объединённых сегодня Линусом Торвальдсом в рамках открытого окна слияния Linux 6.16, есть поддержка подсистемой питания возможности инициировать события замораживания/размораживания файловой системы в рамках цикла приостановки и возобновления работы системы.
Инженер-программист Linux Кристиан Браунер из Microsoft представил обновления «заморозки VFS» для Linux 6.16. В основном он работал над тем, чтобы подсистема питания поддерживала заморозку файловой системы для приостановки и гибернации системы. Браунер объяснил в запросе на вытягивание:
Разрешить подсистеме питания поддерживать замораживание файловой системы для приостановки и спящего режима.
Теперь все готово для того, чтобы подсистема питания могла замораживать/размораживать файловые системы во время приостановки/возобновления работы. Файловые системы замораживаются и размораживаются только в том случае, если подсистема питания действительно отвечает за замораживание.
Если файловая система уже заморожена к тому моменту, когда мы замораживаем все процессы пользовательского пространства, мы не будем замораживать её снова. Это задача пользовательского пространства после возобновления процесса. Мы замораживаем файловые системы только в случае крайней необходимости и игнорируем другие сбои при замораживании.
Мы могли бы выявлять ошибки и завершать работу с ошибкой приостановки/возобновления, если это не ошибка EBUSY (то есть если она уже заморожена), но я не думаю, что это того стоит. Заморозка файловой системы во время приостановки/возобновления — это максимум усилий. Если у пользователя подключено 500 файловых систем ext4 и 4 из них по какой-то причине не замораживаются, мы просто пропускаем их.
То, что у нас есть сейчас, — это уже большое улучшение, и давайте посмотрим, как мы с этим справимся, прежде чем делать нашу жизнь ещё сложнее (и хуже), чем она есть.
В рамках этой работы также добавляется /sys/power/freeze_filesystems, чтобы пользовательское пространство могло замораживать файловые системы во время приостановки и гибернации. Запрос на замораживание VFS также добавляет поддержку замораживания/размораживания в код переменных EFI (efivars).
Более подробная информация для тех, кому интересно, в этом слиянии Git.
🔄 Автоматический перевод источника: www.phoronix.com.