В Linux появилась необычная внутренняя файловая система -
failfs. Она специально устроена так, чтобы операции через неё завершались ошибкой EOPNOTSUPP.Это не файловая система для хранения данных. Её задача - дать kernel контролируемое окружение, в котором filesystem operations гарантированно не работают.
1️⃣Что делает
failfsУ неё практически нет нормального path lookup:
/
└── любой lookup → EOPNOTSUPP
Причём ошибка возникает ещё до разбора компонента пути. Даже
. не проходит обычный lookup.Открыть root через
O_PATH тоже нельзя.2️⃣Зачем это kernel
Один из вариантов - изоляция kernel threads.
Исторически kernel threads и PID 1 разделяли filesystem state.
Это создавало довольно странную зависимость: например, операции вроде
pivot_root() могли менять filesystem state, который видели kernel threads.nullfs уже используется как пустое изолированное окружение для таких задач. failfs идёт ещё дальше: любой filesystem access из такого окружения гарантированно заканчивается ошибкой.3️⃣Почему это лучше обычного
NULLnullfs говорит:«здесь ничего нет»
↓
ENOENT
failfs говорит:
«filesystem operation здесь вообще не поддерживается»
↓
EOPNOTSUPP
Это важная разница. Kernel получает не просто пустой каталог, а специальную среду, которая позволяет явно проверить или ограничить код, пытающийся обращаться к VFS.
⚡️
failfs выглядит бесполезной файловой системой ровно до момента, когда kernel нужно гарантировать: этот код не должен случайно получить доступ к обычному filesystem namespace. Тогда отсутствие файлов превращается уже не в отсутствие данных, а в механизм изоляции.
