Как отличить устройство USB и (S) ATA в структуре ядра scsi_device? - PullRequest
3 голосов
/ 14 октября 2011

В соответствии со структурой ядра struct scsi_device, используемой драйверами SCSI (ядро 2.6.23):

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

Существует ли надежный способ различения, если устройство является USBустройство или устройство ATA?

1 Ответ

1 голос
/ 05 ноября 2011

Для каждого scsi_device вы можете получить scsi_host, который соответствует ему, а оттуда scsi_host_template, который является vtable таблицы SCSI LLD. Оттуда вы можете посмотреть на поле имени. drivers / scsi / storage / usb.c говорит нам, что строка должна быть «usb-storage».

Итак, я думаю, что с учетом sdev в качестве указателя scsi_device sdev->shost->hostt->name должно преобразовываться в «usb-storage» в случае, если это LUN с запоминающего устройства USB. С точки зрения дизайна, это можно считать своего рода «взломом» для выполнения задачи таким способом, но без надлежащих API это самый простой способ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...