文件系统之mount执行流程

来源:互联网 发布:2016年各项数据 编辑:程序博客网 时间:2024/06/17 11:22


这里参考的linux内核版本是3.10。

主要函数:

kernel/fs/namespace.c:

SYSCALL_DEFINE5(mount,....)

do_mount()

vfs_kern_mount()


kernel/fs/filesystems.c

get_fs_type()

kernel/fs/super.c

mount_fs()


1 用户空间执行mount命令后,会执行系统mount的系统调用,内核中的对应处理函数是SYSCALL_DEFINE5()。

2 内核中SYSCALL_DEFINE5()的处理流程:

   首先完成参数的拷贝,然后执行do_mount()

3 do_mount()函数中主要调用了do_new_mount() 函数

4. do_new_mount() 函数首先根据函数get_fs_type(fstype),找到fstype对应的struct file_system_type *类型的结构体指针,该指针的所有指向的成员函数最终完成挂载。

 需要说明的是fstype对应的文件类型是在register_filesystem()处注册在了全局的变量file_systems。

5 vfs_kern_mount()中初始化了了struct mount* mnt,之后调用mount_fs()完成挂载。

6 在最后do_add_mount()中,add a mount into a namespace's mount tree.


0 0
原创粉丝点击