免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1369 | 回复: 1

[内核入门] 文件如何关联设备 [复制链接]

论坛徽章:
0
发表于 2012-10-12 21:12 |显示全部楼层
请问下, linux下面, 我访问某一个存储设备上的文件. linux 怎么知道这个文件存储在哪个设备上, 然后去调用响应的驱动的方法的呢?

譬如, linux 系统上插入一个 U 盘. U 盘插入系统的时候, 会调用 usb-stroage 的 probe 函数.完成初始化.


那么, 当我访问 U 盘上的 a.txt 文件时, 是怎么确定这个文件在 U 盘上, 然后调用 usb-storage 驱动的相关接口的呢?

论坛徽章:
0
发表于 2012-10-12 21:33 |显示全部楼层
自己回复自己. ^_^..刚了解了.

块设备挂到 linux 系统上后, 会在 /dev/ 目录下创建块设备节点.

执行 mount 命令, 将块设备上的文件系统挂载到 当前 系统上时. 会调用 mount -> do_mount, 根据 /dev/blk 块设备节点, 将挂载点 dir 目录的 inode 的 i_bdev 设置为 快设备的对象.

然后文件系统挂载后.  文件系统的 super_block 的 s_bdev 成员也设置为 块设备的 block_device 对象.


在访问设备上的文件系统时, 通过 inode->i_bdev 和 super_block->s_bdev 就可以知道文件在哪个设备上.

不知道是否是这样的, 请拍砖指正. 谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP