<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>19313</bug_id>
          
          <creation_ts>2009-03-24 18:03:01 +0300</creation_ts>
          <short_desc>Не срабатывает правило для udev</short_desc>
          <delta_ts>2009-06-03 18:54:57 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>ifrename</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anton Farygin">rider</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>aen</cc>
    
    <cc>boyarsh</cc>
    
    <cc>cas</cc>
    
    <cc>glebfm</cc>
    
    <cc>inger</cc>
    
    <cc>ldv</cc>
    
    <cc>mike</cc>
    
    <cc>placeholder</cc>
    
    <cc>rider</cc>
    
    <cc>shrek</cc>
    
    <cc>silicium</cc>
    
    <cc>vitty</cc>
    
    <cc>vsu</cc>
    
    <cc>vt</cc>
    
    <cc>vvk</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>87837</commentid>
    <comment_count>0</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2009-03-24 18:03:01 +0300</bug_when>
    <thetext>$ cat /etc/iftab 
eth0    mac 00:07:e9:0a:46:72
eth1    mac 00:0e:a6:5c:01:a0

После загрузки имеем eth1 и eth2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87839</commentid>
    <comment_count>1</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2009-03-24 18:17:03 +0300</bug_when>
    <thetext>Обновление версии ifrename не помогает.

Смену ядра - не пробовал (сейчас alt14 из branch/5.0).

Валера, а udev тут может как-то зафиксить этот вопрос ?
запускать ifrename только тогда, когда поток сетевых интерфейсов иссякнет ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87840</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2009-03-24 18:21:55 +0300</bug_when>
    <thetext>Кажется такое невозможно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87856</commentid>
    <comment_count>3</comment_count>
    <who name="Valery Inozemtsev">shrek</who>
    <bug_when>2009-03-24 21:32:09 +0300</bug_when>
    <thetext>переименовывай во что нибудь отличное от ethX. других бесграбельных вариантов нет</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87881</commentid>
    <comment_count>4</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2009-03-25 09:37:49 +0300</bug_when>
    <thetext>Это к Стасу в alterator-network.

Впрочем, /etc/net/iftab сейчас тоже сломан, но там уже есть работающий патч:
https://bugzilla.altlinux.org/show_bug.cgi?id=11786</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87884</commentid>
    <comment_count>5</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2009-03-25 10:28:23 +0300</bug_when>
    <thetext>Получил лог (ifrename --verbose) в момент некорректного переименовывания. Вот что происходит:
--------запуск для eth1, идет перед eth0 в логе!!! -----------
Parsing : Added Mapping `eth0&apos; from line 1.
Parsing : Added exact MAC address `00:07:e9:0a:46:72&apos; from line 1.
Parsing : Added Mapping `eth1&apos; from line 2.
Parsing : Added exact MAC address `00:0e:a6:5c:01:a0&apos; from line 2.
Querying eth0 : Got MAC address `00:0E:A6:5C:01:A0&apos; and ARP/Link Type `1&apos;.
Takeover : moving interface `eth1&apos; to `eth%d&apos;.
-------------------

Запуск номер 2 в логе:
-------------------
Parsing : Added Mapping `eth0&apos; from line 1.
Parsing : Added exact MAC address `00:07:e9:0a:46:72&apos; from line 1.
Parsing : Added Mapping `eth1&apos; from line 2.
Parsing : Added exact MAC address `00:0e:a6:5c:01:a0&apos; from line 2.
Querying eth1 : Got MAC address `00:0E:A6:5C:01:A0&apos; and ARP/Link Type `1&apos;.
Setting : Interface `eth1&apos; already matches `eth1&apos;.
Error: cannot change name of eth0 to eth1: No such device
--------------------

Последний Error, по ощущением - от первого запуска ifrename.
Собственно вопрос:
- почему пришло уведомление сначала об eth1, потом об eth0 ?


Ну и что произошло, на русском:
- пришло уведомление о том, что появился интерфейс eth1, udev вызвает ifrename, который, пытаясь поменять eth1 на eth0 обнаруживает наличие eth0, меняет eth1 на eth2 (%d - это просто следующий свободный номер в ядре), и пытается eth0 переименовать в eth1. В это время, параллельно, другой процесс ifrename пытается так же eth0 перереименовать в eth1. Тут где-то засада и порылась. Видимо, кто-то из них успевает первее... и обламывается тот, который делал takeover в первом процессе, оставляя бывший eth1 как eth2. При этом eth0 у нас успешно переименован в eth1, и на выходе мы можем наблюдать наличие двух интерфейсов - eth1 и eth2.

Вопрос - как чинить ? Идеи есть ?

Сделать блокировку ? если запускается процесс takeover, то другой процесс ifrename ни в коем случае не должен трогать интерфейсы, для которых выполняется переименование... впрочем, видимо, это будет полезно и в других случаях.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87885</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2009-03-25 10:41:47 +0300</bug_when>
    <thetext>(В ответ на комментарий №5)
&gt; Ну и что произошло, на русском:
&gt; - пришло уведомление о том, что появился интерфейс eth1, udev вызвает ifrename,
&gt; который, пытаясь поменять eth1 на eth0 обнаруживает наличие eth0, меняет eth1
&gt; на eth2 (%d - это просто следующий свободный номер в ядре), и пытается eth0
&gt; переименовать в eth1.

Насколько я понимаю ifrename -u не меняет интерфейсы, он лишь говорит udev какое имя присвоить устройству... Правда, большой разницы это не делает в данном случае.

&gt; Сделать блокировку ? если запускается процесс takeover, то другой процесс
&gt; ifrename ни в коем случае не должен трогать интерфейсы, для которых выполняется
&gt; переименование... впрочем, видимо, это будет полезно и в других случаях.

Нужно не вызывать ifrename напрямую из правила, а сделать скрипт-обёртку с блокировкой. Благо место для файловой блокировки есть.

Из того что ты нашёл следует, что эта проблема не зависит от #14837. Это рейс  ifrename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87886</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2009-03-25 10:51:56 +0300</bug_when>
    <thetext>Внезапно выяснил, что мантейнер пакета не legion, а george. Тогда ему и решать эти проблемы.

Assign =&gt; george@</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87887</commentid>
    <comment_count>8</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2009-03-25 10:52:08 +0300</bug_when>
    <thetext>Судя по коду в ядре - в качестве блокировки интерфейса от смены имени - можно говорить ему IFF_UP (т.е. - выставлять флаг в UP).

По поводу флага -u у ifrename - он влияет только на вывод, не более того. Вообще, я не знаю, зачем udev&apos;у нужна эта информация от ifrename - реально имя интерфейсу меняет ifrename, а не udev.

И да, эта проблема - race в связке udev/ядра/ifrename. Про это было сразу понятно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87888</commentid>
    <comment_count>9</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2009-03-25 10:54:10 +0300</bug_when>
    <thetext>Добавлю, что проблема воспроизводится на 5.0, а наши средства настройки активно используют /etc/iftab для привязки интерфейсов к мак-адресам. Соответственно, со всеми вытекающими последствиями в дистрибутивах.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87890</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2009-03-25 11:02:26 +0300</bug_when>
    <thetext>Антон, не меняй пожалуйста атрибуты бага без комментариев. Я больше не мантейнер этого пакета.

$ ssh git.alt acl sisyphus wireless-tools show
wireless-tools	ldv george

$ rpmquery -p --lastchange --qf=&apos;%{packager}\n&apos; ifrename-29-alt3.i586.rpm |sed -n &apos;s/.*&lt;\([^@]\+@\).*/\1/p&apos; |uniq
george@</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87891</commentid>
    <comment_count>11</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2009-03-25 11:05:57 +0300</bug_when>
    <thetext>гм. я ничего специально не менял.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87903</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2009-03-25 13:57:54 +0300</bug_when>
    <thetext>(В ответ на комментарий №11)
&gt; гм. я ничего специально не менял.

Я знаю.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87904</commentid>
    <comment_count>13</comment_count>
      <attachid>3394</attachid>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2009-03-25 14:00:54 +0300</bug_when>
    <thetext>Created attachment 3394
ifrename-alt-lockfile.patch

На месте мантейнера, я не стал бы делать никаких скриптов, а добавил блокировку на конфигурационный файл. Как, например, в этом патче.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87993</commentid>
    <comment_count>14</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-03-26 15:39:52 +0300</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=3394) [details]
&gt; ifrename-alt-lockfile.patch
&gt; 
&gt; На месте мантейнера, я не стал бы делать никаких скриптов, а добавил блокировку
&gt; на конфигурационный файл. Как, например, в этом патче.

Спасибо, собрал 29-alt4 с этим патчем.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88071</commentid>
    <comment_count>15</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2009-03-27 09:33:56 +0300</bug_when>
    <thetext>Спасибо, всё работает отлично!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88122</commentid>
    <comment_count>16</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2009-03-27 15:28:35 +0300</bug_when>
    <thetext>На самом деле то, что сейчас сделано в пакете ifrename, работать не должно, и по-прежнему работает только при наличии достаточного везения.

Во-первых, в /etc/udev/rules.d/19-udev-ifrename.rules сейчас содержится

SUBSYSTEM==&quot;net&quot;, ACTION==&quot;add&quot;, PROGRAM=&quot;/sbin/ifrename -u -t -i %k&quot;, NAME=&quot;%k&quot;

Это правило неверное - предполагалось, что ifrename -u будет вызываться не через PROGRAM, а через IMPORT.  Для программ, вызываемых через PROGRAM, udevd сохраняет вывод для использования в последующих подстановках &quot;%c&quot;; поскольку &quot;%c&quot; в данном правиле нет, вывод ifrename -u просто теряется.  Формат вывода ifrename -u разработан именно для использования в IMPORT:
http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/HOTPLUG-UDEV.txt
Потеря вывода приводит к тому, что udevd не получает информации о новом имени интерфейса, в результате старое (уже неверное) имя интерфейса сохраняется в базе udev и передаётся в hald.

Во-вторых, даже замена PROGRAM на IMPORT и добавление блокировок в ifrename не устраняет race при переименовании нескольких интерфейсов - блокировка просто уменьшает вероятность проявления проблемы.  Надёжная работа правила с IMPORT=&quot;/sbin/ifrename -u -i %k&quot; возможна только при отсутствии в этом правиле опции -t.  При наличии опции -t ifrename переименовывает не только интерфейс, указанный в командной строке, но и интерфейс, занимающий имя, которое должно быть назначено обрабатываемому; если событие для этого мешающего интерфейса в этот момент обрабатывается udevd (или находится в очереди), оно будет обработано неверно (скорее всего, вообще не будет обработано, поскольку при обработке старого имени второго интерфейса ifrename обнаружит под этим именем уже переименованный первый интерфейс, для которого больше ничего делать не нужно).

Корректное с точки зрения udev правило должно выглядеть так:

SUBSYSTEM==&quot;net&quot;, ACTION==&quot;add&quot;, PROGRAM=&quot;/sbin/ifrename -D -i %k&quot;, NAME=&quot;%c&quot;

(или NAME:=&quot;%c&quot;, если результат этого переименования нужно объявить окончательным, чтобы последующие правила на него не влияли).  В этом случае ifrename только определяет имя, которое должно быть назначено интерфейсу, и сообщает его процессу udevd, а само переименование выполняется udevd, причём без промежуточного изменения имён для других интерфейсов (благодаря чему оно не может помешать параллельной обработке переименования других интерфейсов, если только им не назначены имена вида *_rename - такие имена использовать нельзя).

Правда, появляется другое ограничение - правила udevd для переименования интерфейсов (не обязательно только это правило - могут быть другие правила, переустанавливающие NAME) должны обязательно устанавливать несовпадающие имена для всех интерфейсов; если для какого-то интерфейса нет правила, и назначенное ему по умолчанию имя мешает какому-то другому интерфейсу, оба интерфейса не будут переименованы.  На этот случай можно добавить дополнительную проверку: если при вызове ifrename -D -i %k в iftab не найдено подходящее имя для интерфейса, и при этом текущее имя интерфейса присутствует в iftab в качестве назначенного для одного из интерфейсов, переименовать интерфейс, сохранив базовое имя и выбрав любой не занятый в данный момент номер (причём номер не должен быть занят как в ядре, так и в iftab, так что просто переименование в eth%d не годится).  Также нельзя использовать в iftab имена с &apos;*&apos; в конце (разве что вынести их обработку на второй шаг).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88127</commentid>
    <comment_count>17</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2009-03-27 15:47:56 +0300</bug_when>
    <thetext>Сергей, т.е. - коротко говоря:
идея привязывать eth0 и eth1 к мак-адресам посредством вызова ifrename из udev - неверна в корне, и проблемы будут вылезать в любом случае. Возможен только один вид использования ifrename - это смена имени интерфейса на уникальное, никому не принадлежащее.

Т.е. - возвращаемся к тому, что немешало-бы научить alterator-network менять имена для интерфейсов.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88129</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2009-03-27 15:57:48 +0300</bug_when>
    <thetext>(В ответ на комментарий №16)
&gt; Это правило неверное - предполагалось, что ifrename -u будет вызываться не
&gt; через PROGRAM, а через IMPORT. 

Кстати, родное правило в wireless-tools выглядит так:

SUBSYSTEM==&quot;net&quot;, ACTION==&quot;add&quot;, IMPORT=&quot;/sbin/ifrename -u -i %k&quot;, NAME:=&quot;%k&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88215</commentid>
    <comment_count>19</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-03-29 04:17:58 +0400</bug_when>
    <thetext>Нет, race недостаточно выиграть, race надо исправить.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88255</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2009-03-29 17:52:47 +0400</bug_when>
    <thetext>(В ответ на комментарий №19)
&gt; Нет, race недостаточно выиграть, race надо исправить.

Зачем ты выложил этот пакет с этим неправильным патчем ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88273</commentid>
    <comment_count>21</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-03-29 19:56:49 +0400</bug_when>
    <thetext>(In reply to comment #20)
&gt; (В ответ на комментарий №19)
&gt; &gt; Нет, race недостаточно выиграть, race надо исправить.
&gt; 
&gt; Зачем ты выложил этот пакет с этим неправильным патчем ?

Я не считаю выложенный патч неправильным, я считаю его недостаточным.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88274</commentid>
    <comment_count>22</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2009-03-29 19:58:36 +0400</bug_when>
    <thetext>ну, если уж исходить с точки зрения пользователя - то по крайней мере у меня этот пакет с недостаточным патчем заработал.

Чудом, да.. кто-нить сможет написать testcase для ifrename ? ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88275</commentid>
    <comment_count>23</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2009-03-29 20:11:57 +0400</bug_when>
    <thetext>(In reply to comment #3)
&gt; переименовывай во что нибудь отличное от ethX.
&gt; других бесграбельных вариантов нет
Этот тоже грабельный -- в обсуждениях проблемы упоминали разный софт (открытый и закрытый), закладывающийся именно на ethX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88276</commentid>
    <comment_count>24</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2009-03-29 20:15:00 +0400</bug_when>
    <thetext>Софт, закладывающийся на eth* умрёт в любом случае - есть же ещё br0, wlan0, tap0 и т.д.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88357</commentid>
    <comment_count>25</comment_count>
    <who name="Fr. Br. George">george</who>
    <bug_when>2009-03-31 00:59:35 +0400</bug_when>
    <thetext>(В ответ на комментарий №7)
&gt; Внезапно выяснил, что мантейнер пакета не legion, а george. Тогда ему и решать
&gt; эти проблемы.
&gt; 
&gt; Assign =&gt; george@

Без меня меня женили. Каким образом я угодил в майнтейнеры этого пакета. Я один раз исправлял trivial (как казалось) баг в 4.1, добавил takeover. Без takeover наши дистрибутивы прямо из коробки работали с вероятностью 50% неправильно. Фиксить надо было, как обычно, &quot;вчера&quot;. А исправление в 4.1 невозможно без исправления в Сизифе.

Вот и помогай после этого людям.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88532</commentid>
    <comment_count>26</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2009-04-01 23:07:47 +0400</bug_when>
    <thetext>(In reply to comment #25)
&gt; &gt; Внезапно выяснил, что мантейнер пакета не legion, а george.
&gt; Без меня меня женили. [...] Вот и помогай после этого людям.
Мужики, не кипятитесь.  Если бы это была единственная проблема с обязательными ACL и автоназначением кого попало, всё было бы ещё хорошо.

Насколько мне не нравится вседозволенность в виде @nobody by default -- всё-таки за неимением _адекватного_ механизма это меньшая плата за хорошие отношения.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88943</commentid>
    <comment_count>27</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2009-04-08 10:05:52 +0400</bug_when>
    <thetext>Протестировал по просьбе Legion&apos;а wireless-tools отсуда:
http://git.altlinux.org/people/legion/packages/wireless-tools.git?p=wireless-tools.git;a=tree;h=refs/heads/19313-try-1;hb=19313-try-1

У меня работают. Патча с блокировками там нет, интерфейсы переименовываются и так и эдак (20 перезагрузок).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89038</commentid>
    <comment_count>28</comment_count>
    <who name="Anton V. Boyarshinov">boyarsh</who>
    <bug_when>2009-04-09 18:01:56 +0400</bug_when>
    <thetext>
&gt; У меня работают. Патча с блокировками там нет, интерфейсы переименовываются и
&gt; так и эдак (20 перезагрузок).
А если так, то что нам мешает получить его в Сизифе?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91912</commentid>
    <comment_count>29</comment_count>
    <who name="Anton V. Boyarshinov">boyarsh</who>
    <bug_when>2009-05-27 13:43:20 +0400</bug_when>
    <thetext>Так или иначе, проблема продолжает наблюдаться.
Например, сегодня, после установки office-server на ham1, после установки на нём наблюдались интерфейсы eth0, breth0 (сконфигурированный и работающий) и eth2 (несконфигурированный и неработающий). При наличии конфигурации для eth1/breth1. Средств исправить это через web интерфейс я не знаю.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92011</commentid>
    <comment_count>30</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2009-05-28 15:04:24 +0400</bug_when>
    <thetext>wireless-tools-29-alt5 -&gt; sisyphus:

* Thu May 28 2009 Dmitry V. Levin &lt;ldv@altlinux&gt; 29-alt5

- Added udev-ifrename helper, updated udev rule
  (by Alexey Gladkov; closes: #19313).
- ifrename: Removed no longer needed configuration file locking
  introduced in previous build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92012</commentid>
    <comment_count>31</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2009-05-28 15:11:32 +0400</bug_when>
    <thetext>(В ответ на комментарий №30)
&gt; - Added udev-ifrename helper, updated udev rule
&gt;   (by Alexey Gladkov; closes: #19313).

Вот только это не полное решение проблемы.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92026</commentid>
    <comment_count>32</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-05-28 17:05:48 +0400</bug_when>
    <thetext>(In reply to comment #31)
&gt; (В ответ на комментарий №30)
&gt; &gt; - Added udev-ifrename helper, updated udev rule
&gt; &gt;   (by Alexey Gladkov; closes: #19313).
&gt; 
&gt; Вот только это не полное решение проблемы.

Зато оно ближе к полному решению.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92029</commentid>
    <comment_count>33</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2009-05-28 17:15:48 +0400</bug_when>
    <thetext>&gt; Зато оно ближе к полному решению.

Я рад, что новых мантейнеров устраивает это временное решение.

Настоящее же решение может быть совсем не в ifrename, а в udev. Как вариант:

http://git.kernel.org/?p=linux/hotplug/udev.git;a=blob;f=extras/rule_generator/write_net_rules;h=cb346757cc40050e034dada01224f4fc0790629b;hb=a29b30b4115db16035998c551117685d8152a496</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92062</commentid>
    <comment_count>34</comment_count>
    <who name="Anton V. Boyarshinov">boyarsh</who>
    <bug_when>2009-05-29 12:15:35 +0400</bug_when>
    <thetext>Теперь breth1 превратился в неработающий breth1_rename</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92096</commentid>
    <comment_count>35</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-05-30 02:15:31 +0400</bug_when>
    <thetext>(In reply to comment #34)
&gt; Теперь breth1 превратился в неработающий breth1_rename

Зачем в /etc/iftab указан breth1?  Нечего ему там делать!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92213</commentid>
    <comment_count>36</comment_count>
    <who name="Anton V. Boyarshinov">boyarsh</who>
    <bug_when>2009-06-01 14:28:26 +0400</bug_when>
    <thetext>&gt; &gt; Теперь breth1 превратился в неработающий breth1_rename
&gt; Зачем в /etc/iftab указан breth1?  Нечего ему там делать!
А его там нет. Только eth0 и eth1

Ну и по прежнему не работает..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92219</commentid>
    <comment_count>37</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-06-01 14:41:07 +0400</bug_when>
    <thetext>(In reply to comment #36)
&gt; &gt; &gt; Теперь breth1 превратился в неработающий breth1_rename
&gt; &gt; Зачем в /etc/iftab указан breth1?  Нечего ему там делать!
&gt; А его там нет. Только eth0 и eth1
&gt; 
&gt; Ну и по прежнему не работает..

Оно, очевидно, пытается переименовать breth1 в eth1, поскольку у них одинаковый mac, а eth1 внесён в /etc/iftab.

Есть ли в iftab(5) какая-нибудь характеристика, по которой можно было бы наверняка отличить eth1 и от eth0, и от breth1?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92222</commentid>
    <comment_count>38</comment_count>
    <who name="Valery Inozemtsev">shrek</who>
    <bug_when>2009-06-01 14:49:44 +0400</bug_when>
    <thetext>SYSFS{type}
у физических интерфейсов он равен 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92224</commentid>
    <comment_count>39</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-06-01 15:03:08 +0400</bug_when>
    <thetext>(In reply to comment #37)
&gt; Есть ли в iftab(5) какая-нибудь характеристика, по которой можно было бы
&gt; наверняка отличить eth1 и от eth0, и от breth1?

В качестве быстрого хака могу заменить в installer-feature-eth-by-mac-stage2 mac на bus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92225</commentid>
    <comment_count>40</comment_count>
    <who name="Valery Inozemtsev">shrek</who>
    <bug_when>2009-06-01 15:10:33 +0400</bug_when>
    <thetext>не надо хаков. запись для физического интерфейса должна выглядеть следующим образом:
ethX SYSFS{address} 00:1d:e0:b2:f0:5d SYSFS{type} 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92226</commentid>
    <comment_count>41</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-06-01 15:30:05 +0400</bug_when>
    <thetext>(In reply to comment #40)
&gt; не надо хаков. запись для физического интерфейса должна выглядеть следующим
&gt; образом:
&gt; ethX SYSFS{address} 00:1d:e0:b2:f0:5d SYSFS{type} 1

Так тоже не работает:

[root@host ~]# cat /etc/iftab 
eth0	SYSFS{address} 00:1a:64:a3:93:9c SYSFS{type} 1
eth1	SYSFS{address} 00:08:c7:8a:23:69 SYSFS{type} 1
[root@host ~]# ifrename -D -i breth0
Dry-run : Would rename breth0 to eth0.
eth0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92227</commentid>
    <comment_count>42</comment_count>
    <who name="Valery Inozemtsev">shrek</who>
    <bug_when>2009-06-01 15:42:27 +0400</bug_when>
    <thetext>ах ты блин. у бриджа type тоже 1
можно привязаться еще жестче, допустим по SYSFS{device}. см. man iftab</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92230</commentid>
    <comment_count>43</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2009-06-01 16:03:15 +0400</bug_when>
    <thetext>Да, дописывание &quot;SYSFS{device} *&quot; в iftab помогает отличить физические интерфейсы от bridge (причём, похоже, сейчас это работает независимо от CONFIG_SYSFS_DEPRECATED, несмотря на описание в man iftab). Возможно, не будет работать с какими-то особо кривыми драйверами, не выставляющими ссылку на физическое устройство.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92246</commentid>
    <comment_count>44</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2009-06-01 18:37:25 +0400</bug_when>
    <thetext>installer-feature-eth-by-mac-stage3-0.4-alt1 -&gt; sisyphus:

* Mon Jun 01 2009 Dmitry V. Levin &lt;ldv@altlinux&gt; 0.4-alt1

- Changed iftab format (closes: #19313).
- Switched to stage3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92275</commentid>
    <comment_count>45</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2009-06-02 00:55:44 +0400</bug_when>
    <thetext>(In reply to comment #39)
&gt; В качестве быстрого хака могу заменить в installer-feature-eth-by-mac-stage2
&gt; mac на bus.
Дима, тебе следует более внимательно читать рассылки и багзиллу. :)

Это уже обсуждалось (кажется, с asy@/vvk@); решили, что породит больше проблем: MAC более постоянен и меняется скорее со сменой карты, а вот порядок сканирования шин(ы) может плавать с ядром, его параметрами и IIRC версией BIOS.  Ну и переставив карточку в соседний слот, получаем отъезд привязки.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92358</commentid>
    <comment_count>46</comment_count>
    <who name="Valery Inozemtsev">shrek</who>
    <bug_when>2009-06-03 10:57:09 +0400</bug_when>
    <thetext>- Added udev-ifrename helper, updated udev rule
  (by Alexey Gladkov; closes: #19313).

в результате на 3-х машинах остался без сети
# /lib/ifrename/udev-ifrename eth0 
udev-ifrename: /etc/iftab line 3: : interface name patterns are not supported
eth0

$ cat /etc/iftab 
# 82566MM Gigabit Network Connection
ether	mac 00:1D:72:82:50:03

# PRO/Wireless 4965 AG or AGN Network Connection
wifi	SYSFS{address} 00:1d:e0:b2:f0:5d SYSFS{type} 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92378</commentid>
    <comment_count>47</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-06-03 14:40:30 +0400</bug_when>
    <thetext>(In reply to comment #46)
&gt; # /lib/ifrename/udev-ifrename eth0 
&gt; udev-ifrename: /etc/iftab line 3: : interface name patterns are not supported
&gt; eth0

Значит, в скрипте udev-ifrename есть баги.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92381</commentid>
    <comment_count>48</comment_count>
    <who name="AEN">aen</who>
    <bug_when>2009-06-03 14:51:14 +0400</bug_when>
    <thetext>(В ответ на комментарий №47)
&gt; (In reply to comment #46)
&gt; &gt; # /lib/ifrename/udev-ifrename eth0 
&gt; &gt; udev-ifrename: /etc/iftab line 3: : interface name patterns are not supported
&gt; &gt; eth0
&gt; 
&gt; Значит, в скрипте udev-ifrename есть баги.


Или, как пишет vsu@ : &quot;Возможно, не будет
работать с какими-то особо кривыми драйверами, не выставляющими ссылку на
физическое устройство.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92422</commentid>
    <comment_count>49</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2009-06-03 18:54:57 +0400</bug_when>
    <thetext>wireless-tools-29-alt6 -&gt; sisyphus:

* Wed Jun 03 2009 Dmitry V. Levin &lt;ldv@altlinux&gt; 29-alt6

- udev-ifrename: Fixed comments handling (closes: #19313).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3394</attachid>
            <date>2009-03-25 14:00:54 +0300</date>
            <delta_ts>2009-03-25 14:00:54 +0300</delta_ts>
            <desc>ifrename-alt-lockfile.patch</desc>
            <filename>ifrename-alt-lockfile.patch</filename>
            <type>text/plain</type>
            <size>1038</size>
            <attacher name="Alexey Gladkov">legion</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL3dpcmVsZXNzLXRvb2xzL2lmcmVuYW1lLmMgYi93aXJlbGVzcy10b29scy9p
ZnJlbmFtZS5jCmluZGV4IDlhMjlkMTcuLjJkNWMxOTAgMTAwNjQ0Ci0tLSBhL3dpcmVsZXNzLXRv
b2xzL2lmcmVuYW1lLmMKKysrIGIvd2lyZWxlc3MtdG9vbHMvaWZyZW5hbWUuYwpAQCAtMjA0NSw2
ICsyMDQ1LDcgQEAgbWFwcGluZ19yZWFkZmlsZShjb25zdCBjaGFyICoJZmlsZW5hbWUpCiAgIHNp
emVfdAkJbGluZWxlbiA9IDA7IAogICBpbnQJCQlsaW5lbnVtID0gMDsgCiAgIHN0cnVjdCBhZGRf
ZXh0cmEJZXh0cmFpbmZvOworICBpbnQJCQljb25maWdfZmQ7CiAKICAgLyogUmVzZXQgdGhlIGxp
c3Qgb2YgZmlsdGVycyAqLwogICBiemVybyhzZWxlY3Rvcl9hY3RpdmUsIHNpemVvZihzZWxlY3Rv
cl9hY3RpdmUpKTsKQEAgLTIwNjYsNiArMjA2NywyMiBAQCBtYXBwaW5nX3JlYWRmaWxlKGNvbnN0
IGNoYXIgKglmaWxlbmFtZSkKIAkJICBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsgCiAJICBy
ZXR1cm4oLTEpOwogCX0KKworICAgICAgLyogT3BlbiB0aGUgY29uZmlnIGZpbGUgZm9yIGxvY2tp
bmcgKi8KKyAgICAgIGlmICgoY29uZmlnX2ZkID0gb3BlbihmaWxlbmFtZSwgT19SRE9OTFkpKSA9
PSAtMSkKKyAgICAgICAgeworCSAgZnByaW50ZihzdGRlcnIsICJFcnJvcjogQ2FuJ3Qgb3BlbiBj
b25maWd1cmF0aW9uIGZpbGUgYCVzJzogJXNcbiIsCisJCSAgZmlsZW5hbWUsIHN0cmVycm9yKGVy
cm5vKSk7CisJICByZXR1cm4oLTEpOworICAgICAgICB9CisKKyAgICAgIC8qIExvY2sgY29uZmln
IGZpbGUgKi8KKyAgICAgIGlmIChmbG9jayhjb25maWdfZmQsIExPQ0tfRVgpID09IC0xKQorICAg
ICAgICB7CisgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvcjogQ2FuJ3QgbG9jayBjb25m
aWd1cmF0aW9uIGZpbGUgYCVzJzogJXNcbiIsCisJCSAgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5v
KSk7CisJICByZXR1cm4oLTEpOworICAgICAgICB9CiAgICAgfQogCiAgIC8qIFJlYWQgZWFjaCBs
aW5lIG9mIGZpbGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>