Bug 4332

Summary: /etc/init.d/network start breaks USB hotplug
Product: Sisyphus Reporter: Sergey Vlasov <vsu>
Component: net-scriptsAssignee: Denis Ovsienko <pilot>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: blocker    
Priority: P2 CC: rider, spider
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 3459, 4669    
Attachments:
Description Flags
модофикация none

Description Sergey Vlasov 2004-06-10 13:37:01 MSD
/etc/init.d/network содержит следующую конструкцию:

        oldhotplug=`sysctl kernel.hotplug 2>/dev/null| awk '{print $3}' 2>/dev/n
ull`
        sysctl -w "kernel.hotplug=/bin/true" >/dev/null 2>&1

...

        sysctl -w "kernel.hotplug=$oldhotplug" >/dev/null 2>&1

В результате этого у меня на машине с ядром 2.4.26-std-up-alt2 не поднимается
USB-мышь (и вообще все USB-устройства, уже подключенные при загрузке). 
Очевидно, проблема в том, что распознавание USB-устройств занимает значительное
время, и в результате к тому времени, когда ядро вызывает hotplug для них, уже
успевает запуститься network и отключить hotplug.

Steps to Reproduce:
1.
2.
3.
Comment 1 Denis Ovsienko 2004-06-10 14:05:53 MSD
Я hotplug почти не пользуюсь, какие будут предложения? rider, как правильно?
Comment 2 Denis Ovsienko 2004-06-10 14:21:29 MSD
Эти строки нейтрализуют hotplug, чтобы он не запускал ifup параллельно с service
network start.
Comment 3 Anton Farygin 2004-06-10 14:26:19 MSD
Выкинуть из net-scripts отключение hotplug'а.
А в самом хотплуге че-нить пропатчить.

Как вариант (если я правильно понимаю - это делается исключительно из-за ifup) -
сделать так что бы и в hotplug и в net-scripts для этого использовался один и
тот же код.
Comment 4 Anton Farygin 2004-06-10 14:27:39 MSD
Кстати, а почему бы не отдать функцию ifup hotplug'у ?

Это там живет в net.agent и я не вижу в этом ничего страшного.
Comment 5 Denis Ovsienko 2004-06-10 14:30:12 MSD
Я не могу судить, будет ли лучше, если этим будет заниматься hotplug.
Почему нельзя отключить hotplug на время подъёма интерфейсов?
Comment 6 Anton Farygin 2004-06-10 14:35:32 MSD
дело в том, что hotplug должен работать всегда, ибо это hotplug. т.е. - если во
время подъема интерфейсов будет воткнута USB мышь, то hotplug ее должен
настроить. И так - со всеми устройствами.

Сейчас происходит следующее: 
запускается hotplug, загружает драйвера USB.

после этого ядро ищет устройства на USB шине, и само начинает стартовать для
него hotplug. 
Когда и в какое время оно будет запускать hotplug - непонятно. Естественно, что
если hotplug во время этого процесса отключить и включить, то часть устройст
окажется не настроенной.
Comment 7 Denis Ovsienko 2004-06-10 14:40:35 MSD
А можно ли так устроить, чтобы на время работы /etc/init.d/network hotplug не
обслуживала сетевые интерфейсы? Если да, то я предлагаю сделать так.
Comment 8 Anton Farygin 2004-06-10 14:55:03 MSD
А мне кажется, что решение уже есть.. 

в hotplug:
            # RedHat and similar
            export IN_HOTPLUG=1
            if [ -x /sbin/ifup ]; then
                debug_mesg invoke ifup $INTERFACE
                exec /sbin/ifup $INTERFACE
            else
                mesg "how do I bring interfaces up on this distro?"
            fi


Осталось понять что такое IN_HOTPLUG и с чем его ядят.

Еще один вариант - не поднимать из hotplug интерфейсы, помеченные как ONBOOT=yes

Но hotplug в net-scripts придется оставлять включенным - по любому. Иначе мы
наловим массу граблей.
Comment 9 Denis Ovsienko 2004-06-10 15:07:11 MSD
>             # RedHat and similar
>             export IN_HOTPLUG=1

> Осталось понять что такое IN_HOTPLUG и с чем его ядят.
Это наверняка отключалка функциональности, обрабатываемая RH'ими initscripts или
что там у них.

> Еще один вариант - не поднимать из hotplug интерфейсы, помеченные как ONBOOT=yes
Это нужно исследовать, сразу не могу сказать.

> Но hotplug в net-scripts придется оставлять включенным - по любому. Иначе мы
> наловим массу граблей.
Может, пусть hotplug не лазит в сетевые интерфейсы? Как в
https://bugzilla.altlinux.org/show_bug.cgi?id=4256
Comment 10 Anton Farygin 2004-06-10 15:13:38 MSD
нет, там были драйвера, а тут - интерфейсы.

hotplug никогда не узнает, для чего нужен этот самый интерфейс.

Т.е. - например network-scripts не поднимают PCMCIA сетевые.

Или USB сетевые.
Comment 11 Denis Ovsienko 2004-06-10 15:32:14 MSD
Зачем тогда hotplug поднимает сетевые PCI?
Comment 12 Anton Farygin 2004-06-10 15:34:07 MSD
все что на CardBus - по своей сути PCI
Comment 13 Denis Ovsienko 2004-06-12 22:08:45 MSD
Created attachment 431 [details]
модофикация
Comment 14 Denis Ovsienko 2004-06-15 12:04:09 MSD
Мнения будут?
Comment 15 Denis Ovsienko 2004-07-04 02:58:12 MSD
Я проверил эти изменения. USB-мышку мне так и не удалось сломать, но hotplug
теперь блокироваться не будет. Если никто не возразит до понедельника, то включу
в net-scripts-0.4.9.1.
Comment 16 Anton Farygin 2004-07-05 10:02:53 MSD
Добро.
Comment 17 Denis Ovsienko 2004-07-05 11:06:45 MSD
Эти изменения вошли в 0.4.9.1 (залито).
Comment 18 Denis Ovsienko 2004-07-07 11:58:01 MSD
Ошибка исчезла?
Comment 19 Anton Farygin 2004-07-09 11:35:00 MSD
2spider:просьба проверить.
Comment 20 Dmitriy Porollo 2004-07-09 14:02:45 MSD
net-scripts-0.4.9.1-alt1 USB мышь не поднимается.
Comment 21 Anton Farygin 2004-07-09 14:39:21 MSD
Как не работает ?

Блин... 
Comment 22 Dmitriy Porollo 2004-07-09 15:15:48 MSD
отбой тревоги. Заработало.