Summary: | nut works bad with current libusb | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Vladimir V. Kamarzin <vvk> | ||||
Component: | nut | Assignee: | Michael Shigorin <mike> | ||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
Severity: | normal | ||||||
Priority: | P2 | CC: | ab, amike, amike, ldv, mike | ||||
Version: | unstable | ||||||
Hardware: | all | ||||||
OS: | Linux | ||||||
Bug Depends on: | |||||||
Bug Blocks: | 17727 | ||||||
Attachments: |
|
Description
Vladimir V. Kamarzin
2008-11-20 20:17:36 MSK
Проверено с nut 2.2.2 от Amike (git.alt:/people/amike/packages/nut.git) и libusb 0.9.4-alt1.0 все работает как надо, никаких проблем больше не наблюдается. К сожалению, для помещения nut 2.2.2 в Сизиф надо поработать над переездом конфигурационных файлов. Как минимум, /etc/nut/ups.conf потребует переименования драйвера (newhidups -> usbhid-ups), а также файлы конфигурации для других служб на самом деле лежат в /var/lib/nut/etc/nut и должны как-то корректно синхронизироваться. (In reply to comment #1) > Проверено с nut 2.2.2 от Amike (git.alt:/people/amike/packages/nut.git) и libusb 0.9.4-alt1.0 все работает как > надо, никаких проблем больше не наблюдается. хорощо > К сожалению, для помещения nut 2.2.2 в Сизиф надо поработать над переездом > конфигурационных файлов. Как минимум, /etc/nut/ups.conf потребует переименования > драйвера (newhidups -> usbhid-ups), а также файлы конфигурации для других служб на > самом деле лежат в /var/lib/nut/etc/nut и должны как-то корректно синхронизироваться. > сейчас занят этим. Спасибо что посмотрели сборку. Более плотное вычитывание кода драйверов USB-устройств в NUT 2.2.2 привело исправлению некоторого количества утечек файловых дескрипторов в libusb (0.9.4-alt2.0). Код hidups-usb в nut написан просто отвратительно с точки зрения работы со сторонними ресурсами. Типичный подход: создать ресурс USB (usb_open()), при обнаружении каких-либо ошибок работы с ним просто обнулить внутренний указатель на устройство и вызвать пересоединение к устройству. В результате старый указатель на ресурс USB "подвисает" неиспользуемым, выполняется повторное сканирование шины, распределяются новые ресурсы, теряются файловые дескрипторы и течет память. Я поправил немного код hidups-usb так, что память не течет и файловые дескрипторы не теряются, однако по-прежнему вся эта система не работает, если вдруг что-то происходит с usb-устройством (например, система автоматически включила режим сохранения энергии). Повторное присоединение к устройству не проходит, буду смотреть дальше. Со старым кодом в newhidups все еще хуже... В 2.2.2 он уже совсем не используется (код драйвера присутствует, но содержит вызовы функций, которые уже отсутствуют в инфраструктуре NUT 2.2.2). Написан он в том же стиле и просто игнорирует управление ресурсами в USB. Примитивный патч, который исправляет элементарные ошибки и позволяет работать hidups-usb до "сбоя" устройства, прилагается. Created attachment 3085 [details]
Первая версия исправления hidups-usb
Пакет nut ищет мейнтейнера. Какие-то наработки по исправлению помимо уже представленного есть у кого-нибудь? Пакет сборки amike@ залил в сизиф всё-таки я. УМВР на 2.6.3-alt1 (Powerware 9120 по USB). |