linux vfs 解析 之 mount 文件系统
来源:互联网 发布:php获取qq号码 编辑:程序博客网 时间:2024/05/22 09:48
mount 文件系统
主要数据结构:
struct namespace {
};
struct vfsmount
{
};
struct nameidata {
};
enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND};
#define LOOKUP_FOLLOW
#define LOOKUP_DIRECTORY
#define LOOKUP_CONTINUE
#define LOOKUP_PARENT
#define LOOKUP_NOALT
#define LOOKUP_REVAL
#define LOOKUP_OPEN
#define LOOKUP_CREATE
#define LOOKUP_ACCESS
struct qstr {
};
--------------------------------------------------------------------------
需要补习的内容:
对于一个文件(在Linux下所有都是文件,包括目录等等) ,如何判断该文件 是不是目录,或者是不是符号链接, 是通过inode :
如果是目录,则一定有 inode->i_op->lookup 方法, 即 inode->i_op->lookup 一定不是NULL
如果是符号链接, 则一定有 inode->i_op->follow_link 方法,即 inode->i_op->follow_link 一定不是NULL
--------------------------------------------------------------------------
对于每一个 mount 的文件系统,都由一个 vfsmount 实例来表示。
对于每一个进程,都有自己的 namespace , 这可以理解为这个进程的地盘。
在这里,所有的文件系统都要挂上来统一管理, 如下所示: