Чтение онлайн

на главную - закладки

Жанры

Разработка ядра Linux
Шрифт:

• 

int remount_fs(struct super_block *sb, int *flags, char *data)
— эта функция вызывается подсистемой VFS, когда файловая система монтируется с другими параметрами монтирования.

• 

void clear_inode(struct inode*)
— эта функция вызывается подсистемой VFS для освобождения индекса и очистки всех страниц памяти, связанных с индексом.

• 

void umount_begin(struct super_block *sb)
— эта функция вызывается подсистемой VFS для прерывания операции монтирования. Она
используется сетевыми файловыми системами, такими как NFS.

Все рассмотренные функции вызываются подсистемой VFS в контексте процесса. Все они при необходимости могут блокироваться.

Некоторые из этих функций являются необязательными. Файловая система может установить их значения в структуре операций суперблока равными

NULL
. Если соответствующий указатель равен
NULL
, то подсистема VFS или вызывает общий вариант функции, или не происходит ничего, в зависимости от операции.

Объект inode

Объект

inode
содержит всю информацию, которая необходима ядру для манипуляций с файлами и каталогами. В файловых системах в стиле Unix вся информация просто считывается из дисковых индексов и помещается в объект
inode
подсистемы VFS. Если файловые системы не имеют индексов, то эту информацию необходимо получить из других дисковых структур [70] .

Объект индекса файла представляется с помощью структуры

struct inode
, которая определена в файле
<linux/fs.h>
. Эта структура с комментариями, описывающими назначение каждого поля, имеет следующий вид.

70

Файловые системы, которые не имеют индексов, обычно хранят необходимую информацию как часть файла. Некоторые современные файловые системы также применяют базы данных для хранения метаданных файла. В любом случае объект индекса создается тем способом, который подходит для файловой системы.

struct inode {

 struct hlist_node i_hash; /* хешированный список */

 struct list_head i_list; /* связанный список индексов */

 struct list_head i_dentry; /* связанный список объектов dentry */

 unsigned long i_ino; /* номер индекса */

 atomic_t i_count; /* счетчик ссылок */

 umode_t i_mode; /* права доступа */

 unsigned int i_nlink; /* количество жестких ссылок */

 uid_t i_uid; /* идентификатор пользователя-владельца */

 gid_t i_gid; /* идентификатор группы-владельца */

 kdev_t i_rdev; /*
связанное устройство */

 loff_t i_size; /* размер файла в байтах */

 struct timespec i_atime; /* время последнего доступа к файлу */

 struct timespec i_mtime; /* время последнего изменения файла */

 struct timespec i_ctime; /* время изменения индекса */

 unsigned int i_blkbits; /* размер блока в битах */

 unsigned long i_blksize; /* размер блока в байтах */

 unsigned long i_version; /* номер версии */

 unsigned long i_blocks; /* размер файла в блоках */

 unsigned short i_bytes; /* количество использованных байтов */

 spinlock_t i_lock; /* блокировка для защиты полей */

 struct rw_semaphore i_alloc_sem /* вложенные блокировки при

захваченной i_sem */

 struct semaphore i_sem; /* семафор индекса */

 struct inode_operations *i_op; /* таблица операций с индексом */

 struct file_operations *i_fop; /* файловые операции */

 struct super_block *i_sb; /* связанный суперблок */

 struct file_lock *i_flock; /* список блокировок файлов */

 struct address_space *i_mapping; /* соответствующее адресное

пространство */

 struct address_space i_data; /* адресное пространство устройства */

 struct dquot *i_dquot[MAXQUOTAS]; /* дисковые квоты

для индекса */

 struct list_head i_devices; /* список блочных устройств */

 struct pipe_inode_info *i_pipe; /* информация конвейера */

 struct block_device *i_bdev; /* драйвер блочного устройства */

 unsigned long i_dnotify_mask; /* события каталога */

 struct dnotify_struct *i_dnotify; /* информация о событиях каталога */

 unsigned long i_state; /* флаги состояния */

 unsigned long dirtied_when /* время первого изменения */

 unsigned int i_flags; /* флаги файловой системы */

 unsigned char i_sock; /* сокет или нет? */

 atomic_t i_writecount; /* счетчик использования

Поделиться:
Популярные книги

Камень Книга седьмая

Минин Станислав
7. Камень
Фантастика:
фэнтези
боевая фантастика
6.22
рейтинг книги
Камень Книга седьмая

Я сделаю это сама

Кальк Салма
1. Магический XVIII век
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Я сделаю это сама

Кровь на эполетах

Дроздов Анатолий Федорович
3. Штуцер и тесак
Фантастика:
альтернативная история
7.60
рейтинг книги
Кровь на эполетах

Сыночек в награду. Подари мне любовь

Лесневская Вероника
1. Суровые отцы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сыночек в награду. Подари мне любовь

Кодекс Крови. Книга ХII

Борзых М.
12. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Крови. Книга ХII

Найди меня Шерхан

Тоцка Тала
3. Ямпольские-Демидовы
Любовные романы:
современные любовные романы
короткие любовные романы
7.70
рейтинг книги
Найди меня Шерхан

Идеальный мир для Лекаря 4

Сапфир Олег
4. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 4

Релокант. По следам Ушедшего

Ascold Flow
3. Релокант в другой мир
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Релокант. По следам Ушедшего

Мир-о-творец

Ланцов Михаил Алексеевич
8. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Мир-о-творец

Протокол "Наследник"

Лисина Александра
1. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Протокол Наследник

Кодекс Охотника. Книга VII

Винокуров Юрий
7. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
4.75
рейтинг книги
Кодекс Охотника. Книга VII

Попаданка в семье драконов

Свадьбина Любовь
Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.37
рейтинг книги
Попаданка в семье драконов

Новые горизонты

Лисина Александра
5. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Новые горизонты

Скрываясь в тени

Мазуров Дмитрий
2. Теневой путь
Фантастика:
боевая фантастика
7.84
рейтинг книги
Скрываясь в тени