Разработка ядра 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 для прерывания операции монтирования. Она
Все рассмотренные функции вызываются подсистемой 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; /* счетчик использования
Поделиться:
Популярные книги
Дайте поспать! Том III
3. Вечный Сон
Фантастика:
фэнтези
5.00
рейтинг книги
Путь Чести
3. Жизни Архимага
Фантастика:
фэнтези
боевая фантастика
6.43
рейтинг книги
Энфис 2
2. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Сумеречный Стрелок 2
2. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сводный гад
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Книга пяти колец. Том 3
3. Книга пяти колец
Фантастика:
фэнтези
попаданцы
аниме
5.75
рейтинг книги
Диверсант
2. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Ученичество. Книга 2
2. Государственный маг
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Титан империи 3
3. Титан Империи
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Последний попаданец 9
9. Последний попаданец
Фантастика:
юмористическая фантастика
рпг
5.00
рейтинг книги
Измена. Право на сына
4. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Неестественный отбор.Трилогия
Неестественный отбор
Детективы:
триллеры
6.40
рейтинг книги
Хозяйка дома на холме
1. Хозяйка своей судьбы
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Гром над Академией. Часть 2
3. Гром над миром
Фантастика:
боевая фантастика
5.50