默默的一块石头
分类: LINUX
2019-08-07 16:46:33
在内核里面可以通过 kern_path() 获取路径所对应的 sturct path 结构,path 结构里面包含了文件系统 mount 时的 vfsmount 信息和挂载点路径的 dentry 信息,struct path 定义如下:
struct path {
struct vfsmount *mnt;
struct dentry *dentry;
};
struct vfsmount { //root的相关信息
struct dentry *mnt_root; /* root of the mounted tree */
struct super_block *mnt_sb; /* pointer to superblock */
int mnt_flags;
};
其中struct vfsmount 里面包含了底层文件系统的挂载点的 dentry 和 super block。通过 super block 和 dentry 结构,我们能获得操作底层文件系统的方法。
struct qstr/char * name(创建文件夹的路径名)/name(创建文件夹的路径名中所分别对应的文件夹名)对应的hash值 ,通过此hash值找到创建文件夹的父目录所对应的dentry,通过此dentry找到super_block进行索引节点的创建。