Странности работы udev с CD/DVD устройствами

По просьбам трудящихся, размещаю :)
AUR: eject-unlock
Спасибо, поставил. Жди пока там разрабы udev раздуплятся…
Это патч на eject, который решает две проблемы, возникшие за последние несколько лет, пока он не обновлялся.
1) С некоторых пор, чтобы посылать устройству команды SCSI, надо открывать его на запись. Раньше для этого, как и для команд CD-ROM, хватало открытия на чтение, что eject и делал. Я научил его сначала пытаться открыть устройство на запись, а если не получится – тогда на чтение.
2) Собственно, блокировка привода, которую делает udev, начиная с версии 172. В результате выяснилось, что раньше, когда для доступа к IDE/ATA устройствам не использовалась эмуляция SCSI, при получении ioctl-вызова CDROMEJECT модуль ядра cdrom сам на всякий случай разблокировал привод. В нём до сих пор есть этот код, но он больше не работает – теперь этот вызов обрабатывается где-то в другом месте, без разблокирования. Поэтому в eject не была предусмотрена отдельная разблокировка привода в режиме CD-ROM (eject -r), хотя в режиме SCSI (eject -s) она есть. Мне пришлось прикрутить перед извлечением диска методом CDROMEJECT отдельную команду разблокирования лотка.

Ждать теперь минимум пока мэйнтейнеры Arch добавят патч в основной пакет eject.
Что касается разработчиков udev, то им надо ещё как-то доказать, что блокировать привод всем подряд нехорошо, и переносить такого рода функции из udisks в udev тоже не очень правильно.
Итак, я сегодня хвастаюсь :)
Мои переговоры с мэйнтейнерами по eject завершились переносом моего пакета eject-unlock из AUR в , и теперь он просто eject-2.1.5-7 .

В пакет я добавил два моих патча, и патчи из Федоры (по предложению мэйнтейнеров). У Федоры было шесть патчей, пять я добавил, а шестой выкинул, поскольку у меня он уже был реализован полнее.
Кроме того, они добавили от себя “–enable-default-device=sr0”, так что теперь симлинк /dev/cdrom больше не обязателен для команды eject .
Хорошая новость и мои поздравления!
Супер, поздравляю!
Спасибо :)

Вот бы всё было так же просто с udisks, udev и ядром…
udisks каким-то образом ухитряется разблокировать привод при монтировании, так что его можно вынуть просто кнопкой без отмонтирования.
udev по-прежнему тормозит, творит что-то своими “хелперами” помимо правил, и работает слегка нестабильно.
Ядро (точнее драйвер сиди в нём), как выяснилось, тоже чудит – именно оно во время опознавания и раскрутки диска ухитряется два раза пересоздать устройство, из-за чего смонтировать его получается с N-го раза, а иногда вообще никак.

В общем, надо решиться, взять лопату и копать глубже :)
 
Зарегистрироваться или войдите чтобы оставить сообщение.