chiark / gitweb /
Docs: udev.xml: Offset daemon name with commas
[elogind.git] / udev / udev-event.c
index 02a1767b1f8d7bd78c5d66af37344d3f66bc571e..63a8b3aa830d9db833614a7ffa678ec21aa5de18 100644 (file)
@@ -454,7 +454,7 @@ static void rename_netif_kernel_log(struct ifreq ifr)
                return;
        }
 
-       fprintf(f, "<6>udev[%u]: renamed network interface %s to %s\n",
+       fprintf(f, "<30>udev[%u]: renamed network interface %s to %s\n",
                getpid(), ifr.ifr_name, ifr.ifr_newname);
        fclose(f);
 }
@@ -539,7 +539,7 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules)
                return -1;
 
        if (strcmp(udev_device_get_action(dev), "remove") == 0) {
-               udev_device_read_db(dev);
+               udev_device_read_db(dev, NULL);
                udev_device_delete_db(dev);
                udev_device_tag_index(dev, NULL, false);
 
@@ -553,7 +553,7 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules)
        } else {
                event->dev_db = udev_device_new_from_syspath(event->udev, udev_device_get_syspath(dev));
                if (event->dev_db != NULL) {
-                       udev_device_read_db(event->dev_db);
+                       udev_device_read_db(event->dev_db, NULL);
                        udev_device_set_info_loaded(event->dev_db);
 
                        /* disable watch during event processing */
@@ -631,12 +631,7 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules)
                        /* set device node name */
                        util_strscpyl(filename, sizeof(filename), udev_get_dev_path(event->udev), "/", event->name, NULL);
                        udev_device_set_devnode(dev, filename);
-               }
 
-               udev_device_update_db(dev);
-               udev_device_tag_index(dev, event->dev_db, true);
-
-               if (major(udev_device_get_devnum(dev)) != 0) {
                        /* remove/update possible left-over symlinks from old database entry */
                        if (event->dev_db != NULL)
                                udev_node_update_old_links(dev, event->dev_db);
@@ -648,6 +643,17 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules)
                        err = udev_node_add(dev, event->mode, event->uid, event->gid);
                }
 
+               /* preserve old, or get new initialization timestamp */
+               if (event->dev_db != NULL && udev_device_get_usec_initialized(event->dev_db) > 0)
+                       udev_device_set_usec_initialized(event->dev, udev_device_get_usec_initialized(event->dev_db));
+               else
+                       udev_device_set_usec_initialized(event->dev, usec_monotonic());
+
+               /* (re)write database file */
+               udev_device_update_db(dev);
+               udev_device_tag_index(dev, event->dev_db, true);
+               udev_device_set_is_initialized(dev);
+
                udev_device_unref(event->dev_db);
                event->dev_db = NULL;
        }