summaryrefslogtreecommitdiff
path: root/lib/blkid/devname.c
diff options
context:
space:
mode:
authorKarel Zak <kzak@redhat.com>2009-04-27 15:00:57 +0200
committerTheodore Ts'o <tytso@mit.edu>2009-05-02 22:33:13 -0400
commit4271e23942bdc60e1fa6c0b26bc666a94a8b3e1d (patch)
treec1c8e94df5476de5c51c9e9857259bac4c3b8f24 /lib/blkid/devname.c
parentae33f578c01b7171e556a75158baf7b713bfe68f (diff)
downloade2fsprogs-4271e23942bdc60e1fa6c0b26bc666a94a8b3e1d.tar.gz
blkid: use /dev/mapper/<name> rather than /dev/dm-<N>
The libblkid (since v1.41.1) returns private device-mapper names (e.g. /dev/dm-0). It's because the probe_one() function scans /dev before /dev/mapper. brw-rw---- 1 root disk 253, 0 2009-04-27 13:41 /dev/dm-0 brw-rw---- 1 root disk 253, 0 2009-04-27 13:41 /dev/mapper/TestVolGroup-TestLogVolume Old version: # blkid -t LABEL="TEST-LABEL" -o device /dev/dm-0 Fixed version: # blkid -t LABEL="TEST-LABEL" -o device /dev/mapper/TestVolGroup-TestLogVolume Addresses-Red-Hat-Bug: #497259 Signed-off-by: Karel Zak <kzak@redhat.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'lib/blkid/devname.c')
-rw-r--r--lib/blkid/devname.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/blkid/devname.c b/lib/blkid/devname.c
index 8553e9f3..ec19a2e8 100644
--- a/lib/blkid/devname.c
+++ b/lib/blkid/devname.c
@@ -179,6 +179,15 @@ static void probe_one(blkid_cache cache, const char *ptname,
if (dev && dev->bid_devno == devno)
goto set_pri;
+ /* Try to translate private device-mapper dm-<N> names
+ * to standard /dev/mapper/<name>.
+ */
+ if (!strncmp(ptname, "dm-", 3) && isdigit(ptname[3])) {
+ blkid__scan_dir("/dev/mapper", devno, 0, &devname);
+ if (devname)
+ goto get_dev;
+ }
+
/*
* Take a quick look at /dev/ptname for the device number. We check
* all of the likely device directories. If we don't find it, or if
@@ -197,7 +206,7 @@ static void probe_one(blkid_cache cache, const char *ptname,
if (stat(device, &st) == 0 && S_ISBLK(st.st_mode) &&
st.st_rdev == devno) {
devname = blkid_strdup(device);
- break;
+ goto get_dev;
}
}
/* Do a short-cut scan of /dev/mapper first */
@@ -208,9 +217,9 @@ static void probe_one(blkid_cache cache, const char *ptname,
if (!devname)
return;
}
+get_dev:
dev = blkid_get_dev(cache, devname, BLKID_DEV_NORMAL);
free(devname);
-
set_pri:
if (dev) {
if (pri)