]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
findmnt: make udev usage more robust
authorKarel Zak <kzak@redhat.com>
Mon, 1 Jul 2013 13:59:16 +0000 (15:59 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 1 Jul 2013 13:59:16 +0000 (15:59 +0200)
 $ findmnt -rn --target /home/kzak/.bashrc -o UUID

uses libudev to ask for UUID, unfortunately /home/kzak is DM device
and libudev expects sysfs-like names (e.g. dm-0). We have to convert
the name to kernel devname.

Signed-off-by: Karel Zak <kzak@redhat.com>
misc-utils/findmnt.c

index b6dbbf5d3cd823150db73a845e2c5fa39279ecc0..85d8b6392ecbf6c7afbee9c53d92b352f4b85b9b 100644 (file)
@@ -368,17 +368,24 @@ static char *get_tag_from_udev(const char *devname, int col)
 {
        struct udev_device *dev;
        const char *data = NULL;
-       char *res = NULL;
+       char *res = NULL, *path;
 
        if (!udev)
                udev = udev_new();
        if (!udev)
                return NULL;
 
+       /* libudev don't like /dev/mapper/ symlinks */
+       path = realpath(devname, NULL);
+       if (path)
+               devname = path;
+
        if (strncmp(devname, "/dev/", 5) == 0)
                devname += 5;
 
        dev = udev_device_new_from_subsystem_sysname(udev, "block", devname);
+       free(path);
+
        if (!dev)
                return NULL;