Вызов ioctl
выполняется из пользовательского пространства и выполняет код в драйвере в пространстве ядра. В самом пространстве ядра вы обычно вызываете другие части ядра напрямую, поэтому нет необходимости во вложенных ioctl
: в конце концов, это механизм, помогающий пространству пользователя взаимодействовать с пространством ядра.
Итак:
1) Никто этого не делает, потому что в этом нет необходимости.
2) Вы не должны этого делать.
3) если вы действительно этого хотите, вы, вероятно, могли бы настроить поддельную среду в ядре, где вы можете смоделировать другой ioctl
внутри ioctl
, но это много усилий и сложное решение для вещей, которые вы можете достичь более простым способом.
4) Размышление об этом не поможет вам понять ядро.
Все файловые системы
используют часть общего пространства, доступного на устройстве, для хранения внутренних
структур и данных (метаданных файловой системы). Накладные расходы файловой системы XFS
составляют около 0,5%.
В то время как lvdisplay
сообщает фактический размер на диске, df
показывает используемое системой дисковое пространство, которое представляет собой фактический размер диска за вычетом накладных расходов файловой системы.
Если я правильно понимаю, вы сравниваете размер LV 700 МиБ с размером используемой файловой системы 697 МиБ ( df -h
выведет MiB, df -H
МБ).
Разница составляет 3 МБ, а не 33 МБ.
Я не уверен, что эти 3 MiB действительно заслуживают изучения?