Регистрация типа файловой системы
При компиляции ядра пользователь нередко конфигурирует систему Linux так, чтобы она распознавала все необходимые файловые системы. Однако код для файловой системы фактически может быть либо включен в образ ядра, либо динамически загружен в качестве модуля В обязанности VFS входит отслеживание всех типов файловых систем, код которых включен в ядро. Для этого существует регистрация типа файловой системы.
Каждая зарегистрированная файловая система представлена в виде объекта fiie system typeВсе объекты, представляющие типы файловых систем, объединены в однонаправленный список. Переменная file systems указывает на его первый элемент, а поле next описанной структуры указывает на следующий элемент списка. Спин-блокировка чтения/записи file_system_lock защищает список от попыток одновременного обращения.
Поле fs supers является головой (первым пустым элементом) списка суперблоков, соответствующих смонтированным файловым системам данного типа. Ссылки на соседние элементы списка хранятся в поле s instances суперблока.
Поле get sb указывает на специфичную для файловой системы функцию, которая создает новый объект-суперблок и инициализирует его (читая информацию с диска, если это необходимо). Поле kiii sb указывает на функцию, уничтожающую суперблок.
Поле fs fiags содержит некоторые флагиПри инициализации системы функция register_fiiesystem вызывается для каждой файловой системы, указанной на этапе компиляции. Эта функция заносит соответствующий объект fiie system type в список типов файловых систем.
Функция register fiiesystemo также вызывается при загрузке модуля, реализующего файловую систему. В этом случае регистрация файловой системы может быть аннулирована ВЫЗОВОМ функции unregister_filesystem, КОГДа модуль выгружается.
Функция get sb type , принимающая название файловой системы в качестве параметра, просматривает список зарегистрированных файловых систем, изучая поля name их дескрипторов, и возвращает указатель на соответствующий объект f iie system type, если таковой обнаруживается.
Предыдущая страница | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | Следующая страница