0.sys_umount() -----> 文件系统卸载的系统调用

(1)根据设备名搜索设备的安装点

不管给的是安装点的路径名还是设备文件的路径名,都会搜过以下结果:

nd.dentry指向设备文件根目录的dentry

nd.mnt指向设备安装到的安装的vfsmount

(2)释放目录项

这里只是减少引用计数,移到unused队列,不一定真的释放

(3)卸载do_umount():见1

1.do_umount() ----->卸载 文件系统

(1)把vfsmount从设备的超级块sb->s_mounts队列中移动

vfsmount与设备的超级块的关系见前一篇博客《Linux2.4文件系统中vfsmount、安装点的dentry、设备的dentry之间的关系》

(2)若该设备安装了多次,则只需要拆除该设备多次安装的一次,不需要将设备拆下:remove_vfsmnt()见2

(3)若该设备只安装了一次,则见3

2.remove_vfsmount() -----> 拆除该设备多次安装的一次

(1)从各种队列中移除,

见前一篇博客《Linux2.4文件系统中vfsmount、安装点的dentry、设备的dentry之间的关系》

(2)递减各种引用计数

(3)释放vfsmount

3.卸载设备

(1)把unused队列中的dentry结构都释放

(2)设备超级块的同步

为了提高效率,块设备的输入/输出一般都是有缓冲的,无论是对超级块的改变还是对某个索引节点的改变,或者对某个数据块的改变,都只是对它们在内存中映像的改变,而不一定马上写回到设备上。

(3)i节点的同步

(4)数据块的同步

results matching ""

    No results matching ""