挖个坑,通过一个bug学习scsi~

 

开始来点前期准备的知识,主要关于Linux的I/O 路线,然后就是scsi的整体结构说明。
1,Linux I/O路
http://www.thomas-krenn.com/en/oss/linux-io-stack-diagram/linux-io-stack-diagram_v0.1.png
通过这张图应该可以很顺利的理解整体的IO流向。在这张图里面可以看出,主要分为两层——用户层和内核层,用户层当然就是一些上层的应用
至于内核层就是这里面主要需要讲的,由上至下依次是vfs,具体的文件系统(ext2,ext3,ext4等,文件系统针对不同的实现有着不同的逻辑,
但是都是需要与下面的驱动程序交互),块I/O层,I/O调度,接下来属于SCSI的三个层次,最后是底层物理设备。找到这张图还是非常幸运的,
对于理解整个执行过程会事半功倍的。
2,Linux SCSI子系统
http://www.ibm.com/developerworks/cn/linux/l-scsi-subsystem/
M. Tim Jones先生已经做了很多的介绍,我就不再多说了,重复造轮子没意思。这里我查找发现的结果是,SCSI本身有自己的RFC定义,并且
有多个版本,分别是SCSA(SCSI Architecture)-1,-2,-3,-4,-5,但是主题上的层次结果基本不变,通过上面的link,阅读一下里面的内容
应该就有个深入的认识了。
3,SCSA深入分析
http://blog.csdn.net/yunsongice/article/details/6171286
http://blog.csdn.net/yunsongice/article/details/6171290
这两篇文章中整体介绍了初始化阶段以及scsi设备驱动体系架构,讲的还是比较详细了。

我主要需要修改的是SCSI结构的low level层的iscsi驱动,但是是需要有上层的scsi结构进行调用,因此需要对整体的理解
顺便学习下整体的结构。由于做的是Unix上面的修改,具体实现还是有些差别,尽量两个都有理解,然后对比的说明下。
刚刚开始入手,找了些网上的资源加以说明,并非原创,不断完善~

 

 

http://www.dalei.org/scsi-introduction-userful-links/

你可能感兴趣的:(Solaris)