inode结构前四个字段就是用来帮助将inode串起来的字段,分别是
struct ; //用于散列链表的指针
struct ; //用于描述索引节点当前状态的链表的指针
struct ; //超级块的索引节点的链表的指针
struct ; //引用索引节点的目录项对象链表的头
在虚拟文件系统里,有四个串行是用来管理inode的,分别是inode_unused、inode_in_use、sb->s_dirty、hash table;
inode_unused:使用i_list这个字段将目前还没使用的inode串在一起。
inode_in_use:用来将目前正在使用的inode串在一起,当一个inode被使用时,它会从inode_unused中被取出来,接着利用i_list字段放到inode_in_use中。
sb->s_dirty:用来将 dirty inode串行在一起。这个串行的开头位于super block的s_dirty字段,一样也是使用i_list串接。
所有正在使用中的inode都可以在inode_in_use串行中找到,但是,因为系统的inode太多,所以,串行可能会很长,如果慢慢找,在速度上比较慢,因此,每个使用中的inode都会计算出其hash value,并且放到hash table,但是hash table有时会有冲突的情形出现,因此每一个entry是由一个list串接起来,这个list就是利用i_hash字段来串接的。
至于 i_dentry是在dcache中使用的,dcache利用这个字段将inode串接起来。
阅读(1793) | 评论(0) | 转发(0) |