chiark / gitweb /
volume_id: LVM - add uuid
[elogind.git] / udev_db.c
index 00d68d6d13f125badb08b8a78eca4de802ee309e..29aa0316d28bf1e88d671a1b1a3a408860d5b1b5 100644 (file)
--- a/udev_db.c
+++ b/udev_db.c
@@ -117,6 +117,16 @@ out:
        return rc;
 }
 
+int udev_db_rename(const char *devpath_old, const char *devpath)
+{
+       char filename[PATH_SIZE];
+       char filename_old[PATH_SIZE];
+
+       devpath_to_db_path(devpath_old, filename_old, sizeof(filename_old));
+       devpath_to_db_path(devpath, filename, sizeof(filename));
+       return rename(filename_old, filename);
+}
+
 int udev_db_add_device(struct udevice *udev)
 {
        char filename[PATH_SIZE];
@@ -157,9 +167,9 @@ int udev_db_add_device(struct udevice *udev)
                        name_index(udev->dev->devpath, name_loop->name, 1);
                }
                fprintf(f, "M:%u:%u\n", major(udev->devt), minor(udev->devt));
-               if (udev->link_priority)
+               if (udev->link_priority != 0)
                        fprintf(f, "L:%u\n", udev->link_priority);
-               if (udev->partitions)
+               if (udev->partitions != 0)
                        fprintf(f, "A:%u\n", udev->partitions);
                if (udev->ignore_remove)
                        fprintf(f, "R:%u\n", udev->ignore_remove);
@@ -186,7 +196,7 @@ int udev_db_get_device(struct udevice *udev, const char *devpath)
        size_t cur;
        size_t count;
 
-       strlcpy(udev->dev->devpath, devpath, sizeof(udev->dev->devpath));
+       sysfs_device_set_values(udev->dev, devpath, NULL, NULL);
        devpath_to_db_path(devpath, filename, sizeof(filename));
 
        if (lstat(filename, &stats) != 0) {