Bug 5211

Summary: сбой запуска сервиса upsdrv для UPS с интерфейсом USB
Product: Sisyphus Reporter: Andrei Bulava <abulava>
Component: nut-driverAssignee: yuk <yuk>
Status: CLOSED WORKSFORME QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: alexsid, amike, eostapets, lav, ldv, migor, mike, rider, serpiph, sr, vsu
Version: unstable   
Hardware: all   
OS: Linux   
URL: http://lists.alioth.debian.org/pipermail/nut-upsdev/2006-March/000772.html
Bug Depends on: 7085    
Bug Blocks: 14491    
Attachments:
Description Flags
Исправление последовательности запуска сервисов none

Description Andrei Bulava 2004-09-14 11:21:45 MSD
Сервис upsdrv стартует раньше hotplug, из-за этого UPS с USB-интерфейсом не
виден на момент старта upsdrv и драйвер не загружается. Как следствие - 1) если
upsd настроен на единственный UPS (типично для десктопа), то следом за сбоем
сервиса upsdrv следует сбой сервиса upsd; 2) если upsmon работает на этом же
хосте (типично для десктопа), то в лог падает сообщение "UPS [ups@localhost]:
connect failed: Connection failure: Connection refused"
Comment 1 Andrei Bulava 2004-09-14 11:24:36 MSD
Created attachment 592 [details]
Исправление последовательности запуска сервисов

Прилагаемый патч решает вопрос последовательности _запуска_ сервисов hotplug,
upsdrv, upsd, upsmon. Что до последовательности _останова_ - при поверхностном
взгляде практической проблемы с остановом hotplug до upsmon, upsd, upsdrv я не
заметил. Но логичнее, наверное, довести начатое до конца, т.е. останавливать
сервисы в последовательности, противоположной запуску: upsmon, upsd, upsdrv,
hotplug.
Comment 2 Andrei Bulava 2004-09-15 10:03:15 MSD
Мои исправления не выдержали проверки reboot'ом :-(

С моими исправлениями upsdrv стартует непосредственно после hotplug, но
/dev/usb/hiddev0 не успевает появиться к моменту старта сервиса upsdrv.

Пока даже не предполагаю, каким способом можно _правильно_ исправить ситуацию.
Для моего конкретного случая сойдёт первый попавшийся костыль, но и тут ничего
кроме банального sleep пока в голову не приходит.
Comment 3 Dmitry V. Levin 2004-09-30 20:39:19 MSD
*** Bug 5162 has been marked as a duplicate of this bug. ***
Comment 4 Dmitry V. Levin 2004-09-30 20:43:02 MSD
Я склоняюсь к тому, что надо что-то делать с hotplug.
Может, запускать его раньше, может, ещё что-то делать.
Comment 5 Sergey Vlasov 2004-10-25 17:08:31 MSD
А бесполезно с ним что-то делать - время, через которое появится USB-устройство,
в общем случае не ограничено (например, при наличии нескольких USB-устройств
распознавание их производится процессом khubd последовательно). Разве что
запускать upsdrv из hotplug.

Привязка к конкретным /dev/usb/* тоже никуда не годится - номера устройств
плавают (в частности, даже при наличии только одного устройства при отключении и
быстром подключении устройства для него может быть выделен новый номер, если
программа недостаточно быстро закроет старый файл устройства). В 2.6 эту
проблему может решить udev; в 2.4 с этим хуже.
Comment 6 Andrei Bulava 2005-06-23 19:01:34 MSD
*** Bug 7186 has been marked as a duplicate of this bug. ***
Comment 7 Michael Shigorin 2005-06-24 18:52:07 MSD
так... следующий блок бесперебойного пищания надо покупать с USB.
Comment 8 Anton Farygin 2005-07-19 12:41:33 MSD
reassign to nut-driver

Необходимо переделать алгоритм запуска сервиса upsdrv для ядра 2.6

В ядре 2.6 такой сервис должен запускаться из 
/etc/dev.d/DEVNAME/, где DEVNAME - соответствующее устройство, создаваемое при
загрузке модуля для UPS.

Там же он должен и останавливаться. 

К сожалению у меня нет UPS, соответственно патчи сделать не могу ;-(
Comment 9 Slava Dubrovskiy 2005-07-26 14:02:16 MSD
Могу только добавить, что данная проблема присутствует не только с USB, но и с
/dev/ttyS0 при использовании udev_static-addon-0.1-alt1 и udev-0.63-alt2

Comment 10 Vitaly Lipatov 2005-09-06 23:18:18 MSD
Предлагаю хотя бы перенести запуск upsd на несколько шагов позже hotplug, 
может хоть с /dev/ttyS? начнёт работать. Всё лучше, чем ничего. 
Comment 11 Dmitry V. Levin 2005-09-07 00:42:28 MSD
Согласно комментарию #5, не начнёт.
Comment 12 Vitaly Lipatov 2005-09-07 01:01:34 MSD
Ну там речь о USB, а я о /dev/ttyS? 
Comment 13 Dmitry V. Levin 2005-09-07 01:08:43 MSD
А откуда проблемы с /dev/ttyS?
Если из-за недонастроенного udev'а, то это не здесь надо править.
Comment 14 Anton Farygin 2005-09-07 15:24:51 MSD
udev тут не при чем.

модуль 8250 для серийного порта грузится hotplug'ом.

В приниципе скорее всего он загрузится, если попытаться открыть устройство в
простом /dev/
Comment 15 Dmitry V. Levin 2005-09-07 17:13:45 MSD
Короче говоря, файл устройства и драйвер для него могут появится когда угодно
или не появится вообще, и демон (в данном случае nut'овские драйвера) тут ничего
сделать не может кроме как надеятся что файл устройства работает.
Comment 16 Anton Farygin 2005-09-07 17:16:44 MSD
Да.

Но здесь есть возможность запускать nut тогда, когда собственно появляется само
устройство.

Т.е. - убрать из сервисов и переместить запуск в udev

udev дает возможность запускать любые приложения при появлении/удалении устройств
Comment 17 Vitaly Lipatov 2005-09-07 18:26:55 MSD
(In reply to comment #15)  
> Короче говоря, файл устройства и драйвер для него могут появится когда  
Я предлагаю передвинуть upsdrv/upsd и поставить после postfix (а то он ещё и  
письма слать не может при ошибке инициализации).  
Хуюе от этого вряд ли будет, а автору баги и мне, например, полегче. 
  
Comment 18 Andrei Bulava 2005-09-07 18:46:53 MSD
(In reply to comment #17)
> Я предлагаю передвинуть upsdrv/upsd и поставить после postfix (а то он ещё и  
> письма слать не может при ошибке инициализации).  
> Хуже от этого вряд ли будет, а автору баги и мне, например, полегче. 

Всегда найдётся человек, у которого upsdrv стартует быстрее, чем будет распознан
USB UPS :-(

BTW, в силу нетерпимости upsd к отсутствию upsdrv (иными словами, upsd сразу же
вылетает с ошибкой, если на момент старта upsd не найдёт запущенного upsdrv), из
udev придётся запускать сначала upsdrv, а затем upsd. Так что сервисом останется
только upsmon :-|

Comment 19 Dmitry V. Levin 2005-10-10 21:07:08 MSD
* Mon Oct 10 2005 Dmitry V. Levin <ldv@altlinux> 2.0.2-alt1
- Updated to 2.0.2 release.
- In startup scripts, changed chkconfig priorities
  to start later and stop earler (see #5211).
Comment 20 Dmitry V. Levin 2005-10-10 21:08:07 MSD
*** Bug 6329 has been marked as a duplicate of this bug. ***
Comment 21 Anton Farygin 2006-03-20 19:50:21 MSK
ссылка весьма интересна. На мой взгляд стоит подождать, пока это пропихнут в
upstream.

Но на серверах такую схему я бы поостерёгся использовать.. или нам нужно думать,
как разделить права на запуск утилиты управления питанием (например powersaved)
Comment 22 Michael Shigorin 2007-11-10 21:10:47 MSK
(In reply to comment #9)
> Могу только добавить, что данная проблема присутствует не только с USB, но и с
> /dev/ttyS0 при использовании udev_static-addon-0.1-alt1 и udev-0.63-alt2
А вот если /dev/ttyS0 положить в "железный" /dev, прям на rootfs -- тогда
работаем.  Кажется, я про это отдельный баг вешал.
Comment 23 Michael Shigorin 2008-03-07 20:41:46 MSK
Кстати, для такого "положить" давно собирался сделать dev-minimal (тж. #12020).
Comment 24 Dmitry V. Levin 2009-09-18 01:11:22 MSD
Пакет nut ищет мейнтейнера.
Comment 25 Michael Shigorin 2010-12-29 13:17:51 MSK
Пакет сборки amike@ залил в сизиф всё-таки я.
Comment 26 Michael Shigorin 2012-05-05 23:12:01 MSK
Просьба проверить на 2.6.x, если ещё представляется возможным; УМВР.