<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED --- - udev makes network interfaces available before it has renamed them"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=56929#c7">Comment # 7</a>
              on <a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED --- - udev makes network interfaces available before it has renamed them"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=56929">bug 56929</a>
              from <span class="vcard"><a class="email" href="mailto:dsd@laptop.org" title="Daniel Drake <dsd@laptop.org>"> <span class="fn">Daniel Drake</span></a>
</span></b>
        <pre>I've investigated further:

On startup, NetworkManager starts listening for uevents via libgudev (to be
informed of new network devices that get added later), and then enumerates all
existing network devices:

    devices = g_udev_client_query_by_subsystem (priv->client, "net");
    for (iter = devices; iter; iter = g_list_next (iter)) {
        net_add (self, G_UDEV_DEVICE (iter->data));

This is hitting a race. libudev's enumeration works directly with /sys, without
consulting udevd. In this case, udevd has not finished reading/applying all the
relevant rules to the device, but libudev finds it anyway, and hands it over to
NetworkManager.

I added some debug messages in NM and udevd and can confirm that the following
is happening:

1. system boots
2. Network device is detected
3. NetworkManager starts, queries available network devices, finds the device
4. NetworkManager brings the network device up
5. udevd starts processing of the network device
6. udevd tries to rename the network device, fails, its in use
7. udevd announces presence of the network device to libudev listeners

I can't imagine this is the only race caused by the fact that libudev's
enumeration doesn't seem to synchronise with udevd before presenting devices.
What options do we have to solve this?</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>