Я надеюсь, что кто-то здесь может помочь мне понять, как Ubuntu 12.04.3 периодически сканирует шину SCSI.
Я включил SCSI, регистрирующийся через эту команду:
scsi_logging_level -E 3 -S 3 -M 2
Когда я включаю свой BlackBerry 9800, я вижу следующий набор сообщений периодически (режим зарядки, не режим UMASS):
[102356.446327] sd 32:0:0:1: Done: SUCCESS
[102356.446331] sd 32:0:0:1: Result: hostbyte=DID_OK driverbyte=DRIVER_OK
[102356.446335] sd 32:0:0:1: CDB: Test Unit Ready: 00 20 00 00 00 00
[102356.446343] sd 32:0:0:1: Sense Key : Not Ready [current]
[102356.446347] sd 32:0:0:1: Add. Sense: Medium not present
[102356.446358] sd 32:0:0:0: Send:
[102356.446361] sd 32:0:0:0: CDB: Test Unit Ready: 00 00 00 00 00 00
[102356.447168] sd 32:0:0:0: Done: SUCCESS
[102356.447172] sd 32:0:0:0: Result: hostbyte=DID_OK driverbyte=DRIVER_OK
[102356.447176] sd 32:0:0:0: CDB: Test Unit Ready: 00 00 00 00 00 00
[102356.447183] sd 32:0:0:0: Sense Key : Not Ready [current]
[102356.447188] sd 32:0:0:0: Add. Sense: Medium not present
Наконец, когда я переключаюсь на режим UMASS, носитель обнаруживается как подарок и соответствие sd
узлы устройства создаются.
Все работает как ожидалось, но я хотел бы понять эту функциональность. Так, что инициировало периодическое сканирование шины? Есть ли сервис где-нибудь, который инициировал это, или это сделано непосредственно ядром?
Сообщения определенно прибывают из ядра, таким образом, я полагаю, что ядро ответственно за сканирование устройств SCSI. Однако мне относительно того, все еще не ясно, что инициировало периодическое пересканирование моего устройства BlackBerry.
Хорошо. Я наконец понял это.
Опрос обрабатывается ядром напрямую. Это не происходит на уровне SCSI, как я изначально думал, но обрабатывается на уровне блочных устройств. Это было добавлено несколько версий ядра назад , однако по умолчанию оно отключено в источнике kernel.org.
Вы можете изменить интервал опроса по умолчанию с помощью следующей команды (вы должны быть пользователем root):
echo 2000 > /sys/module/block/parameters/events_dfl_poll_msecs
или версия, удобная для sudo:
echo 2000 | sudo tee -a /sys/module/block/parameters/events_dfl_poll_msecs
Я предполагаю, что во время Ubuntu init, это установлено, или, возможно, они напрямую исправляют исходный код kernel.org со своим собственным значением по умолчанию.