VFS trzyma własne odwołania do używanych inode-ów w różnych systemach plików. (Dla zagatwania sytuacji nazywają się one również inode-ami. W tej prezetacji przez inode rozumiem VFS-ową reprezentację konkretnych struktur z wszystkich istniejących systemów plików nazywanych w tych systemach plików inode-ami). Aby zwiększyć efektywność VFS posiada system cache'ujący tworzone inode-y tak, aby można je było szybko znajdować i nie trzeba było zbyt często tworzyć. Cały ten system zaimplementowany jest w pliku fs/inode.c.
Wszystkie tworzone inode-y skojarzone z jakimś superblokiem (czyli z jakimś systmem plików) przechowywane sa w kolejce inode_hashtable
(haszowanej po wartości wskaźnika do superbloku, i 32-bitowym numerze inode-a).
Inode-y nie posiadające superbloku (na przykład sockety) wstawiane są do kolejki
anon_hash_chain
.
Dodatkowo inode może też być wstawiony - zależnie od typu - do jednej z poniższych:
inode_in_use
inode-ów aktualnie w użyciu (mających
i_count>0
i i_nlink>0
). Nowo tworzone inode-y
trafiają do tej kolejki.
inode_unused
inode-ów już nie używanych
(i_count = 0
).
sb->s_dirty
(i_count>0
i
i_state & I_DIRTY
) - . "Brudne" inode-y to takie których
zawartość została
zmieniona, a zmiana ta jeszcze nie została zapisana na dysku. Inode-y takiego pozostają w pamięci nawet jeśli już nikt ich nie używa
System pamięta dodatkowo tylko liczbę nieużywanych inode-ów
inodes_stat.nr_unused
.
Wszystkie powyższe listy są chronione jednym semaforem inode_lock
.