首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到块设备的scsi_host_template函数?

如何找到块设备的scsi_host_template函数?
EN

Stack Overflow用户
提问于 2020-04-26 02:39:13
回答 1查看 79关注 0票数 0

我在查看Linux内核的IO路径,然后在函数scsi_dispatch_cmd()的底部调用驱动程序代码。

代码语言:javascript
复制
rtn = host->hostt->queuecommand(host, cmd);

因此,对于像/dev/sda/这样的块设备,有什么方法可以找出它在使用哪个hosttscsi_host_template。我想检查queuecommand指向哪个函数..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-26 23:03:06

就像一个关于这个问题的思考草图。

在我的USB驱动器机器中,我可以看到以下内容:

代码语言:javascript
复制
$ ls -l /dev/sdg
brw-rw---- 1 root disk 8, 96 Apr 27 01:21 /dev/sdg
$ ll /sys/dev/block/8\:96/device/drive
lrwxrwxrwx 1 root root 0 Apr 27 01:32 /sys/dev/block/8:96/device/driver -> ../../../../../../../../../bus/scsi/drivers/sd

因此,通常这样的块设备是通过常规的Linux scsi磁盘驱动程序来处理的。它与例如usb处理有关:

代码语言:javascript
复制
$ lsmod | grep sd
sd_mod                 49152  13
scsi_mod              225280  5 sd_mod,usb_storage,libata,uas,sg

在这种特殊情况下,我们可以看到排队和提到的驱动器之间的关系:

代码语言:javascript
复制
$ grep queuecommand /proc/kallsyms
ffffffffc052be60 t uas_queuecommand [uas]
ffffffffc0582ad0 t queuecommand [usb_storage]

现在,在Linux源代码dir中:

代码语言:javascript
复制
$ grep -rnI '\.queuecommand =' | grep usb
drivers/usb/storage/uas.c:846:  .queuecommand = uas_queuecommand,
drivers/usb/storage/scsiglue.c:609: .queuecommand =         queuecommand,

希望这能帮到你。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61435182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档