3

根据struct scsi_deviceSCSI 驱动程序使用的内核结构(内核 2.6.23):

http://lxr.linux.no/linux+v2.6.23/include/scsi/scsi_device.h#L49

是否有可靠的方法来区分设备是 USB 设备还是 ATA 设备?

4

1 回答 1

1

对于每个scsi_device,您可以获得scsi_host与其对应的 ,并从那里获得scsi_host_template,它是 SCSI LLD 的 vtable。从那里,您可以查看名称字段。drivers/scsi/storage/usb.c 告诉我们字符串应该是“usb-storage”。

因此,我认为将“sdev”作为 scsi_device 指针,sdev->shost->hostt->name如果它是来自 USB 大容量存储设备的 LUN,则应该解析为“usb-storage”。从设计的角度来看,以这种方式完成任务可能被认为是一种“黑客”,但没有适当的 API,这是最简单的方法。

于 2011-11-04T21:16:25.217 回答