diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2012-06-13 20:36:40 +0100 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2012-06-13 23:07:26 +0100 |
commit | 46ed232dc2ff2f7dff91cd93a13d7ce6f2cec504 (patch) | |
tree | 7ac4657b5067f50597aa54e2ee4d74d2db6c3054 /src | |
parent | 998ebc333dbfe40c5953e36fb42f9610727a7532 (diff) | |
download | libguestfs-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.c | 23 | ||||
-rw-r--r-- | src/guestfs.pod | 2 |
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 |