原创 文件系统与块设备之间的接口

2009-2-6 10:29 4890 9 10 分类: 软件与OS

       最近一段时间一直在做一个块设备模块的性能分析、优化工作,因此,对Linux文件系统层的代码进行了初略的阅读,颇有心得。Linux的文件系统的确非常庞大,层次也非常清晰。以前一直将注意力集中在了设备管理的层面,所以,通过这次的阅读分析,可以从用户程序的system call开始,将读写请求整个贯穿到底层硬件的DMA。下面对块设备与文件系统之间的接口关系进行阐述,主要解决“文件系统是如何访问块设备的?”这个问题。


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 


       块设备可以在两种情况下发起probe过程,一是当总线驱动发现了块设备,回调该块设备驱动的probe函数,例如磁盘设备的驱动;二是驱动程序主动probe块设备,例如软RAID驱动程序,在insmod该程序后,会主动调用probe函数。Probe函数是设备驱动程序的核心函数,对于一类设备驱动而言,该函数的实现方式是雷同的,具有固定的格式。


 


       在块设备的probe过程中,首先需要例化一个对象——gendisk,该对象在内核中对块设备进行了抽象。Gendisk对象初始化成功之后调用add_disk()函数将gendisk添加到系统中,在add_disk过程中需要生成bdev_inode结构,该结构维护了一个文件系统所需的inode节点,以及块设备的更高层次抽象bdev。该结构描述如下:


struct bdev_inode {


       struct block_device bdev;      //块设备


       struct inode vfs_inode;          //文件系统inode节点


};


 


       如下图所示,在inode节点中一系列ops指针,指向具体的操作函数集。如果inode描述的是一个块设备,那么ops函数集指向标准的块设备操作函数集。当用户open一个块设备时,会找到对应的inode,生成一个file对象,并且将inode中的file_operationsi_op)赋值给file对象中的f_op,从而建立了文件系统接口与块设备之间的接口。如果inode描述的是一个文件系统,那么inode中的操作函数集将指向文件系统具体的操作函数集。从这个思路来看,inodevfs层的接口,block device是一个特殊的文件系统,具体文件系统在注册时,需要将回调的方法注册到inode中。/fs/Block_dev.c文件就是block device这一特殊文件系统的具体实现,其中实现了与文件系统之间接口的各种函数,包括file_operations函数集。大家感兴趣不妨研究一下。


 点击看大图

文章评论1条评论)

登录后参与讨论

ash_riple_768180695 2009-3-11 17:36

忠杰兄,有一个开源项目,不知道你能不能加入。我觉得,以你的实力应该能给这个项目不少推动。http://www.longene.org//相关的介绍文章在‘龙芯论坛’上:http://www.lemote.com/bbs/viewthread.php?tid=21717&extra=page%3D1
相关推荐阅读
用户411565 2012-12-18 12:58
我的存储之道博客
大家好,最近一直在做存储方面的工作,所以我在51CTO上专门开辟了一个空间讨论存储相关的问题,喜欢存储的朋友可以可以访问我的存储博客: 存储之道 (http://alanwu.blog.51cto...
用户411565 2012-04-06 21:39
SAS Cable可以有多长?
SAS接口是高端硬盘的主流接口,是存储系统的理想选择。我们知道高速信号的传输距离和传输线相关的,那么SAS作为外部通信接口,其Cable线具体可以有多长呢? 我在网上找到上图所示的眼图测...
用户411565 2012-04-06 21:38
对TRIM SCSI命令的一些分析
前一段时间做了一些对SSD方面进行优化的工作,SSD最大的问题在于长时间使用之后,IO性能会急剧下降。其主要问题在于为了防止“写放大”问题的产生,SSD的firmware采用了类似于log方式的算...
用户411565 2012-04-06 21:35
惊叹!我们的跨洋网络
  每次地质自然灾害的时候,总会伴随着网络的问题,这是由于我们的越洋光纤网络出了故障,受到自然力的破坏而导致断裂。越洋光纤,听起来的确是件非常不可思议的事情,工程量非常的巨大,但正是如此伟大的...
用户411565 2012-04-06 21:33
科学仪器网络模型
科学仪器概述     科学仪器发展趋势 科学是从测量开始的,科学仪器是信息技术的源头,是信息产业的重要组成部分,是现代科学与工业的基石。科学仪器产业的发展关系到国家科学研究实力、生...
用户411565 2012-04-06 21:16
谈谈RAID产品与技术
说起RAID,学计算机的同学马上会说RAID技术简单啊,就是将数据条带化,然后计算一些冗余数据,一并写入磁盘。通过RAID技术一方面提高系统的IO性能;另一方面提高系统的可靠性。单纯从RAID的原...
我要评论
1
9
关闭 站长推荐上一条 /2 下一条