免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1424 | 回复: 3
打印 上一主题 下一主题

[硬件及驱动] 问个scsi块设备驱动的问题 [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-10-21 10:30 |只看该作者 |倒序浏览
本帖最后由 arm-linux-gcc 于 2015-10-21 10:41 编辑

scsi_request_fn是scsi disk的queue处理回调
刚进入scsi_request_fn时,从request里面取到的应该是不带scsi命令的纯负载数据
跟踪了一下代码,发现是在sd_init_command里面构建的scsi命令,然后再调用scsi_dispatch_cmd传给具体底层的queuecommand回调(如usb storage的queuecommand_lck)

但是我并没有在找到负载数据是在什么地方传给底层的,按照我对scsi的理解,scsi_request_fn需要把取到的request分为scsi命令和纯数据负载分别发送,目前只找到了构建scsi命令和发送scsi命令的过程,那么数据负载的发送是在什么地方呢?






论坛徽章:
2
寅虎
日期:2014-11-25 21:47:342015小元宵徽章
日期:2015-03-06 15:58:18
2 [报告]
发表于 2015-10-21 19:18 |只看该作者
scsi cmd中有request,里面有bio,bio里面就包含对应的page

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
3 [报告]
发表于 2015-11-05 13:38 |只看该作者
回复 2# 镇水铁牛


再问个问题
blk_complete_request
blk_end_request
请问这两个有啥区别呢?

论坛徽章:
2
寅虎
日期:2014-11-25 21:47:342015小元宵徽章
日期:2015-03-06 15:58:18
4 [报告]
发表于 2015-11-05 19:25 |只看该作者
blk_complete_request是当IO在LLDD回调时,最先调用的,它触发scsi的软中断,最后在scsi层中,准备真正结束这个请求时,才会调用blk_end_request
可以简单的认为blk_end_request比blk_complete_request更靠上层一些或更靠后一些。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP