Так же, как набросок размышлений на эту тему.
В моей машине для USB-накопителя я вижу это:
$ 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:
$ lsmod | grep sd
sd_mod 49152 13
scsi_mod 225280 5 sd_mod,usb_storage,libata,uas,sg
В этом конкретном случае мы можем увидеть связь между командой queue и упомянутым диском:
$ grep queuecommand /proc/kallsyms
ffffffffc052be60 t uas_queuecommand [uas]
ffffffffc0582ad0 t queuecommand [usb_storage]
Сейчас, находясь в Linux source dir :
$ grep -rnI '\.queuecommand =' | grep usb
drivers/usb/storage/uas.c:846: .queuecommand = uas_queuecommand,
drivers/usb/storage/scsiglue.c:609: .queuecommand = queuecommand,
Надеюсь, это поможет вам.