d_add:将dentry加入到父目录的hash列表里,并调用d_instantiate。
d_instantiate:将dentry加入到对应的inode的hash列表里,并更新其d_inode字段。inode的引用计数i_count字段需要递增。该函数通常用于新创建inode给一个nagtive dentry。
d_lookup:根据pathname,查找父目录dentry下的某个dentry。如果找到,则增加引用计数并返回dentry。调用用完该dentry之后需要通过dput将引用计数递减。
总结VFS的角色包括:
管理可用的文件系统类型,将设备和文件系统实例进行关联。
处理文件系统的相关操作,为应用程序提供标准文件系统接口。
VFS和具体的文件系统系统之间主要通过几个数据结构:super_block, inode, dentry, file和address space以及对应的operations: sb_ops, i_ops, d_ops, f_ops和a_ops来实现文件系统的功能。
参考Linux Documentation: VFS