Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Список Lcount Неочищенные Указатели



Верный, используется i_count = 0 Очищены inode__unused

(глобальный)

Верный, не используется i_count> 0 Очищены inode_in_use

(глобальный)

Неочищенные inode i_count > 0 Не очищены Поле s__dirty суперблока

Строка 371

Это поле указывает на список структур dentry, соответствующих файлу. Струк­тура dentry содержит имя файла, представленного в inode. Файл может иметь не­сколько структур dentry, если имеет несколько псевдонимов.

Строка 372

Это поле хранит уникальный номер inode. Когда inode выделяется в конкретном су­перблоке, это число автоматически увеличивается по сравнению с назначенным перед этим ID inode. При вызове операции суперблока read_JLnode () inode, ука­занный в этом поле, будет прочитан с диска.

1 hlist_node имеет тип указателя на двусвязный список, подобный list_head. Разница заключается в том, что голова списка (тип hlist_head) содержит единственный указатель, указывающий на первый элемент вместо двух (где второй указатель является концом хвоста). При этом уменьшаются расходы на работу с хеш-таблицей.


Виртуальная файловая система Linux



Строка 373

Поле i_count является счетчиком, увеличиваемым при каждом использовании inode. Значение 0 означает, что inode не используется, а положительное значение - что ис­пользуется.

Строка 392

Это поле хранит указатель на суперблок файловой системы, в котором находится файл. Рис. 6.5 демонстрирует, что поля i_sb для всех inode из списка неочищенных inode суперблока указывают на текущий суперблок.

Строка 407

Это поле соответствует флагу состояния inode. В табл. 6.4 перечислены все возмож­ные значения.

Таблица 6.4. Состояния inode


Флаг inode


Описание


 


I_DIRTY_SYNC I_DIRTY_DATASYNC I_DIRTY_PAGES I DIRTY

I LOCK

I_FREEING

I_CLEAR I NEW


См. описание I_DIRTY

См. описание I__DIRTY

См. описание I_DIRTY

Этот макрос совместим с любым из флагов I_DIRTY_*. Он включает в себя проверку каждого из этих флагов. Флаг I_DIRTY_* означает, что содержимое inode было перезаписано и его нужно синхронизировать

Устанавливается, когда inode блокируется, и снимается, когда inode разблокируется; inode блокируется во время создания и во время участия в операции ввода-вывода

Устанавливается при удалении inode. Этот флаг служит для обозначения удаляемых inode, чтобы никто не смог к ним обратиться

Означает, что inode больше не используется

Устанавливается при создании inode. Флаг убирается после того, как inode разблокируется


inode с установленными флагами I_LOCK и I_DIRTY находится в списке inode__in_use. При отсутствии этих флагов он добавляется в список inode_unused.

Структура dentry

Структура dentry представляет собой директорию, которую VFS использует для слеже­ния за связями на основе имени директории, организации и логического размещения фай-



Глава 6 • Файловые системы


лов. Каждый объект dentry объединен с путем и связан с другими описывающими его структурами. Например, в пути /home/lkp/Chapter0б. txt существуют dentry, соз­данные для /, home, lkp и chapter0б. txt. Каждый dentry связан со своими inode, суперблоком и дополнительной информацией. Рис. 6.6 иллюстрирует связь между струк­турами superblock, inode и dentry.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  superblock superblock | superblock Список объектов dentry, используемых inode 1  
  /     dentrv     dentrv
  sjist   sjist   sjist y г        
  djnode djnode
             
     
  d.alias     d.alias
         
  d_sb d_sb
    d_parent     d_parent
             
       

 

, /inode 1     'node N
       
ijist     ijist
Ldentry     Ldentry
     

Список неиспользуемых объектов dentry, сортируемых во время вставки

inode
djru

1.

   
  djru
   

Рис. 6.6. Связь между superblock, inode и dentry

Рассмотрим некоторые поля структуры dentry.

include/linux/dcache.h 81 struct dentry {


85 struct inode * d_inode;

86 struct list_head d_lru;

87 struct list_head d_child; /*

88 struct list_head d_subdirs; /*

89 struct list_head d__alias;

90 unsigned long d_time; /*

91 struct dentry_operations *d_op;

92 struct super_block * d_sb;


ребенок списка родителя */ наш ребенок */

используется d_revalidate */


100 struct dentry * d_parent;


6.2 Виртуальная файловая система Linux



105 } ____ cacheline_aligned;

Строка 85

Поле d_inode указывает на inode, соответствующий файлу, связанному с dentry. В случае, если компонент пути, связанный с dentry, не имеет связанного inode, ус­танавливается в NULL.

Строки 85-88

Это указатели на ближайшие элементы списка dentry. Объект dentry может на­ходиться в одном из списков, перечисленных в табл. 6.5.

Таблица 6.5. Список dentry


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-03-25; Просмотров: 873; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.02 с.)
Главная | Случайная страница | Обратная связь