summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorKarel Zak2018-06-19 12:02:52 +0200
committerKarel Zak2018-06-21 13:19:28 +0200
commit5a89aa99a7f13722102fa8730f4647da9138134d (patch)
tree07587e5e96643cb9f1f6bb37a655230c07da1e36 /lib
parentlsblk: add --sysroot (diff)
downloadkernel-qcow2-util-linux-5a89aa99a7f13722102fa8730f4647da9138134d.tar.gz
kernel-qcow2-util-linux-5a89aa99a7f13722102fa8730f4647da9138134d.tar.xz
kernel-qcow2-util-linux-5a89aa99a7f13722102fa8730f4647da9138134d.zip
lsblk: use prefix for DM name
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/canonicalize.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/canonicalize.c b/lib/canonicalize.c
index ef3342b12..f3a2a3af2 100644
--- a/lib/canonicalize.c
+++ b/lib/canonicalize.c
@@ -24,7 +24,7 @@
* Since 2.6.29 (patch 784aae735d9b0bba3f8b9faef4c8b30df3bf0128) kernel sysfs
* provides the real DM device names in /sys/block/<ptname>/dm/name
*/
-char *canonicalize_dm_name(const char *ptname)
+char *__canonicalize_dm_name(const char *prefix, const char *ptname)
{
FILE *f;
size_t sz;
@@ -33,7 +33,10 @@ char *canonicalize_dm_name(const char *ptname)
if (!ptname || !*ptname)
return NULL;
- snprintf(path, sizeof(path), "/sys/block/%s/dm/name", ptname);
+ if (!prefix)
+ prefix = "";
+
+ snprintf(path, sizeof(path), "%s/sys/block/%s/dm/name", prefix, ptname);
if (!(f = fopen(path, "r" UL_CLOEXECSTR)))
return NULL;
@@ -42,13 +45,18 @@ char *canonicalize_dm_name(const char *ptname)
name[sz - 1] = '\0';
snprintf(path, sizeof(path), _PATH_DEV_MAPPER "/%s", name);
- if (access(path, F_OK) == 0)
+ if (prefix || access(path, F_OK) == 0)
res = strdup(path);
}
fclose(f);
return res;
}
+char *canonicalize_dm_name(const char *ptname)
+{
+ return __canonicalize_dm_name(NULL, ptname);
+}
+
static int is_dm_devname(char *canonical, char **name)
{
struct stat sb;