歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 虛擬文件系統(VFS)簡介:管理inode的字段

虛擬文件系統(VFS)簡介:管理inode的字段

日期:2017/2/27 9:36:54   编辑:更多Linux

一個檔案系統裡有許多的inode,但是,有的inode可能因為使用者的關系,其內容被更改,此時,我們稱此inode為dirty。所有的dirty inode都應該被記錄,以便在適當時候寫入disk,而這個存放的位置在super block是蠻適合的。每一個super_block代表一個檔案系統,把這個檔案系統的dirty inode記錄在它自己的super_block中應該是不錯的想法。在Kernel 2.2.1中在super_block裡跟inode有關的字段有4個。     strUCt inode *s_ibasket;   short int s_ibasket_count;   short int s_ibasket_max;   struct list_head s_dirty;     其中s_dirty就是用來存放dirty inode用的。我們可以看到s_dirty的型別跟s_list的型別是一樣的,所以,其實s_dirty也是一個串行。每一個inode結構裡都有一個struct list_head結構的字段,s_dirty的工作就是將這個dirty inode的struct list_head結構的字段串起來,最後我們經由super_block的s_dirty就可以讀取到這些dirty inode裡list_head結構字段的地址,然後再經由這些字段讀取到其對應的inode的地址。     除了s_dirty之外,還有三個字段是跟inode有關的,分別是s_ibasket,s_ibasket_count,s_ibasket_max。有關於這三個字段的用法目前我還不是很清楚,只是大概知道當檔案系統的剩余空間太少時,Kernel會根據這三個字段的值呼叫一個callback的函式來做些處理。使用者可以在register_file_system()時將FS_IBASKET的參值傳給它,系統就會激活這項功能,但是,很可惜的是,在Kernel 2.2.1中,這項功能還有bug,所以尚未正式使用。   




Copyright © Linux教程網 All Rights Reserved