summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2012-06-13 20:36:40 +0100
committerRichard W.M. Jones <rjones@redhat.com>2012-06-13 23:07:26 +0100
commit46ed232dc2ff2f7dff91cd93a13d7ce6f2cec504 (patch)
tree7ac4657b5067f50597aa54e2ee4d74d2db6c3054 /src
parent998ebc333dbfe40c5953e36fb42f9610727a7532 (diff)
downloadlibguestfs-46ed232dc2ff2f7dff91cd93a13d7ce6f2cec504.tar.gz
libguestfs-46ed232dc2ff2f7dff91cd93a13d7ce6f2cec504.tar.xz
libguestfs-46ed232dc2ff2f7dff91cd93a13d7ce6f2cec504.zip
New API: guestfs_canonical_device_name.
This API makes device names canonical, eg. /dev/vda1 -> /dev/sda1.
Diffstat (limited to 'src')
-rw-r--r--src/guestfs.c23
-rw-r--r--src/guestfs.pod2
2 files changed, 24 insertions, 1 deletions
diff --git a/src/guestfs.c b/src/guestfs.c
index 561fab4f..32bcbeff 100644
--- a/src/guestfs.c
+++ b/src/guestfs.c
@@ -996,3 +996,26 @@ guestfs___free_drives (struct drive **drives)
i = next;
}
}
+
+char *
+guestfs__canonical_device_name (guestfs_h *g, const char *device)
+{
+ char *ret;
+
+ if (STRPREFIX (device, "/dev/hd") ||
+ STRPREFIX (device, "/dev/vd")) {
+ ret = safe_strdup (g, device);
+ ret[5] = 's';
+ }
+ else if (STRPREFIX (device, "/dev/mapper/") ||
+ STRPREFIX (device, "/dev/dm-")) {
+ /* XXX hide errors */
+ ret = guestfs_lvm_canonical_lv_name (g, device);
+ if (ret == NULL)
+ ret = safe_strdup (g, device);
+ }
+ else
+ ret = safe_strdup (g, device);
+
+ return ret; /* caller frees */
+}
diff --git a/src/guestfs.pod b/src/guestfs.pod
index fd8b70ca..6959f50c 100644
--- a/src/guestfs.pod
+++ b/src/guestfs.pod
@@ -1158,7 +1158,7 @@ C</dev/hda2> transparently.
Note that this I<only> applies to parameters. The
L</guestfs_list_devices>, L</guestfs_list_partitions> and similar calls
return the true names of the devices and partitions as known to the
-appliance.
+appliance, but see L</guestfs_canonical_device_name>.
=head3 ALGORITHM FOR BLOCK DEVICE NAME TRANSLATION