Bug 4332 - /etc/init.d/network start breaks USB hotplug
: /etc/init.d/network start breaks USB hotplug
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/net-scripts)
: unstable
: all Linux
: P2 blocker
Assigned To:
:
:
:
:
: 3459 4669
  Show dependency tree
 
Reported: 2004-06-10 13:37 by
Modified: 2008-02-15 23:15 (History)


Attachments
модофикация (1.84 KB, patch)
2004-06-12 22:08, Denis Ovsienko
no flags Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2004-06-10 13:37:01
/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 From 2004-06-10 14:05:53 -------
Я hotplug почти не пользуюсь, какие будут предложения? rider, как правильно?
------- Comment #2 From 2004-06-10 14:21:29 -------
Эти строки нейтрализуют hotplug, чтобы он не запускал ifup параллельно с
service
network start.
------- Comment #3 From 2004-06-10 14:26:19 -------
Выкинуть из net-scripts отключение hotplug'а.
А в самом хотплуге че-нить пропатчить.

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

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

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

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

в 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 From 2004-06-10 15:07:11 -------
>             # 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 From 2004-06-10 15:13:38 -------
нет, там были драйвера, а тут - интерфейсы.

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

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

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

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