linux vfs 解析 之 inode

http://blog.sina.com.cn/s/blog_5219094a01009a4e.html

inode


相關的數據結構爲:


struct inode {
 struct hlist_node i_hash;
 struct list_head i_list;
 struct list_head i_sb_list;
 struct list_head i_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;
 dev_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 semaphore i_sem;
 struct rw_semaphore i_alloc_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;
#ifdef CONFIG_QUOTA
 struct dquot  *i_dquot[MAXQUOTAS];
#endif
 
 struct list_head i_devices;
 struct pipe_inode_info *i_pipe;
 struct block_device *i_bdev;
 struct cdev  *i_cdev;
 int   i_cindex;

 __u32   i_generation;

#ifdef CONFIG_DNOTIFY
 unsigned long  i_dnotify_mask;
 struct dnotify_struct *i_dnotify;
#endif

 unsigned long  i_state;
 unsigned long  dirtied_when; 

 unsigned int  i_flags;

 atomic_t  i_writecount;
 void   *i_security;
 union {
  void  *generic_ip;
 } u;
#ifdef __NEED_I_SIZE_ORDERED
 seqcount_t  i_size_seqcount;
#endif
};

 

inode存在於兩個雙向鏈表中:
一個是inode所在文件系統的super block的 s_inodes 鏈表中

一個是根據inode的使用狀態存在於以下三個鏈表中的某個鏈表中:
1. 未用的: inode_unused 鏈表
2. 正在使用的: inode_in_use 鏈表
3. 髒的: super block中的s_dirty 鏈表


另外,還有一個重要的鏈表: inode_hashtable(這個暫不介紹).
                                                                            
                                                                            
            /------------\                                                  
 /----------|super_blocks|----     ..........       ---------------------\  
 |          \------------/                  

發佈了0 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章