很久没来了

这几天做了一点工作,基本上接近收尾阶段了

1、hash值按16进制表示转换成文件名
2、中间目录Mkdir成功
3、新建文件成功(cp命令测试)
4、读取文件成功一次

读取文件是目前尚未解决的问题。因为lookup函数选取不当,往往第一次lookup可以成功,第二此lookup就failed。原因估计是第一次lookup的时候dentry未在缓存队列中,第二次从缓存中读取dentry的过程有错误,需要debug

此外今天看了一下hidden_dentry的转换,和前几天思考的问题接合起来有点想法不过不知道正确与否

((struct smallfs_dentry_info *)(dentry)->d_fsdata)->wdi_dentry

这个是smallfs_hidden_dentry宏展开的结果,前几次已经说过了。d_fsdata是个空指针(void *)。应用中可能存放着真实dentry的首地址。smallfs_dentry_info数据结构只有一个成员就是wdi_dentry(dentry数据结构),因此首地址应该是重合的。所以将d_fsdata的内容强制类型转换后可以得到smallfs_dentry_info的地址也就是wdi_dentry的地址。

其余的问题尚未理清头绪,先不要混乱大家的思路了
原文地址:https://www.cnblogs.com/acesyp/p/227230.html