Linux文件系统挂载、卸载与路径查找详解
1. 文件系统挂载操作
在大多数情况下,当用户请求挂载特殊文件系统或存储在磁盘分区中的常规文件系统时,会调用 do_new_mount() 函数。该函数的具体流程如下:
- 调用 do_kern_mount() 函数,传递文件系统类型、挂载标志和块设备名称。
- 接着调用 do_add_mount() 函数,此函数主要执行以下操作:
1. 获取当前进程的 namespace->sem 信号量以进行写操作,因为要修改命名空间。
2. 检查最后挂载在该挂载点的文件系统是否仍属于当前命名空间,若不是则释放读写信号量并返回错误码。
3. 若要挂载的文件系统已挂载在指定挂载点,或者挂载点是符号链接,则释放读写信号量并返回错误码。
4. 初始化 do_kern_mount() 函数分配的新挂载文件系统对象的 mnt_flags 字段。
5. 调用 graft_tree() 函数将新挂载的文件系统对象插入命名空间列表、哈希表和父挂载文件系统的子列表中。
6. 释放 namespace->sem 读写信号量并返回。
- 调用 path_release() 函数终止挂载点的路径名查找并返回0。
1.1 do_kern_mount() 函数
该函数是挂载操作
Linux文件系统挂载与路径查找
超级会员免费看
订阅专栏 解锁全文
963

被折叠的 条评论
为什么被折叠?



