Почему требуется так много времени для обнаружения usb-флешки?

Я согласен рассмотреть возможность использования Solaris Studio.

Однако в Solaris 10 был включен дистрибутив gcc (3.x?). Я надеюсь, что Sun / Oracle скомпилировали его с некоторыми умениями для SPARC. Если он еще не установлен, вы можете попробовать установить пакет SUNWgcc с носителя или более позднее обновление Sol10.

7
25.02.2016, 09:25
2 ответа

Вы можете изменить таймаут, написав в /sys/module/usb_storage/parameters/delay_use.

Для старых usb-дисков может потребоваться задержка установки в 5 секунд или даже больше (и 5 было по умолчанию, пока в 2010 году оно не было уменьшено до 1 секунды), предположительно потому, что контроллер испытывает недостаток энергии, пока двигатели диска инициализируются. Или, возможно, потому, что внутренняя микропрограмма SCSI требует времени на загрузку, прежде чем она начнет реагировать (вы можете сказать, что я просто спекулирую здесь?).

Для современных твердотельных накопителей этот параметр, вероятно, вообще не нужен, и многие устанавливают его на 0. К сожалению, это глобальный параметр, который применяется ко всем устройствам, поэтому если у вас есть медленные устройства, вам придется терпеть задержку для каждого используемого USB-устройства массового хранения. Было бы неплохо, если бы этот параметр можно было установить для каждого устройства с помощью udev, но это не так.

5
27.01.2020, 20:16

Оказалось, что существует тайм-аут в 1 секунду int drivers / usb / storage / usb.c . Я включил большее количество отладочных журналов, набрав следующие две команды:

echo 8 > /proc/sys/kernel/printk
echo "module usb_storage +p" > /sys/kernel/debug/dynamic_debug/control
echo 0xFFFFFF > /proc/sys/dev/scsi/logging_level

Подсистема scsi имеет странный (по сравнению с остальными возможностями ведения журналов Linux) способ указания уровней журнала; они сдвигаются на один шаг для каждого уровня, см. drivers / scsi / scsi_logging.h

См. строку , запускающую сканирование ниже. Ядро ждет 1 секунду перед сканированием.

[21960.837879 <   23.040778>] usb 2-1.2: USB disconnect, device number 18
[21960.838263 <    0.000384>] sd 20:0:0:0: [sg2] sg_remove_device
[21960.838888 <    0.000625>] sd 20:0:0:0: [sg2] sg_device_destroy
[21966.157918 <    5.319030>] usb 2-1.2: new high-speed USB device number 19 using ehci-pci
[21966.251625 <    0.093707>] usb 2-1.2: New USB device found, idVendor=0781, idProduct=5530
[21966.251634 <    0.000009>] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[21966.251638 <    0.000004>] usb 2-1.2: Product: Firebird USB Flash Drive
[21966.251641 <    0.000003>] usb 2-1.2: Manufacturer: SanDisk
[21966.251644 <    0.000003>] usb 2-1.2: SerialNumber: 4C532000001215110130
[21966.252184 <    0.000540>] usb-storage 2-1.2:1.0: USB Mass Storage device detected
[21966.252307 <    0.000123>] scsi host21: usb-storage 2-1.2:1.0
[21966.252439 <    0.000132>] usb-storage 2-1.2:1.0: waiting for device to settle before scanning
[21967.250018 <    0.997579>] usb-storage 2-1.2:1.0: starting scan
[21967.250242 <    0.000224>] usb-storage 2-1.2:1.0: scan complete
[21967.250295 <    0.000053>] scsi host21: scsi_scan_host_selected: <4294967295:4294967295:18446744073709551615>
[21967.250354 <    0.000059>] scsi 21:0:0:0: scsi scan: INQUIRY pass 1 length 36
[21967.251717 <    0.001363>] scsi 21:0:0:0: scsi scan: INQUIRY successful with code 0x0
[21967.251738 <    0.000021>] scsi 21:0:0:0: Direct-Access     SanDisk  Cruzer           1.26 PQ: 0 ANSI: 5
[21967.251745 <    0.000007>] scsi target21:0:0: scsi scan: Sequential scan
[21967.251776 <    0.000031>] scsi 21:0:0:1: scsi scan: INQUIRY pass 1 length 36
[21967.251907 <    0.000131>] scsi 21:0:0:1: scsi scan: INQUIRY failed with code 0x40000
[21967.252282 <    0.000375>] sd 21:0:0:0: sg_alloc: dev=2 
[21967.252366 <    0.000084>] sd 21:0:0:0: Attached scsi generic sg2 type 0
[21967.253703 <    0.001337>] sd 21:0:0:0: [sdb] 7821312 512-byte logical blocks: (4.00 GB/3.72 GiB)
[21967.255324 <    0.001621>] sd 21:0:0:0: [sdb] Write Protect is off
[21967.255334 <    0.000010>] sd 21:0:0:0: [sdb] Mode Sense: 43 00 00 00
[21967.258145 <    0.002811>] sd 21:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[21967.272208 <    0.014063>]  sdb: sdb1
[21967.276433 <    0.004225>] sd 21:0:0:0: [sdb] Attached SCSI removable disk

Линус Торвальдс изменил задержку по умолчанию с 5 до 1 секунды в Нижняя задержка установки USB-накопителя на более разумную . Он не дает какого-либо контекста технических причин, по которым задержка была установлена ​​настолько большой, но намекает, что это могло просто замаскировать некоторые ошибки ядра.

9
27.01.2020, 20:16

Теги

Похожие вопросы