Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2973860
  • 博文数量: 685
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5303
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-19 14:17
个人简介

文章分类

全部博文(685)

文章存档

2015年(116)

2014年(569)

分类: 嵌入式

2014-10-11 15:27:46

原文地址:http://www.cnblogs.com/linengier/archive/2013/03/30/2991112.html

对于每一个 mount 的文件系统,都由一个 vfsmount 结构来表示。
对于每一个目录项,都用一个dentry来表示,例如对于/usr/local/lib : / usr local lib 表示4个目录项

两者关系以一个例子来说明:
例如我们要mount一个设备 /dev/sdb1 到 /home/my目录下,
我们假设 /home/my 就是当前进程的根文件系统中的目录(即 home 和 my 都没有mount任何文件系统),
命令行是: mount -t ext2 /dev/sdb1 /home/my
我们mount的时候,传入的参数有三个: 要mount的设备( /dev/sdb1 ) , 设备的文件系统 ( ext2 之类的), mount到什么目录 ( /home/my )

mount的过程就是把设备的文件系统入到 vfs 框架
1. 首先,要mount一个新的设备,需要创建一个新的 super block。 这通过要mount的文件系统的 file_system_type, 调用其 get_sb 方法来创建一个新的 super block。
2. 需要创建一个新的vfsmount ,对于任何一个 mount 的文件系统,都要有一个 vfsmount, 创建这个vfsmount, 并设置好vfsmount 中的各个成员
3. 将创建好的 vfsmount 加入到系统中。

对于新的vfsmount:
其mountpoint为目录 "my" 的dentry,
其mnt_root 是设备sdb1上的根目录的 dentry
其父 vfsmount 就是原文件系统中的那个 vfsmount
阅读(1072) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~