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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章