Do tematu: System plików

Do tematu: Struktury danych

inode
 
Typ Nazwa Opis
unsigned long i_ino numer i-węzła w dyskowej tablicy i-węzłów
umode_t i_mode typ pliku: zwykły(IS_REG), katalog(IS_DIR), łącze nazwane(IS_FIFO), specjalny, znakowy, 0 gdy wolny; 
także prawa dostępu do pliku dla wszystkich, grupy użytkownika oraz jego samego
nlink_t i_link liczba dowiązań do pliku
unsigned long i_version licznik zdarzeń ustawiany na zmienną event (zwiększoną o jeden) przy odczycie i-węzła z dysku
uid_t i_uid identyfikator właściciela pliku
gid_t i_gid identyfikator grupy właściciela pliku
off_t i_size rozmiar pliku w bajtach (co najwyżej 4 GB)
time_t i_ctime czas utworzenia pliku
time_t i_atime czas ostatniego dostępu do pliku
time_t i_mtime czas ostatniej modyfikacji pliku
unsigned long  i_blocks liczba bloków dyskowych zajmowanych przez plik
unsigned long i_blksize rozmiar bloków so przesyłania danych dyskowych (inicjowane na PAGE_SIZE)
kdev_t i_dev wskazuje na system plików
kdev_t i_rdev wskazuje na rzeczywiste urządzenie - tak jak jest zapisany na dysku
struct super_block *i_sb wskaźnik na blok identyfikacyjny urządzenia, do którego należy i-węzeł
unsigned short i_flags tutaj trzymane są flagi określające sposób korzystania z  i-węzła, jak również pliku, który wyznacza (zdef. w >>fs.h; m.in. MS_NOATIME - nie zmieniać czasu modyfikacji, S_WRITE - do zapisu...)
unsigned short  i_count ilość procesów, które odwołują się do i-węzła; wartość zero oznacza, że struktura i-węzła jest wolna i może w razie potrzeby być wykorzystywana przez inne procesy
struct semaphore i_sem semafor do blokowania, >>open.c, >>namei.c, >>read_write.c
struct wait_queue *i_wait kolejka zadań, które czekają na zwolnienie i-węzła (funkcje: >>lock_inode, >>unlock_inode w >>fs/inode.c)
struct file_lock *i_lock struktura przechowująca informacje do blokowania pliku
unsigned char i_lock czy węzeł jest zablokowany
struct inode *i_next, *i_prev wskaźniki utrzymujące listę wolnych i-węzłów ('korzeniem' listy jest zmienna globalna first_inode >> fs/inode.c)
struct inode *i_hash_next, *i_hash_prev wskaźniki łączące i-węzeł w listę z innymi znajdującymi się w tablicy haszującej pod tym samym numerem
struct inode *i_bound_to ??? (*)
struct inode *i_bound_by ??? (*)
struct inode *i_mount wskaźnik do i-węzła, pod którym zamontowano system plików
u_c i_dirt wartość stwierdzająca, czy i-węzeł w pamięci jest różny od dyskowego i czy w związku z tym trzeba go zapisać na dysk (write_inode() w >>fs/inode.c)
u_c i_pipe czy i-węzeł opisuje łącze komunikacyjne
u_c i_sock czy i-węzeł opisuje gniazdo
struct inode_operations zestaw operacji na i-węzłach (takich, jak tworzenie nowego), ściśle związanych z wykorzystywanym systemem plików - np. ext2 ; definicja: >> include/fs.h
union u zależna od systemu plików struktura przechowująca informacje o i-węźle
ext2_inode_info ext2_i zawartość powyższej unii u dla systemu ext2
struct vm_area_struct  *i_mmap blok pamięci zawierający i-węzeł
struct page *i_pages pierwsza ramka, na podwójnie wiązanej liście ramek umieszczenia i-węzła
unsigned long i_nrpages liczba ramek na powyższej liście
struct dquot *i_dquot[MAX_QUOTA] odnośnik do systemu ograniczeń (ang. quotas)
u_c i_seek ??? (*)
u_c i_update ??? (*)
unsigned short i_writecount licznik procesów mających prawa zapisu do pliku
unsigned char i_condemned czy bufor i-węzła jest przeznaczony do wyczyszczenia
 
(*)    naprawdopodobniej niewykorzystywane - żadnych odniesień

Autor:
Grzegorz Gawron

Skład:
Robert Dąbrowski