linepos = line;
if (get_key(&linepos, &variable, &value) == 0) {
dbg("import '%s=%s'", variable, value);
- name_list_key_add(&udev->env_list, variable, value);
+
+ /* handle device, renamed by external tool, returning new path */
+ if (strcmp(variable, "DEVPATH") == 0) {
+ info("updating devpath from '%s' to '%s'", udev->dev->devpath, value);
+ sysfs_device_set_values(udev->dev, value, NULL, NULL);
+ } else
+ name_list_key_add(&udev->env_list, variable, value);
setenv(variable, value, 1);
}
}
struct name_entry *name_loop;
dbg("found parent '%s', get the node name", dev_parent->devpath);
- udev_parent = udev_device_init();
+ udev_parent = udev_device_init(NULL);
if (udev_parent == NULL)
return -1;
/* import the udev_db of the parent */
info("file '%s' appeared after %i loops", filepath, (timeout * WAIT_LOOP_PER_SECOND) - loop-1);
return 0;
}
- /* make sure the device does not have disappeared in the meantime */
+ /* make sure, the device did not disappear in the meantime */
if (stat(devicepath, &stats) != 0) {
info("device disappeared while waiting for '%s'", filepath);
return -2;
struct udevice *udev_parent;
dbg("found parent '%s', get the node name", dev_parent->devpath);
- udev_parent = udev_device_init();
+ udev_parent = udev_device_init(NULL);
if (udev_parent != NULL) {
/* lookup the name in the udev_db with the DEVPATH of the parent */
if (udev_db_get_device(udev_parent, dev_parent->devpath) == 0) {
udev->ignore_remove = 1;
dbg("remove event should be ignored");
}
+ if (rule->link_priority) {
+ udev->link_priority = rule->link_priority;
+ info("link_priority=%i", udev->link_priority);
+ }
/* apply all_partitions option only at a main block device */
if (rule->partitions &&
strcmp(udev->dev->subsystem, "block") == 0 && udev->dev->kernel_number[0] == '\0') {