Linux2.4文件系统的卸载

本文详细介绍了Linux系统中文件系统的卸载过程,包括sys_umount()系统调用的使用,do_umount()函数如何从超级块队列中移除vfsmount,以及在不同情况下remove_vfsmount()函数如何工作。还深入探讨了设备卸载时的同步操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)数据块的同步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值