$ 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>
{
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;