From 4ba4893b3634ff1f6bca688641283cee38989654 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Mon, 1 Jul 2013 15:59:16 +0200 Subject: [PATCH] findmnt: make udev usage more robust $ 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 --- misc-utils/findmnt.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/misc-utils/findmnt.c b/misc-utils/findmnt.c index b6dbbf5d3c..85d8b6392e 100644 --- a/misc-utils/findmnt.c +++ b/misc-utils/findmnt.c @@ -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; -- 2.47.2