From 8257730d392cf227fd3eba2915021aad6a2cc2e4 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Fri, 16 Jan 2009 21:14:13 +0100 Subject: remove name from index if the node name has changed Scott discovered that a changed rule, which renames a device node leaves the old node name around as a symlink. So drop the reference to the old name. --- udev/udev-node.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'udev') diff --git a/udev/udev-node.c b/udev/udev-node.c index 18a9d11017..74ec00b1eb 100644 --- a/udev/udev-node.c +++ b/udev/udev-node.c @@ -384,21 +384,25 @@ void udev_node_update_old_links(struct udev_device *dev, struct udev_device *dev if (found) continue; - info(udev, "update old symlink '%s' no longer belonging to '%s'\n", name, udev_device_get_devpath(dev)); + info(udev, "update old name, '%s' no longer belonging to '%s'\n", + name, udev_device_get_devpath(dev)); name_index(udev, udev_device_get_devpath(dev), name, 0); update_link(dev, name); } /* * if the node name has changed, delete the node, - * and possibly restore a symlink of another device + * and possibly restore a symlink of a different device */ devnode_old = udev_device_get_devnode(dev_old); if (devnode_old != NULL) { const char *devnode = udev_device_get_devnode(dev); - if (devnode != NULL && strcmp(devnode_old, devnode) != 0) + if (devnode != NULL && strcmp(devnode_old, devnode) != 0) { + info(udev, "node has changed from '%s' to '%s'\n", devnode_old, devnode); + name_index(udev, udev_device_get_devpath(dev), devnode_old, 0); update_link(dev, devnode_old); + } } } -- cgit v1.2.3-54-g00ecf