所有的目录项都放入到全局缓存hashtable中。
d_hash(parent,hash)根据上一级目录和当前目录名称的哈希值,从hashtable中找到所需要的rentry,从而找到相应的inode
struct rentry{
int inode;
ptr_t *d_name;
struct rentry *parent;
}
do_lookup 这个函数实现了查找具体的目录路径的核心代码。
qstr的作用是快速的匹配当前的目录是否与某个dentry是否为相同的目录。省去了strcmp的开销。如果哈希值不相同,那么两个字符串肯定不相同,用哈希值做一个粗略的比较。如果两个目录的dentry的名字相同,而且他们具有相同的父dentry,那么这两个目录就是两个相同的目录。
struct qstr {
unsigned int hash;
unsigned int len;
const unsigned char *name;
};
阅读(1606) | 评论(0) | 转发(0) |