<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - udev: floating net device number on devices with ro rootfs"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=89623">89623</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>udev: floating net device number on devices with ro rootfs
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>systemd
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>medium
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>general
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>systemd-bugs@lists.freedesktop.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>vicamo@gmail.com
          </td>
        </tr>

        <tr>
          <th>QA Contact</th>
          <td>systemd-bugs@lists.freedesktop.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>On devices with read-only rootfs, e.g. mobile phones, nic device number
(wlan<N>) may increase every time disabled and re-enabled. To be more
precisely, this happens only on devices when disabling a nic removes the
corresponding driver.

"/lib/udev/rules.d/75-persistent-net-generator.rules" checks whether NAME
attribute has been assigned to wlan<N> device: if yes, skip all the followed
steps, or, call to "/lib/udev/write_net_rules" to generate a persistent device
name rule file. That persistent file should be created under
"/etc/udev/rules.d" and named "70-persistent-net.rules", so it guarantees NAME
attribute should be assigned if available before being read. However, when
rootfs was previously mounted as read-only, a file
"/run/udev/tmp-ruiles--70-persistent-net.rules" is created instead. This
temporary file is supposed to be moved back into "/etc/udev/rules.d" by a
systemd service udev-finish right after the system finishes start-up chaos.
Again, if rootfs is still mounted as read-only, this move will certainly fail.
One last important thing, /run/udev is _NOT_ included in udev rules inclusion
paths, so any rules written here will not be taken into account when processing
uevents.

So, when wlan0 is probed for the first time on a device with read-only rootfs,
udev creates "/run/udev/tmp-ruiles--70-persistent-net.rules" and inserts one
rule for it. When wlan0 is disabled and re-enabled, since
"/run/udev/tmp-ruiles--70-persistent-net.rules" is not taken into account, its
NAME attribute will not be set, and udev recognize it as a new nic and tries to
write another rule for it again. However, in this time, "wlan0" has been taken
in the previously written temporary rules file, so "wlan1" is chosen instead,
and an exactly the same matching rule (except for NAME= part) is appended to
"/run/udev/tmp-ruiles--70-persistent-net.rules". When the device is again
disabled and re-enabled, "wlan2" will be assigned. And so on ....</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the QA Contact for the bug.</li>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>